4 Commits
Author SHA1 Message Date
mitchell b2813d62a3 Namespace the p001 steps 2026-04-09 13:36:08 -05:00
mitchell 202b926eb7 starcode updates 2025-08-21 20:15:29 -05:00
mitchell 8bddceca66 update starcodes 2025-08-21 20:03:16 -05:00
mitchell cfc307ee72 rev 2.0 updates 2025-08-21 19:32:27 -05:00
57 changed files with 521 additions and 270 deletions
+2 -1
View File
@@ -11,11 +11,12 @@ set(SOURCES
"i2c_lcd_pcf8574.c" "i2c_lcd_pcf8574.c"
"i2c.cpp" "i2c.cpp"
"leds.cpp" "leds.cpp"
"perh.cpp"
"power.cpp" "power.cpp"
"sd.cpp" "sd.cpp"
"speaker.cpp" "speaker.cpp"
"sseg.cpp" "sseg.cpp"
"star_code.cpp" "starcode.cpp"
"state_tracking.cpp" "state_tracking.cpp"
"tft.cpp" "tft.cpp"
"wires.cpp" "wires.cpp"
@@ -711,9 +711,9 @@ bool BQ27441::writeExtendedData(uint8_t classID, uint8_t offset, uint8_t * data,
int16_t BQ27441::i2cReadBytes(uint8_t subAddress, uint8_t * dest, uint8_t count) int16_t BQ27441::i2cReadBytes(uint8_t subAddress, uint8_t * dest, uint8_t count)
{ {
int16_t timeout = BQ72441_I2C_TIMEOUT; int16_t timeout = BQ72441_I2C_TIMEOUT;
xSemaphoreTake(i2c0_mutex, portMAX_DELAY); xSemaphoreTake(main_i2c_mutex, portMAX_DELAY);
i2c_master_write_read_device(BQ72441_I2C_NUM, _deviceAddress, &subAddress, 1, dest, count, timeout); i2c_master_write_read_device(BQ72441_I2C_NUM, _deviceAddress, &subAddress, 1, dest, count, timeout);
xSemaphoreGive(i2c0_mutex); xSemaphoreGive(main_i2c_mutex);
return timeout; return timeout;
} }
+1 -1
View File
@@ -10,7 +10,7 @@
#include "sd.h" #include "sd.h"
#include "speaker.h" #include "speaker.h"
#include "sseg.h" #include "sseg.h"
#include "star_code.h" #include "starcode.h"
#include "state_tracking.h" #include "state_tracking.h"
#include "tft.h" #include "tft.h"
#include "wires.h" #include "wires.h"
+9 -3
View File
@@ -1,7 +1,7 @@
#include "bottom_half.h" #include "bottom_half.h"
#include <esp_log.h> #include <esp_log.h>
#include "state_tracking.h" #include "state_tracking.h"
#include "star_code.h" #include "starcode.h"
static const char *TAG = "bottom_half"; static const char *TAG = "bottom_half";
@@ -46,8 +46,14 @@ static bool replay_handler(const char* event, char* arg) {
void init_bottom_half() { void init_bottom_half() {
ESP_LOGI(TAG, "Initializing bottom half..."); ESP_LOGI(TAG, "Initializing bottom half...");
ESP_ERROR_CHECK(gpio_set_direction(BOTTOM_PIN_INTERUPT, GPIO_MODE_INPUT)); gpio_config_t int_conf = {
ESP_ERROR_CHECK(gpio_set_pull_mode(BOTTOM_PIN_INTERUPT, GPIO_PULLUP_ONLY)); .pin_bit_mask = 1ULL << BOTTOM_PIN_INTERUPT,
.mode = GPIO_MODE_INPUT,
.pull_up_en = GPIO_PULLUP_ENABLE,
.pull_down_en = GPIO_PULLDOWN_DISABLE,
.intr_type = GPIO_INTR_DISABLE,
};
ESP_ERROR_CHECK(gpio_config(&int_conf));
// TODO: do interupt stuff. // TODO: do interupt stuff.
// ESP_ERROR_CHECK(gpio_intr_enable(BOTTOM_PIN_INTERUPT)); // ESP_ERROR_CHECK(gpio_intr_enable(BOTTOM_PIN_INTERUPT));
+13 -13
View File
@@ -6,7 +6,7 @@
#define BOTTOM_I2C_NUM I2C_NUM_0 #define BOTTOM_I2C_NUM I2C_NUM_0
#define BOTTOM_I2C_ADDR 126 #define BOTTOM_I2C_ADDR 126
#define BOTTOM_PIN_INTERUPT GPIO_NUM_0 #define BOTTOM_PIN_INTERUPT GPIO_NUM_13
#define DELTA_BIT_KP 0 #define DELTA_BIT_KP 0
#define DELTA_BIT_BUTTON_SWITCH 1 #define DELTA_BIT_BUTTON_SWITCH 1
@@ -14,22 +14,22 @@
/// @brief An enum for the possible keypad buttons. /// @brief An enum for the possible keypad buttons.
typedef enum { typedef enum {
k1 = 0, kd = 0,
k4 = 1, pound = 1,
k7 = 2, k0 = 2,
star = 3, star = 3,
k2 = 4, kc = 4,
k5 = 5, k9 = 5,
k8 = 6, k8 = 6,
k0 = 7, k7 = 7,
k3 = 8, kb = 8,
k6 = 9, k6 = 9,
k9 = 10, k5 = 10,
pound = 11, k4 = 11,
ka = 12, ka = 12,
kb = 13, k3 = 13,
kc = 14, k2 = 14,
kd = 15, k1 = 15,
} KeypadKey; } KeypadKey;
/// @brief An enum for the possible buttons. /// @brief An enum for the possible buttons.
+2
View File
@@ -5,6 +5,8 @@
#include "state_tracking.h" #include "state_tracking.h"
#include <cstring> #include <cstring>
#include "power.h" #include "power.h"
#include "starcode.h"
#include "game_info.h"
i2c_lcd_pcf8574_handle_t lcd; i2c_lcd_pcf8574_handle_t lcd;
-9
View File
@@ -66,15 +66,6 @@ bool lcd_header_enabled();
/// @brief Prints the header in the LCD. /// @brief Prints the header in the LCD.
void lcd_print_header(); void lcd_print_header();
/// @brief Prints the star code section of the LCD header.
void lcd_print_header_star_code();
/// @brief Prints the step section of the LCD header.
void lcd_print_header_step();
/// @brief Prints the battery section of the LCD header.
void lcd_print_header_bat();
/// @brief Prints the splash screen for the BLK_BOX. /// @brief Prints the splash screen for the BLK_BOX.
void lcd_do_splash(); void lcd_do_splash();
+6 -8
View File
@@ -1,23 +1,21 @@
#include "game_info.h" #include "game_info.h"
#include "starcode.h"
#include <stdio.h> #include <stdio.h>
#include "char_lcd.h" #include "char_lcd.h"
// static char game_state[GAME_STATE_MAX_LEN+1] = " "; static char game_state[GAME_STATE_MAX_LEN+2] = " MENU ";
static char game_state[GAME_STATE_MAX_LEN+1] = "MENU ";
void set_game_state(char* new_state) { void set_game_state(const char* new_state) {
snprintf(game_state, sizeof(game_state), "%-5s", new_state); snprintf(game_state, sizeof(game_state), " %-5s", new_state);
} }
void reset_game_state() { void reset_game_state() {
for (int i = 0; i < GAME_STATE_MAX_LEN; i++) { set_game_state("");
game_state[i] = '\0';
}
game_state[GAME_STATE_MAX_LEN] = '\0';
} }
void lcd_print_header_step() { void lcd_print_header_step() {
if (!lcd_header_enabled()) return; if (!lcd_header_enabled()) return;
if (lcd_starcode_displaying_result()) return;
lcd_print(10, 0, game_state); lcd_print(10, 0, game_state);
} }
+2 -2
View File
@@ -6,12 +6,12 @@
/// @brief Sets the game state, used for the header. /// @brief Sets the game state, used for the header.
/// ///
/// Must be <= 5 characters /// Must be <= 5 characters
void set_game_state(char* new_state); void set_game_state(const char* new_state);
/// @brief Resets the game state to be blank. /// @brief Resets the game state to be blank.
void reset_game_state(); void reset_game_state();
/// @brief Prints the game state section of the header to the char_lcd. (row 0, columns 10-14) /// @brief Prints the game state section of the header to the char_lcd. (row 0, columns 11-15)
void lcd_print_header_step(); void lcd_print_header_step();
#endif /* GAME_INFO_H */ #endif /* GAME_INFO_H */
+8 -7
View File
@@ -5,30 +5,31 @@
static const char *TAG = "i2c"; static const char *TAG = "i2c";
SemaphoreHandle_t i2c0_mutex; SemaphoreHandle_t main_i2c_mutex;
void init_i2c() { void init_i2c() {
ESP_LOGI(TAG, "Initializing i2c..."); ESP_LOGI(TAG, "Initializing i2c...");
i2c_config_t conf = { i2c_config_t conf = {
.mode = I2C_MODE_MASTER, .mode = I2C_MODE_MASTER,
.sda_io_num = GPIO_NUM_5, .sda_io_num = PIN_I2C_SDA,
.scl_io_num = GPIO_NUM_6, .scl_io_num = PIN_I2C_SCL,
.sda_pullup_en = GPIO_PULLUP_DISABLE, .sda_pullup_en = GPIO_PULLUP_DISABLE,
.scl_pullup_en = GPIO_PULLUP_DISABLE, .scl_pullup_en = GPIO_PULLUP_DISABLE,
// .sda_pullup_en = GPIO_PULLUP_ENABLE, // .sda_pullup_en = GPIO_PULLUP_ENABLE,
// .scl_pullup_en = GPIO_PULLUP_ENABLE, // .scl_pullup_en = GPIO_PULLUP_ENABLE,
.master = { .master = {
// TODO: 400k?
.clk_speed = 100*1000, .clk_speed = 100*1000,
}, },
.clk_flags = I2C_SCLK_SRC_FLAG_FOR_NOMAL .clk_flags = I2C_SCLK_SRC_FLAG_FOR_NOMAL
}; };
ESP_ERROR_CHECK(i2c_param_config(I2C_NUM_0, &conf)); ESP_ERROR_CHECK(i2c_param_config(MAIN_I2C_BUS_NUM, &conf));
ESP_ERROR_CHECK(i2c_driver_install(I2C_NUM_0, conf.mode, 0, 0, 0)); ESP_ERROR_CHECK(i2c_driver_install(MAIN_I2C_BUS_NUM, conf.mode, 0, 0, 0));
i2c0_mutex = xSemaphoreCreateMutex(); main_i2c_mutex = xSemaphoreCreateMutex();
assert(i2c0_mutex != NULL); assert(main_i2c_mutex != NULL);
ESP_LOGI(TAG, "i2c initialized!"); ESP_LOGI(TAG, "i2c initialized!");
} }
+6 -1
View File
@@ -4,8 +4,13 @@
#include "freertos/FreeRTOS.h" #include "freertos/FreeRTOS.h"
#include "freertos/semphr.h" #include "freertos/semphr.h"
#define MAIN_I2C_BUS_NUM I2C_NUM_0
#define PIN_I2C_SDA GPIO_NUM_7
#define PIN_I2C_SCL GPIO_NUM_15
/// The mutex for accessing `I2C_NUM_0`. /// The mutex for accessing `I2C_NUM_0`.
extern SemaphoreHandle_t i2c0_mutex; extern SemaphoreHandle_t main_i2c_mutex;
/// @brief Initializes `I2C_NUM_0`. /// @brief Initializes `I2C_NUM_0`.
/// ///
+6 -6
View File
@@ -59,7 +59,7 @@ void lcd_begin(i2c_lcd_pcf8574_handle_t* lcd, uint8_t cols, uint8_t rows) {
lcd->entrymode = 0x02; lcd->entrymode = 0x02;
// The following are the reset sequence: Please see "Initialization instruction in the PCF8574 datasheet." // The following are the reset sequence: Please see "Initialization instruction in the PCF8574 datasheet."
xSemaphoreTake(i2c0_mutex, portMAX_DELAY); xSemaphoreTake(main_i2c_mutex, portMAX_DELAY);
i2c_cmd_handle_t cmd = i2c_cmd_link_create(); i2c_cmd_handle_t cmd = i2c_cmd_link_create();
i2c_master_start(cmd); i2c_master_start(cmd);
// We left-shift the device addres and add the read/write command // We left-shift the device addres and add the read/write command
@@ -97,7 +97,7 @@ void lcd_begin(i2c_lcd_pcf8574_handle_t* lcd, uint8_t cols, uint8_t rows) {
i2c_master_stop(cmd); i2c_master_stop(cmd);
i2c_master_cmd_begin(lcd->i2c_port, cmd, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); i2c_master_cmd_begin(lcd->i2c_port, cmd, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS);
i2c_cmd_link_delete(cmd); i2c_cmd_link_delete(cmd);
xSemaphoreGive(i2c0_mutex); xSemaphoreGive(main_i2c_mutex);
// Instruction: function set = 0x20 // Instruction: function set = 0x20
lcd_send(lcd, 0x20 | (rows > 1 ? 0x08 : 0x00), false); lcd_send(lcd, 0x20 | (rows > 1 ? 0x08 : 0x00), false);
@@ -298,7 +298,7 @@ void lcd_print_number(i2c_lcd_pcf8574_handle_t* lcd, uint8_t col, uint8_t row, u
static void lcd_send(i2c_lcd_pcf8574_handle_t* lcd, uint8_t value, bool is_data) { static void lcd_send(i2c_lcd_pcf8574_handle_t* lcd, uint8_t value, bool is_data) {
xSemaphoreTake(i2c0_mutex, portMAX_DELAY); xSemaphoreTake(main_i2c_mutex, portMAX_DELAY);
i2c_cmd_handle_t cmd = i2c_cmd_link_create(); i2c_cmd_handle_t cmd = i2c_cmd_link_create();
i2c_master_start(cmd); i2c_master_start(cmd);
i2c_master_write_byte(cmd, (lcd->i2c_addr << 1) | I2C_MASTER_WRITE, true); i2c_master_write_byte(cmd, (lcd->i2c_addr << 1) | I2C_MASTER_WRITE, true);
@@ -307,7 +307,7 @@ static void lcd_send(i2c_lcd_pcf8574_handle_t* lcd, uint8_t value, bool is_data)
i2c_master_stop(cmd); i2c_master_stop(cmd);
esp_err_t ret = i2c_master_cmd_begin(lcd->i2c_port, cmd, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); esp_err_t ret = i2c_master_cmd_begin(lcd->i2c_port, cmd, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS);
i2c_cmd_link_delete(cmd); i2c_cmd_link_delete(cmd);
xSemaphoreGive(i2c0_mutex); xSemaphoreGive(main_i2c_mutex);
if (ret != ESP_OK) { if (ret != ESP_OK) {
ESP_LOGE(TAG, "Failed to send data to LCD: %s", esp_err_to_name(ret)); ESP_LOGE(TAG, "Failed to send data to LCD: %s", esp_err_to_name(ret));
@@ -346,7 +346,7 @@ static void lcd_write_i2c(i2c_lcd_pcf8574_handle_t* lcd, uint8_t data, bool is_d
data |= lcd->backlight_mask; data |= lcd->backlight_mask;
} }
xSemaphoreTake(i2c0_mutex, portMAX_DELAY); xSemaphoreTake(main_i2c_mutex, portMAX_DELAY);
i2c_cmd_handle_t cmd = i2c_cmd_link_create(); i2c_cmd_handle_t cmd = i2c_cmd_link_create();
i2c_master_start(cmd); i2c_master_start(cmd);
i2c_master_write_byte(cmd, (lcd->i2c_addr << 1) | I2C_MASTER_WRITE, true); i2c_master_write_byte(cmd, (lcd->i2c_addr << 1) | I2C_MASTER_WRITE, true);
@@ -354,7 +354,7 @@ static void lcd_write_i2c(i2c_lcd_pcf8574_handle_t* lcd, uint8_t data, bool is_d
i2c_master_stop(cmd); i2c_master_stop(cmd);
esp_err_t ret = i2c_master_cmd_begin(lcd->i2c_port, cmd, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); esp_err_t ret = i2c_master_cmd_begin(lcd->i2c_port, cmd, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS);
i2c_cmd_link_delete(cmd); i2c_cmd_link_delete(cmd);
xSemaphoreGive(i2c0_mutex); xSemaphoreGive(main_i2c_mutex);
if (ret != ESP_OK) { if (ret != ESP_OK) {
ESP_LOGE(TAG, "Failed to write to LCD: %s", esp_err_to_name(ret)); ESP_LOGE(TAG, "Failed to write to LCD: %s", esp_err_to_name(ret));
+1 -1
View File
@@ -4,7 +4,7 @@
#include <stdint.h> #include <stdint.h>
#define LED_COUNT 21 #define LED_COUNT 21
#define NEOPIXEL_PIN GPIO_NUM_7 #define NEOPIXEL_PIN GPIO_NUM_0
// 10MHz resolution, 1 tick = 0.1us (led strip needs a high resolution) // 10MHz resolution, 1 tick = 0.1us (led strip needs a high resolution)
#define LED_STRIP_RMT_RES_HZ (10 * 1000 * 1000) #define LED_STRIP_RMT_RES_HZ (10 * 1000 * 1000)
+2
View File
@@ -0,0 +1,2 @@
#include "perh.h"
+12
View File
@@ -0,0 +1,12 @@
#ifndef PERH_H
#define PERH_H
#include "driver/gpio.h"
#define PIN_PERH0 GPIO_NUM_6
#define PIN_PERH1 GPIO_NUM_5
#define PIN_PERH2 GPIO_NUM_4
#define PIN_PERH3 GPIO_NUM_2
#define PIN_PERH4 GPIO_NUM_1
#endif /* PERH_H */
+12 -7
View File
@@ -1,5 +1,6 @@
#include "power.h" #include "power.h"
#include "char_lcd.h" #include "char_lcd.h"
#include "starcode.h"
#include <esp_log.h> #include <esp_log.h>
static const char* TAG = "power"; static const char* TAG = "power";
@@ -56,17 +57,21 @@ uint16_t get_bat_voltage() {
void lcd_print_header_bat() { void lcd_print_header_bat() {
if (!lcd_header_enabled()) return; if (!lcd_header_enabled()) return;
if (lcd_starcode_displaying_result()) return;
uint8_t soc = lipo.soc(); uint8_t soc = lipo.soc();
char buf[5]; uint8_t current = lipo.current();
if (soc < 5) { char buf[6];
sprintf(buf, "LOW "); if (soc < 5 && current <= 0) {
snprintf(buf, sizeof(buf), " LOW");
} else if (soc == 100) {
snprintf(buf, sizeof(buf), " 100");
} else { } else {
snprintf(buf, sizeof(buf), "%3d%%", soc); if (current > 0) {
snprintf(buf, sizeof(buf), " %2d+", soc);
} else {
snprintf(buf, sizeof(buf), " %2d%%", soc);
} }
if (lipo.current() > 0) {
buf[3] = '+';
} }
lcd_print(16, 0, buf); lcd_print(16, 0, buf);
+1 -1
View File
@@ -14,7 +14,7 @@ void init_power_board();
/// @return battery voltage in mV. /// @return battery voltage in mV.
uint16_t get_bat_voltage(); uint16_t get_bat_voltage();
/// @brief Prints the battery section of the header to the char_lcd. (row 0, columns 16-19) /// @brief Prints the battery section of the header to the char_lcd. (row 0, columns 17-19)
void lcd_print_header_bat(); void lcd_print_header_bat();
#endif /* POWER_H */ #endif /* POWER_H */
+6 -6
View File
@@ -12,12 +12,12 @@
extern sdmmc_card_t *card; extern sdmmc_card_t *card;
#define SD_PIN_CLK GPIO_NUM_48 #define SD_PIN_CLK GPIO_NUM_39
#define SD_PIN_CMD GPIO_NUM_45 #define SD_PIN_CMD GPIO_NUM_40
#define SD_PIN_D0 GPIO_NUM_47 #define SD_PIN_D0 GPIO_NUM_38
#define SD_PIN_D1 GPIO_NUM_21 #define SD_PIN_D1 GPIO_NUM_45
#define SD_PIN_D2 GPIO_NUM_39 #define SD_PIN_D2 GPIO_NUM_42
#define SD_PIN_D3 GPIO_NUM_38 #define SD_PIN_D3 GPIO_NUM_41
/// @brief Initializes the SD card /// @brief Initializes the SD card
/// ///
+2 -2
View File
@@ -15,8 +15,8 @@
#include "sdkconfig.h" #include "sdkconfig.h"
#include "sd.h" #include "sd.h"
#define SPEAKER_PIN_BCLK GPIO_NUM_46 #define SPEAKER_PIN_BCLK GPIO_NUM_11
#define SPEAKER_PIN_WS GPIO_NUM_9 #define SPEAKER_PIN_WS GPIO_NUM_12
#define SPEAKER_PIN_DOUT GPIO_NUM_3 #define SPEAKER_PIN_DOUT GPIO_NUM_3
#define SAMPLE_RATE 44100 #define SAMPLE_RATE 44100
// The maximum number of clips that can be queued at one time. // The maximum number of clips that can be queued at one time.
+2 -2
View File
@@ -4,8 +4,8 @@
#include "TM1640/TM1640.h" #include "TM1640/TM1640.h"
#include <esp_log.h> #include <esp_log.h>
#define SSEG_PIN_DATA GPIO_NUM_10 #define SSEG_PIN_DATA GPIO_NUM_46
#define SSEG_PIN_CLK GPIO_NUM_11 #define SSEG_PIN_CLK GPIO_NUM_48
extern TM1640* sseg; extern TM1640* sseg;
@@ -1,4 +1,4 @@
#include "star_code.h" #include "starcode.h"
#include <vector> #include <vector>
#include <algorithm> #include <algorithm>
#include <string.h> #include <string.h>
@@ -20,8 +20,10 @@ static std::vector<StarCodeEntry> star_codes;
static const char EMPTY_STAR_CODE_HEADER[] = " "; static const char EMPTY_STAR_CODE_HEADER[] = " ";
esp_timer_handle_t starcode_delay_timer; esp_timer_handle_t starcode_delay_timer;
static volatile bool processing_starcode; /// @brief `true` if we are delaying for a starcode
static volatile bool delaying_for_starcode;
static volatile StarCodeEntry* current_starcode = nullptr; static volatile StarCodeEntry* current_starcode = nullptr;
/// @brief `true` when we are handling user input for a starcode
static volatile bool doing_starcode = false; static volatile bool doing_starcode = false;
static uint16_t starcode_waiting_on_release; static uint16_t starcode_waiting_on_release;
static char current[STARCODE_MAX_LEN + 1]; static char current[STARCODE_MAX_LEN + 1];
@@ -30,7 +32,7 @@ static size_t current_idx;
static void starcode_trigger_cb(void* arg) { static void starcode_trigger_cb(void* arg) {
(void) arg; (void) arg;
processing_starcode = false; delaying_for_starcode = false;
if (current_starcode != nullptr) { if (current_starcode != nullptr) {
if (current_starcode->triggered_sem != nullptr) if (current_starcode->triggered_sem != nullptr)
@@ -42,12 +44,12 @@ static void starcode_trigger_cb(void* arg) {
} }
// TODO: rename star code everywhere to starcode // TODO: rename star code everywhere to starcode
lcd_print_header_star_code(); lcd_print_header();
} }
void star_code_handle_keypad(uint16_t* just_pressed, uint16_t* just_released) { void star_code_handle_keypad(uint16_t* just_pressed, uint16_t* just_released) {
if ((!processing_starcode) && handling_new_starcodes && (*just_pressed & (1 << KeypadKey::star))) { if ((!delaying_for_starcode) && handling_new_starcodes && (*just_pressed & (1 << KeypadKey::star))) {
current_idx = 0; current_idx = 0;
current[current_idx] = '\0'; current[current_idx] = '\0';
doing_starcode = true; doing_starcode = true;
@@ -125,10 +127,13 @@ static bool check_code_match(const char* triggered, const char* expected) {
} }
bool add_star_code(StarCodeEntry code) { bool add_star_code(StarCodeEntry code) {
ESP_LOGI(TAG, "Adding starcode: %s", code.code);
if (code.code == nullptr || strlen(code.code) > STARCODE_MAX_LEN) { if (code.code == nullptr || strlen(code.code) > STARCODE_MAX_LEN) {
ESP_LOGW(TAG, "invalid code");
return false; return false;
} }
if (code.display_text != nullptr && strlen(code.display_text) > STARCODE_MAX_LEN + 1) { if (code.display_text != nullptr && strlen(code.display_text) > STARCODE_DISPLAY_TEXT_MAX_LEN) {
ESP_LOGW(TAG, "invalid display_text");
return false; return false;
} }
@@ -139,7 +144,7 @@ bool add_star_code(StarCodeEntry code) {
if (it != star_codes.end()) { if (it != star_codes.end()) {
// existing star code found! // existing star code found!
ESP_LOGW(TAG, "Failed to add star code %s", code.code); ESP_LOGW(TAG, "Duplicate starcode %s", code.code);
return false; return false;
} }
@@ -157,7 +162,9 @@ bool add_star_codes(const StarCodeEntry* codes, size_t len) {
return success; return success;
} }
bool rm_star_code(const char* code){ bool rm_star_code(const char* code) {
ESP_LOGI(TAG, "Removing starcode: %s", code);
auto it = std::find_if(star_codes.begin(), star_codes.end(), [&](const StarCodeEntry& star_code) { auto it = std::find_if(star_codes.begin(), star_codes.end(), [&](const StarCodeEntry& star_code) {
return strcmp(code, star_code.code) == 0; return strcmp(code, star_code.code) == 0;
}); });
@@ -196,18 +203,12 @@ void clear_star_codes() {
} }
bool trigger_star_code(const char* code) { bool trigger_star_code(const char* code) {
ESP_LOGI(TAG, "Star codes to checK:");
for (const auto& entry : star_codes) {
ESP_LOGI(TAG, "%s", entry.code);
}
auto it = std::find_if(star_codes.begin(), star_codes.end(), [&](const StarCodeEntry& other) { auto it = std::find_if(star_codes.begin(), star_codes.end(), [&](const StarCodeEntry& other) {
return check_code_match(code, other.code); return check_code_match(code, other.code);
}); });
uint64_t delay_us = 2'000'000; uint64_t delay_us = 2'000'000;
processing_starcode = true; delaying_for_starcode = true;
if (it != star_codes.end()) { if (it != star_codes.end()) {
current_starcode = &*it; current_starcode = &*it;
delay_us = current_starcode->delay_us; delay_us = current_starcode->delay_us;
@@ -231,22 +232,25 @@ void lcd_print_header_star_code() {
if (!lcd_header_enabled()) return; if (!lcd_header_enabled()) return;
// TODO: consider upping the display text size to be able to overwrite the game_state area. // TODO: consider upping the display text size to be able to overwrite the game_state area.
if (processing_starcode) { if (delaying_for_starcode) {
if (current_starcode == nullptr) { if (current_starcode == nullptr) {
lcd_print(0, 0, "Invalid "); lcd_print(0, 0, "Invalid starcode ");
} else if (current_starcode->display_text != nullptr) { } else if (current_starcode->display_text != nullptr) {
char buf[STARCODE_MAX_LEN + 2]; char buf[21];
snprintf(buf, sizeof(buf), "%s", current_starcode->display_text); snprintf(buf, sizeof(buf), "%-20s", current_starcode->display_text);
lcd_print(0, 0, buf); lcd_print(0, 0, buf);
} else { } else {
lcd_print(0, 0, EMPTY_STAR_CODE_HEADER); lcd_print(0, 0, EMPTY_STAR_CODE_HEADER);
} }
} else if (doing_starcode) { } else if (doing_starcode) {
char buf[STARCODE_MAX_LEN + 2]; char buf[STARCODE_MAX_LEN + 2];
snprintf(buf, sizeof(buf), "*%-8s", current); snprintf(buf, sizeof(buf), "*%-9s", current);
lcd_print(0, 0, buf); lcd_print(0, 0, buf);
} else { } else {
lcd_print(0, 0, EMPTY_STAR_CODE_HEADER); lcd_print(0, 0, EMPTY_STAR_CODE_HEADER);
} }
} }
bool lcd_starcode_displaying_result() {
return delaying_for_starcode;
}
@@ -6,19 +6,20 @@
#include <freertos/semphr.h> #include <freertos/semphr.h>
/// The max length of a starcode (not counting the star) /// The max length of a starcode (not counting the star)
#define STARCODE_MAX_LEN 8 #define STARCODE_MAX_LEN 9
#define STARCODE_DISPLAY_TEXT_MAX_LEN 20
/// @brief A handler for a specific star code /// @brief A handler for a specific star code
struct StarCodeEntry { struct StarCodeEntry {
/// @brief The star code without the star /// @brief The star code without the star
/// ///
/// This must be <= 8 characters. /// This must be <= 9 characters.
/// ///
/// You may include a * in the code to match on any character /// You may include a * in the code to match on any character
const char* code; const char* code;
/// @brief The text to display when the star code is entered (or null). /// @brief The text to display when the star code is entered (or null).
/// ///
/// This must be <= 9 characters. /// This must be <= 20 characters.
const char* display_text; const char* display_text;
/// @brief The number of microseconds to delay when the star code is entered before calling the handler. /// @brief The number of microseconds to delay when the star code is entered before calling the handler.
uint64_t delay_us; uint64_t delay_us;
@@ -77,11 +78,13 @@ bool trigger_star_code(const char* code);
/// If one is being handled currently, it is canceled. /// If one is being handled currently, it is canceled.
void set_star_code_sys_enabled(bool enable); void set_star_code_sys_enabled(bool enable);
/// @brief Gets weather or not the star code system is handling new star codes. /// @return `true` iff the star code system is handling star codes.
/// @return `true` if the star code system is handling star codes.
bool star_code_sys_enabled(); bool star_code_sys_enabled();
/// @brief Prints the star code section of the header to the char_lcd. (row 0, columns 0-9) /// @brief Prints the star code section of the header to the char_lcd. (row 0, columns 0-9)
void lcd_print_header_star_code(); void lcd_print_header_star_code();
/// @return `true` iff the starcode system is using the full header.
bool lcd_starcode_displaying_result();
#endif /* STAR_CODE_H */ #endif /* STAR_CODE_H */
+4 -4
View File
@@ -44,11 +44,11 @@
#define SPI_MAX_TRANSFER_SIZE 32768 #define SPI_MAX_TRANSFER_SIZE 32768
#define TFT_PIN_MOSI GPIO_NUM_17 #define TFT_PIN_MOSI GPIO_NUM_17
#define TFT_PIN_MISO GPIO_NUM_18 #define TFT_PIN_MISO GPIO_NUM_16
#define TFT_PIN_CLK GPIO_NUM_16 #define TFT_PIN_CLK GPIO_NUM_18
#define TFT_PIN_CS GPIO_NUM_NC #define TFT_PIN_CS GPIO_NUM_NC
#define TFT_PIN_DC GPIO_NUM_15 #define TFT_PIN_DC GPIO_NUM_8
#define TFT_PIN_RESET GPIO_NUM_8 #define TFT_PIN_RESET GPIO_NUM_9
#define TFT_INVERT_COLOR false #define TFT_INVERT_COLOR false
+4 -4
View File
@@ -26,8 +26,8 @@ static void receive_button(void);
void init_wires(void) { void init_wires(void) {
i2c_config_t wires_conf = { i2c_config_t wires_conf = {
.mode = I2C_MODE_MASTER, .mode = I2C_MODE_MASTER,
.sda_io_num = GPIO_NUM_41, .sda_io_num = PIN_WIRES_SDA,
.scl_io_num = GPIO_NUM_42, .scl_io_num = PIN_WIRES_SCL,
.sda_pullup_en = GPIO_PULLUP_ENABLE, .sda_pullup_en = GPIO_PULLUP_ENABLE,
.scl_pullup_en = GPIO_PULLUP_ENABLE, .scl_pullup_en = GPIO_PULLUP_ENABLE,
.master = { .master = {
@@ -35,8 +35,8 @@ void init_wires(void) {
}, },
}; };
gpio_reset_pin(GPIO_NUM_41); gpio_reset_pin(PIN_WIRES_SDA);
gpio_reset_pin(GPIO_NUM_42); gpio_reset_pin(PIN_WIRES_SCL);
ESP_ERROR_CHECK(i2c_param_config(WIRES_I2C_NUM, &wires_conf)); ESP_ERROR_CHECK(i2c_param_config(WIRES_I2C_NUM, &wires_conf));
ESP_ERROR_CHECK(i2c_driver_install(WIRES_I2C_NUM, wires_conf.mode, 0, 0, 0)); ESP_ERROR_CHECK(i2c_driver_install(WIRES_I2C_NUM, wires_conf.mode, 0, 0, 0));
+4 -1
View File
@@ -8,8 +8,11 @@
#include "drivers/char_lcd.h" #include "drivers/char_lcd.h"
#include "drivers/game_timer.h" #include "drivers/game_timer.h"
#include "main.h" #include "main.h"
#include "perh.h"
#define WIRES_PIN_DELTA GPIO_NUM_2 #define WIRES_PIN_DELTA PIN_PERH3
#define PIN_WIRES_SDA PIN_PERH1
#define PIN_WIRES_SCL PIN_PERH2
#define WIRES_I2C_NUM I2C_NUM_1 #define WIRES_I2C_NUM I2C_NUM_1
#define WIRES_I2C_ADDR 125 #define WIRES_I2C_ADDR 125
+101 -47
View File
@@ -13,19 +13,102 @@
#include "helper.h" #include "helper.h"
#include "steps/step0.h" #include "steps/step0.h"
#include "steps/step1.h" #include "steps/p001_step1.h"
#include "steps/step2.h" #include "steps/p001_step2.h"
#include "steps/step3.h" #include "steps/p001_step3.h"
#include "steps/step4.h" #include "steps/p001_step4.h"
#include "steps/step5.h" #include "steps/p001_step5.h"
#include "steps/step6.h" #include "steps/p001_step6.h"
#include "steps/p002_step1.h"
#include "steps/p002_step2.h"
#include "steps/p002_step3.h"
#include "steps/p002_step4.h"
#include "steps/p002_step5.h"
#include "steps/p002_step6.h"
static const char *TAG = "main"; static const char *TAG = "main";
uint32_t initial_game_time = 90*60*1000 + 1000; uint32_t initial_game_time = 90*60*1000 + 1000;
uint32_t skip_to_step = 0; uint32_t skip_to_step = 0;
uint32_t current_step = 0; uint32_t current_step = 0;
uint32_t puzzle = 0;
extern uint32_t total_strikes; extern uint32_t total_strikes;
static void do_p001() {
set_game_time(initial_game_time);
start_game_timer();
total_strikes = 0;
clean_bomb();
current_step = 1;
if (skip_to_step <= 1) p001_step1();
step_finish_times[current_step-1] = get_game_time();
clean_bomb();
current_step = 2;
if (skip_to_step <= 2) p001_step2();
step_finish_times[current_step-1] = get_game_time();
clean_bomb();
current_step = 3;
if (skip_to_step <= 3) p001_step3();
step_finish_times[current_step-1] = get_game_time();
clean_bomb();
current_step = 4;
if (skip_to_step <= 4) p001_step4();
step_finish_times[current_step-1] = get_game_time();
clean_bomb();
current_step = 5;
if (skip_to_step <= 5) p001_step5();
step_finish_times[current_step-1] = get_game_time();
clean_bomb();
current_step = 6;
if (skip_to_step <= 6) p001_step6();
start_game_timer();
step_finish_times[current_step-1] = get_game_time();
clean_bomb();
stop_game_timer();
ESP_LOGI(TAG, "Bomb has been diffused. Counter-Terrorists win.");
play_clip_wav(MOUNT_POINT "/diffuse.wav", true, false, 3, 0);
display_game_results();
}
static void do_p002() {
set_game_time(initial_game_time);
start_game_timer();
total_strikes = 0;
clean_bomb();
current_step = 1;
if (skip_to_step <= 1) p002_step1();
step_finish_times[current_step-1] = get_game_time();
clean_bomb();
current_step = 2;
if (skip_to_step <= 2) p002_step2();
step_finish_times[current_step-1] = get_game_time();
clean_bomb();
current_step = 3;
if (skip_to_step <= 3) p002_step3();
step_finish_times[current_step-1] = get_game_time();
clean_bomb();
current_step = 4;
if (skip_to_step <= 4) p002_step4();
step_finish_times[current_step-1] = get_game_time();
clean_bomb();
current_step = 5;
if (skip_to_step <= 5) p002_step5();
step_finish_times[current_step-1] = get_game_time();
clean_bomb();
current_step = 6;
if (skip_to_step <= 6) p002_step6();
start_game_timer();
step_finish_times[current_step-1] = get_game_time();
clean_bomb();
stop_game_timer();
ESP_LOGI(TAG, "Bomb has been diffused. Counter-Terrorists win.");
play_clip_wav(MOUNT_POINT "/diffuse.wav", true, false, 3, 0);
display_game_results();
}
extern "C" void app_main(void) { extern "C" void app_main(void) {
printf("app_main\n"); printf("app_main\n");
@@ -40,49 +123,20 @@ extern "C" void app_main(void) {
lcd_do_splash(); lcd_do_splash();
step0(); step0();
// set_recording_source(stdout, false); if (puzzle == 1) {
FILE* record_file = fopen(MOUNT_POINT "/record.txt", "w"); do_p001();
if (record_file == nullptr) { } else {
ESP_LOGE("main", "failed to open record.txt"); do_p002();
} }
set_recording_source(record_file, true);
start_recording();
set_game_time(initial_game_time); // set_recording_source(stdout, false);
start_game_timer(); // FILE* record_file = fopen(MOUNT_POINT "/record.txt", "w");
total_strikes = 0; // if (record_file == nullptr) {
clean_bomb(); // ESP_LOGE("main", "failed to open record.txt");
current_step = 1; // }
if (skip_to_step <= 1) step1(); // set_recording_source(record_file, true);
step_finish_times[current_step-1] = get_game_time(); // start_recording();
clean_bomb();
current_step = 2;
if (skip_to_step <= 2) step2();
step_finish_times[current_step-1] = get_game_time();
clean_bomb();
current_step = 3;
if (skip_to_step <= 3) step3();
step_finish_times[current_step-1] = get_game_time();
clean_bomb();
current_step = 4;
if (skip_to_step <= 4) step4();
step_finish_times[current_step-1] = get_game_time();
clean_bomb();
current_step = 5;
if (skip_to_step <= 5) step5();
step_finish_times[current_step-1] = get_game_time();
clean_bomb();
current_step = 6;
if (skip_to_step <= 6) step6();
start_game_timer();
step_finish_times[current_step-1] = get_game_time();
clean_bomb();
stop_game_timer(); // stop_recording();
ESP_LOGI(TAG, "Bomb has been diffused. Counter-Terrorists win.");
play_clip_wav(MOUNT_POINT "/diffuse.wav", true, false, 3, 0);
display_game_results();
stop_recording();
} }
+12 -6
View File
@@ -1,12 +1,18 @@
set(SOURCES set(SOURCES
"setup_wires.cpp" "setup_wires.cpp"
"step0.cpp" "step0.cpp"
"step1.cpp" "p001_step1.cpp"
"step2.cpp" "p001_step2.cpp"
"step3.cpp" "p001_step3.cpp"
"step4.cpp" "p001_step4.cpp"
"step5.cpp" "p001_step5.cpp"
"step6.cpp" "p001_step6.cpp"
"p002_step1.cpp"
"p002_step2.cpp"
"p002_step3.cpp"
"p002_step4.cpp"
"p002_step5.cpp"
"p002_step6.cpp"
"wires_puzzle.cpp" "wires_puzzle.cpp"
) )
@@ -1,4 +1,4 @@
#include "step1.h" #include "p001_step1.h"
__attribute__((unused)) __attribute__((unused))
static const char *TAG = "step1"; static const char *TAG = "step1";
@@ -275,7 +275,7 @@ static bool play_part(uint32_t time) {
return true; return true;
} }
void step1(void) { void p001_step1(void) {
while (get_switch_flipped(nullptr)); while (get_switch_flipped(nullptr));
init_step(); init_step();
+10
View File
@@ -0,0 +1,10 @@
#ifndef P001_STEP_1_H
#define P001_STEP_1_H
#include <random>
#include "../drivers/all.h"
#include "../helper.h"
void p001_step1(void);
#endif /* P001_STEP_1_H */
@@ -1,4 +1,4 @@
#include "step2.h" #include "p001_step2.h"
__attribute__((unused)) __attribute__((unused))
static const char *TAG = "step2"; static const char *TAG = "step2";
@@ -91,7 +91,7 @@ static void new_puzzle(void) {
set_module_sseg_raw(display_map); set_module_sseg_raw(display_map);
} }
void step2(void) { void p001_step2(void) {
KeypadKey key; KeypadKey key;
int solved_times = 0; int solved_times = 0;
@@ -1,5 +1,5 @@
#ifndef STEP_2_H #ifndef P001_STEP_2_H
#define STEP_2_H #define P001_STEP_2_H
#include "../drivers/all.h" #include "../drivers/all.h"
#include "../helper.h" #include "../helper.h"
@@ -7,6 +7,6 @@
#include <random> #include <random>
#include <map> #include <map>
void step2(void); void p001_step2(void);
#endif /* STEP_2_H */ #endif /* P001_STEP_2_H */
@@ -1,4 +1,4 @@
#include "step3.h" #include "p001_step3.h"
#define ONE_SECOND_TIME 90'000 #define ONE_SECOND_TIME 90'000
#define THREE_SECOND_TIME 90'000 #define THREE_SECOND_TIME 90'000
@@ -72,7 +72,7 @@ static bool one_second();
static bool three_second(); static bool three_second();
static bool six_second(); static bool six_second();
void step3(void) { void p001_step3(void) {
SemaphoreHandle_t continue_sem = xSemaphoreCreateBinary(); SemaphoreHandle_t continue_sem = xSemaphoreCreateBinary();
if (continue_sem == nullptr) { if (continue_sem == nullptr) {
ESP_LOGE(TAG, "could not create semaphore"); ESP_LOGE(TAG, "could not create semaphore");
+10
View File
@@ -0,0 +1,10 @@
#ifndef P001_STEP_3_H
#define P001_STEP_3_H
#include <random>
#include "../drivers/all.h"
#include "../helper.h"
void p001_step3(void);
#endif /* P001_STEP_3_H */
@@ -1,4 +1,4 @@
#include "step4.h" #include "p001_step4.h"
__attribute__((unused)) __attribute__((unused))
static const char *TAG = "step4"; static const char *TAG = "step4";
@@ -379,7 +379,7 @@ static void fail() {
} }
} }
void step4() { void p001_step4() {
// TODO: extract to helper function // TODO: extract to helper function
SemaphoreHandle_t continue_sem = xSemaphoreCreateBinary(); SemaphoreHandle_t continue_sem = xSemaphoreCreateBinary();
if (continue_sem == nullptr) { if (continue_sem == nullptr) {
@@ -1,5 +1,5 @@
#ifndef STEP_4_H #ifndef P001_STEP_4_H
#define STEP_4_H #define P001_STEP_4_H
#include <random> #include <random>
#include "../drivers/all.h" #include "../drivers/all.h"
@@ -9,6 +9,6 @@
#define TETRIS_USE_FLASH_IMG #define TETRIS_USE_FLASH_IMG
#define TETRIS_USE_FLASH_BG_IMG #define TETRIS_USE_FLASH_BG_IMG
void step4(void); void p001_step4(void);
#endif /* STEP_4_H */ #endif /* P001_STEP_4_H */
@@ -1,4 +1,4 @@
#include "step5.h" #include "p001_step5.h"
#define TIME_CLEAR 30'000 #define TIME_CLEAR 30'000
#define TIME_PLANK 40'000 #define TIME_PLANK 40'000
@@ -178,7 +178,7 @@ bool submit_6(bool* buttons_cycling, bool button_turned_on, int led_off) {
return true; return true;
} }
void step5(void) { void p001_step5(void) {
SemaphoreHandle_t continue_sem = xSemaphoreCreateBinary(); SemaphoreHandle_t continue_sem = xSemaphoreCreateBinary();
if (continue_sem == nullptr) { if (continue_sem == nullptr) {
ESP_LOGE(TAG, "could not create semaphore"); ESP_LOGE(TAG, "could not create semaphore");
@@ -1,5 +1,5 @@
#ifndef STEP_5_H #ifndef P001_STEP_5_H
#define STEP_5_H #define P001_STEP_5_H
#include "../drivers/all.h" #include "../drivers/all.h"
#include "../helper.h" #include "../helper.h"
@@ -11,6 +11,6 @@
#include <cmath> #include <cmath>
#include <array> #include <array>
void step5(void); void p001_step5(void);
#endif /* STEP_5_H */ #endif /* P001_STEP_5_H */
@@ -1,11 +1,11 @@
#include "step6.h" #include "p001_step6.h"
__attribute__((unused)) __attribute__((unused))
static const char *TAG = "step6"; static const char *TAG = "step6";
static uint8_t cut_wires = 0; static uint8_t cut_wires = 0;
void step6(void) { void p001_step6(void) {
get_cut_wires(); get_cut_wires();
clear_all_pressed_released(); clear_all_pressed_released();
+10
View File
@@ -0,0 +1,10 @@
#ifndef P001_STEP_6_H
#define P001_STEP_6_H
#include "wires_puzzle.h"
#include "../drivers/all.h"
#include "../helper.h"
void p001_step6(void);
#endif /* P001_STEP_6_H */
+10
View File
@@ -0,0 +1,10 @@
#include "p002_step1.h"
__attribute__((unused))
static const char *TAG = "step1";
void p002_step1(void) {
// TODO: implement step 1
}
+8
View File
@@ -0,0 +1,8 @@
#ifndef P002_STEP_1_H
#define P002_STEP_1_H
#include "../drivers/all.h"
void p002_step1(void);
#endif /* P002_STEP_1_H */
+8
View File
@@ -0,0 +1,8 @@
#include "p002_step2.h"
__attribute__((unused))
static const char *TAG = "step2";
void p002_step2(void) {
// TODO: implement step 2
}
+8
View File
@@ -0,0 +1,8 @@
#ifndef P002_STEP_2_H
#define P002_STEP_2_H
#include "../drivers/all.h"
void p002_step2(void);
#endif /* P002_STEP_2_H */
+8
View File
@@ -0,0 +1,8 @@
#include "p002_step3.h"
__attribute__((unused))
static const char *TAG = "step3";
void p002_step3(void) {
// TODO: implement step 3
}
+8
View File
@@ -0,0 +1,8 @@
#ifndef P002_STEP_3_H
#define P002_STEP_3_H
#include "../drivers/all.h"
void p002_step3(void);
#endif /* P002_STEP_3_H */
+8
View File
@@ -0,0 +1,8 @@
#include "p002_step4.h"
__attribute__((unused))
static const char *TAG = "step4";
void p002_step4(void) {
// TODO: implement step 4
}
+8
View File
@@ -0,0 +1,8 @@
#ifndef P002_STEP_4_H
#define P002_STEP_4_H
#include "../drivers/all.h"
void p002_step4(void);
#endif /* P002_STEP_4_H */
+8
View File
@@ -0,0 +1,8 @@
#include "p002_step5.h"
__attribute__((unused))
static const char *TAG = "step5";
void p002_step5(void) {
// TODO: implement step 5
}
+8
View File
@@ -0,0 +1,8 @@
#ifndef P002_STEP_5_H
#define P002_STEP_5_H
#include "../drivers/all.h"
void p002_step5(void);
#endif /* P002_STEP_5_H */
+8
View File
@@ -0,0 +1,8 @@
#include "p002_step6.h"
__attribute__((unused))
static const char *TAG = "step6";
void p002_step6(void) {
// TODO: implement step 6
}
+8
View File
@@ -0,0 +1,8 @@
#ifndef P002_STEP_6_H
#define P002_STEP_6_H
#include "../drivers/all.h"
void p002_step6(void);
#endif /* P002_STEP_6_H */
+28 -13
View File
@@ -5,6 +5,7 @@ static const char* TAG = "step0";
extern uint32_t initial_game_time; extern uint32_t initial_game_time;
extern uint32_t skip_to_step; extern uint32_t skip_to_step;
extern uint32_t puzzle;
static void set_game_time(); static void set_game_time();
static void skip_to_step1() { skip_to_step = 1; } static void skip_to_step1() { skip_to_step = 1; }
@@ -13,12 +14,12 @@ static void skip_to_step3() { skip_to_step = 3; }
static void skip_to_step4() { skip_to_step = 4; } static void skip_to_step4() { skip_to_step = 4; }
static void skip_to_step5() { skip_to_step = 5; } static void skip_to_step5() { skip_to_step = 5; }
static void skip_to_step6() { skip_to_step = 6; } static void skip_to_step6() { skip_to_step = 6; }
static void try_step1() { clean_bomb(); step1(); } static void try_step1() { clean_bomb(); p001_step1(); }
static void try_step2() { clean_bomb(); step2(); } static void try_step2() { clean_bomb(); p001_step2(); }
static void try_step3() { clean_bomb(); step3(); } static void try_step3() { clean_bomb(); p001_step3(); }
static void try_step4() { clean_bomb(); step4(); } static void try_step4() { clean_bomb(); p001_step4(); }
static void try_step5() { clean_bomb(); step5(); } static void try_step5() { clean_bomb(); p001_step5(); }
static void try_step6() { clean_bomb(); step6(); } static void try_step6() { clean_bomb(); p001_step6(); }
static void issue_strike() { strike("Strike Issued"); } static void issue_strike() { strike("Strike Issued"); }
static void flashbang(); static void flashbang();
static void debug_switches(); static void debug_switches();
@@ -45,6 +46,13 @@ static void replay_last() {
start_playback(); start_playback();
} }
static void do_p001() {
puzzle = 1;
}
static void do_p002() {
puzzle = 2;
}
void step0() { void step0() {
led_set(IndicatorLED::LED_SPEAKER, LEDColor::LED_COLOR_BLUE); led_set(IndicatorLED::LED_SPEAKER, LEDColor::LED_COLOR_BLUE);
@@ -59,15 +67,22 @@ void step0() {
StarCodeEntry star_codes[] = { StarCodeEntry star_codes[] = {
{ {
.code = "9819", .code = "9819",
.display_text = "Defusal Initiated", .display_text = "Start P001",
.delay_us = 2'000'000, .delay_us = 2'000'000,
.callback = nullptr, .callback = do_p001,
.triggered_sem = continue_sem, .triggered_sem = continue_sem,
}, },
{ {
.code = "59862", .code = "3141",
.display_text = "Set Up Wires", .display_text = "Start P002",
.delay_us = 10'000'000, .delay_us = 2'000'000,
.callback = do_p002,
.triggered_sem = continue_sem,
},
{
.code = "59861",
.display_text = "Setup Wires",
.delay_us = 2'000'000,
.callback = setup_wires, .callback = setup_wires,
.triggered_sem = nullptr, .triggered_sem = nullptr,
}, },
@@ -80,7 +95,7 @@ void step0() {
}, },
{ {
.code = "59863", .code = "59863",
.display_text = "Debug Switches", .display_text = "Debug switches",
.delay_us = 2'000'000, .delay_us = 2'000'000,
.callback = debug_switches, .callback = debug_switches,
.triggered_sem = nullptr, .triggered_sem = nullptr,
@@ -192,7 +207,7 @@ void step0() {
}, },
{ {
.code = "1113", .code = "1113",
.display_text = "replay_last", .display_text = "replay",
.delay_us = 2'000'000, .delay_us = 2'000'000,
.callback = replay_last, .callback = replay_last,
.triggered_sem = continue_sem, .triggered_sem = continue_sem,
+6 -6
View File
@@ -4,12 +4,12 @@
#include "../drivers/all.h" #include "../drivers/all.h"
#include "setup_wires.h" #include "setup_wires.h"
#include "step1.h" #include "p001_step1.h"
#include "step2.h" #include "p001_step2.h"
#include "step3.h" #include "p001_step3.h"
#include "step4.h" #include "p001_step4.h"
#include "step5.h" #include "p001_step5.h"
#include "step6.h" #include "p001_step6.h"
/// Wait for "*9819" /// Wait for "*9819"
void step0(void); void step0(void);
-10
View File
@@ -1,10 +0,0 @@
#ifndef STEP_1_H
#define STEP_1_H
#include <random>
#include "../drivers/all.h"
#include "../helper.h"
void step1(void);
#endif /* STEP_1_H */
-10
View File
@@ -1,10 +0,0 @@
#ifndef STEP_3_H
#define STEP_3_H
#include <random>
#include "../drivers/all.h"
#include "../helper.h"
void step3(void);
#endif /* STEP_3_H */
-10
View File
@@ -1,10 +0,0 @@
#ifndef STEP_6_H
#define STEP_6_H
#include "wires_puzzle.h"
#include "../drivers/all.h"
#include "../helper.h"
void step6(void);
#endif /* STEP_6_H */
+80 -35
View File
@@ -1,6 +1,6 @@
# #
# Automatically generated file. DO NOT EDIT. # Automatically generated file. DO NOT EDIT.
# Espressif IoT Development Framework (ESP-IDF) 5.3.2 Project Configuration # Espressif IoT Development Framework (ESP-IDF) 5.3.5 Project Configuration
# #
CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000
CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 CONFIG_SOC_MPU_REGIONS_MAX_NUM=8
@@ -11,6 +11,7 @@ CONFIG_SOC_PHY_SUPPORTED=y
CONFIG_SOC_WIFI_SUPPORTED=y CONFIG_SOC_WIFI_SUPPORTED=y
CONFIG_SOC_TWAI_SUPPORTED=y CONFIG_SOC_TWAI_SUPPORTED=y
CONFIG_SOC_GDMA_SUPPORTED=y CONFIG_SOC_GDMA_SUPPORTED=y
CONFIG_SOC_UHCI_SUPPORTED=y
CONFIG_SOC_AHB_GDMA_SUPPORTED=y CONFIG_SOC_AHB_GDMA_SUPPORTED=y
CONFIG_SOC_GPTIMER_SUPPORTED=y CONFIG_SOC_GPTIMER_SUPPORTED=y
CONFIG_SOC_LCDCAM_SUPPORTED=y CONFIG_SOC_LCDCAM_SUPPORTED=y
@@ -64,6 +65,7 @@ CONFIG_SOC_LIGHT_SLEEP_SUPPORTED=y
CONFIG_SOC_DEEP_SLEEP_SUPPORTED=y CONFIG_SOC_DEEP_SLEEP_SUPPORTED=y
CONFIG_SOC_LP_PERIPH_SHARE_INTERRUPT=y CONFIG_SOC_LP_PERIPH_SHARE_INTERRUPT=y
CONFIG_SOC_PM_SUPPORTED=y CONFIG_SOC_PM_SUPPORTED=y
CONFIG_SOC_SIMD_INSTRUCTION_SUPPORTED=y
CONFIG_SOC_XTAL_SUPPORT_40M=y CONFIG_SOC_XTAL_SUPPORT_40M=y
CONFIG_SOC_APPCPU_HAS_CLOCK_GATING_BUG=y CONFIG_SOC_APPCPU_HAS_CLOCK_GATING_BUG=y
CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y
@@ -100,7 +102,8 @@ CONFIG_SOC_CPU_HAS_FPU=y
CONFIG_SOC_HP_CPU_HAS_MULTIPLE_CORES=y CONFIG_SOC_HP_CPU_HAS_MULTIPLE_CORES=y
CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 CONFIG_SOC_CPU_BREAKPOINTS_NUM=2
CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 CONFIG_SOC_CPU_WATCHPOINTS_NUM=2
CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=64 CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=0x40
CONFIG_SOC_SIMD_PREFERRED_DATA_ALIGNMENT=16
CONFIG_SOC_DS_SIGNATURE_MAX_BIT_LEN=4096 CONFIG_SOC_DS_SIGNATURE_MAX_BIT_LEN=4096
CONFIG_SOC_DS_KEY_PARAM_MD_IV_LENGTH=16 CONFIG_SOC_DS_KEY_PARAM_MD_IV_LENGTH=16
CONFIG_SOC_DS_KEY_CHECK_MAX_WAIT_US=1100 CONFIG_SOC_DS_KEY_CHECK_MAX_WAIT_US=1100
@@ -176,7 +179,7 @@ CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8
CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=48 CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=48
CONFIG_SOC_RMT_SUPPORT_RX_PINGPONG=y CONFIG_SOC_RMT_SUPPORT_RX_PINGPONG=y
CONFIG_SOC_RMT_SUPPORT_RX_DEMODULATION=y CONFIG_SOC_RMT_SUPPORT_RX_DEMODULATION=y
CONFIG_SOC_RMT_SUPPORT_TX_ASYNC_STOP=y CONFIG_SOC_RMT_SUPPORT_ASYNC_STOP=y
CONFIG_SOC_RMT_SUPPORT_TX_LOOP_COUNT=y CONFIG_SOC_RMT_SUPPORT_TX_LOOP_COUNT=y
CONFIG_SOC_RMT_SUPPORT_TX_LOOP_AUTO_STOP=y CONFIG_SOC_RMT_SUPPORT_TX_LOOP_AUTO_STOP=y
CONFIG_SOC_RMT_SUPPORT_TX_SYNCHRO=y CONFIG_SOC_RMT_SUPPORT_TX_SYNCHRO=y
@@ -203,7 +206,8 @@ CONFIG_SOC_RTCIO_PIN_COUNT=22
CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y
CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y
CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y
CONFIG_SOC_SDM_GROUPS=y CONFIG_SOC_LP_IO_CLOCK_IS_INDEPENDENT=y
CONFIG_SOC_SDM_GROUPS=1
CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8
CONFIG_SOC_SDM_CLK_SUPPORT_APB=y CONFIG_SOC_SDM_CLK_SUPPORT_APB=y
CONFIG_SOC_SPI_PERIPH_NUM=3 CONFIG_SOC_SPI_PERIPH_NUM=3
@@ -243,6 +247,8 @@ CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=54
CONFIG_SOC_TIMER_GROUP_SUPPORT_XTAL=y CONFIG_SOC_TIMER_GROUP_SUPPORT_XTAL=y
CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y
CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4
CONFIG_SOC_LP_TIMER_BIT_WIDTH_LO=32
CONFIG_SOC_LP_TIMER_BIT_WIDTH_HI=16
CONFIG_SOC_TOUCH_SENSOR_VERSION=2 CONFIG_SOC_TOUCH_SENSOR_VERSION=2
CONFIG_SOC_TOUCH_SENSOR_NUM=15 CONFIG_SOC_TOUCH_SENSOR_NUM=15
CONFIG_SOC_TOUCH_SUPPORT_SLEEP_WAKEUP=y CONFIG_SOC_TOUCH_SUPPORT_SLEEP_WAKEUP=y
@@ -265,6 +271,7 @@ CONFIG_SOC_UART_SUPPORT_WAKEUP_INT=y
CONFIG_SOC_UART_SUPPORT_APB_CLK=y CONFIG_SOC_UART_SUPPORT_APB_CLK=y
CONFIG_SOC_UART_SUPPORT_RTC_CLK=y CONFIG_SOC_UART_SUPPORT_RTC_CLK=y
CONFIG_SOC_UART_SUPPORT_XTAL_CLK=y CONFIG_SOC_UART_SUPPORT_XTAL_CLK=y
CONFIG_SOC_UHCI_NUM=1
CONFIG_SOC_USB_OTG_PERIPH_NUM=1 CONFIG_SOC_USB_OTG_PERIPH_NUM=1
CONFIG_SOC_SHA_DMA_MAX_BUFFER_SIZE=3968 CONFIG_SOC_SHA_DMA_MAX_BUFFER_SIZE=3968
CONFIG_SOC_SHA_SUPPORT_DMA=y CONFIG_SOC_SHA_SUPPORT_DMA=y
@@ -350,6 +357,7 @@ CONFIG_SOC_WIFI_HW_TSF=y
CONFIG_SOC_WIFI_FTM_SUPPORT=y CONFIG_SOC_WIFI_FTM_SUPPORT=y
CONFIG_SOC_WIFI_GCMP_SUPPORT=y CONFIG_SOC_WIFI_GCMP_SUPPORT=y
CONFIG_SOC_WIFI_WAPI_SUPPORT=y CONFIG_SOC_WIFI_WAPI_SUPPORT=y
CONFIG_SOC_WIFI_TXOP_SUPPORT=y
CONFIG_SOC_WIFI_CSI_SUPPORT=y CONFIG_SOC_WIFI_CSI_SUPPORT=y
CONFIG_SOC_WIFI_MESH_SUPPORT=y CONFIG_SOC_WIFI_MESH_SUPPORT=y
CONFIG_SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW=y CONFIG_SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW=y
@@ -539,7 +547,7 @@ CONFIG_PARTITION_TABLE_MD5=y
# #
# BLK_BOX Config # BLK_BOX Config
# #
CONFIG_USE_NEW_DISPLAY=y # CONFIG_USE_NEW_DISPLAY is not set
# end of BLK_BOX Config # end of BLK_BOX Config
# #
@@ -593,7 +601,21 @@ CONFIG_APPTRACE_LOCK_ENABLE=y
# Bluetooth # Bluetooth
# #
# CONFIG_BT_ENABLED is not set # CONFIG_BT_ENABLED is not set
CONFIG_BT_ALARM_MAX_NUM=50
#
# Common Options
#
#
# BLE Log
#
# CONFIG_BLE_LOG_ENABLED is not set
# end of BLE Log
# CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED is not set
# CONFIG_BT_BLE_LOG_UHCI_OUT_ENABLED is not set
# CONFIG_BT_LE_USED_MEM_STATISTICS_ENABLED is not set
# end of Common Options
# end of Bluetooth # end of Bluetooth
# #
@@ -617,6 +639,7 @@ CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y
# Legacy ADC Driver Configuration # Legacy ADC Driver Configuration
# #
# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_ADC_SKIP_LEGACY_CONFLICT_CHECK is not set
# #
# Legacy ADC Calibration Configuration # Legacy ADC Calibration Configuration
@@ -629,42 +652,55 @@ CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y
# Legacy MCPWM Driver Configurations # Legacy MCPWM Driver Configurations
# #
# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_MCPWM_SKIP_LEGACY_CONFLICT_CHECK is not set
# end of Legacy MCPWM Driver Configurations # end of Legacy MCPWM Driver Configurations
# #
# Legacy Timer Group Driver Configurations # Legacy Timer Group Driver Configurations
# #
# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_GPTIMER_SKIP_LEGACY_CONFLICT_CHECK is not set
# end of Legacy Timer Group Driver Configurations # end of Legacy Timer Group Driver Configurations
# #
# Legacy RMT Driver Configurations # Legacy RMT Driver Configurations
# #
# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_RMT_SKIP_LEGACY_CONFLICT_CHECK is not set
# end of Legacy RMT Driver Configurations # end of Legacy RMT Driver Configurations
# #
# Legacy I2S Driver Configurations # Legacy I2S Driver Configurations
# #
# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_I2S_SKIP_LEGACY_CONFLICT_CHECK is not set
# end of Legacy I2S Driver Configurations # end of Legacy I2S Driver Configurations
#
# Legacy I2C Driver Configurations
#
# CONFIG_I2C_SKIP_LEGACY_CONFLICT_CHECK is not set
# end of Legacy I2C Driver Configurations
# #
# Legacy PCNT Driver Configurations # Legacy PCNT Driver Configurations
# #
# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_PCNT_SKIP_LEGACY_CONFLICT_CHECK is not set
# end of Legacy PCNT Driver Configurations # end of Legacy PCNT Driver Configurations
# #
# Legacy SDM Driver Configurations # Legacy SDM Driver Configurations
# #
# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_SDM_SKIP_LEGACY_CONFLICT_CHECK is not set
# end of Legacy SDM Driver Configurations # end of Legacy SDM Driver Configurations
# #
# Legacy Temperature Sensor Driver Configurations # Legacy Temperature Sensor Driver Configurations
# #
# CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_TEMP_SENSOR_SKIP_LEGACY_CONFLICT_CHECK is not set
# end of Legacy Temperature Sensor Driver Configurations # end of Legacy Temperature Sensor Driver Configurations
# end of Driver Configurations # end of Driver Configurations
@@ -687,6 +723,7 @@ CONFIG_ESP_TLS_USE_DS_PERIPHERAL=y
# CONFIG_ESP_TLS_SERVER_MIN_AUTH_MODE_OPTIONAL is not set # CONFIG_ESP_TLS_SERVER_MIN_AUTH_MODE_OPTIONAL is not set
# CONFIG_ESP_TLS_PSK_VERIFICATION is not set # CONFIG_ESP_TLS_PSK_VERIFICATION is not set
# CONFIG_ESP_TLS_INSECURE is not set # CONFIG_ESP_TLS_INSECURE is not set
CONFIG_ESP_TLS_DYN_BUF_STRATEGY_SUPPORTED=y
# end of ESP-TLS # end of ESP-TLS
# #
@@ -724,6 +761,7 @@ CONFIG_ESP_ERR_TO_NAME_LOOKUP=y
CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y
# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set # CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set
# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set # CONFIG_GPTIMER_ISR_IRAM_SAFE is not set
CONFIG_GPTIMER_OBJ_CACHE_SAFE=y
# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set # CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set
# end of ESP-Driver:GPTimer Configurations # end of ESP-Driver:GPTimer Configurations
@@ -807,6 +845,14 @@ CONFIG_SPI_SLAVE_ISR_IN_IRAM=y
# CONFIG_UART_ISR_IN_IRAM is not set # CONFIG_UART_ISR_IN_IRAM is not set
# end of ESP-Driver:UART Configurations # end of ESP-Driver:UART Configurations
#
# ESP-Driver:UHCI Configurations
#
# CONFIG_UHCI_ISR_HANDLER_IN_IRAM is not set
# CONFIG_UHCI_ISR_CACHE_SAFE is not set
# CONFIG_UHCI_ENABLE_DEBUG_LOG is not set
# end of ESP-Driver:UHCI Configurations
# #
# ESP-Driver:USB Serial/JTAG Configuration # ESP-Driver:USB Serial/JTAG Configuration
# #
@@ -842,6 +888,13 @@ CONFIG_ESP_GDBSTUB_SUPPORT_TASKS=y
CONFIG_ESP_GDBSTUB_MAX_TASKS=32 CONFIG_ESP_GDBSTUB_MAX_TASKS=32
# end of GDB Stub # end of GDB Stub
#
# ESP HID
#
CONFIG_ESPHID_TASK_SIZE_BT=2048
CONFIG_ESPHID_TASK_SIZE_BLE=4096
# end of ESP HID
# #
# ESP HTTP client # ESP HTTP client
# #
@@ -1015,7 +1068,11 @@ CONFIG_ESP_PHY_RF_CAL_PARTIAL=y
# CONFIG_ESP_PHY_RF_CAL_NONE is not set # CONFIG_ESP_PHY_RF_CAL_NONE is not set
# CONFIG_ESP_PHY_RF_CAL_FULL is not set # CONFIG_ESP_PHY_RF_CAL_FULL is not set
CONFIG_ESP_PHY_CALIBRATION_MODE=0 CONFIG_ESP_PHY_CALIBRATION_MODE=0
CONFIG_ESP_PHY_PLL_TRACK_PERIOD_MS=1000
# CONFIG_ESP_PHY_PLL_TRACK_DEBUG is not set # CONFIG_ESP_PHY_PLL_TRACK_DEBUG is not set
# CONFIG_ESP_PHY_RECORD_USED_TIME is not set
CONFIG_ESP_PHY_IRAM_OPT=y
# CONFIG_ESP_PHY_DEBUG is not set
# end of PHY # end of PHY
# #
@@ -1035,9 +1092,11 @@ CONFIG_SPIRAM=y
# #
# SPI RAM config # SPI RAM config
# #
# CONFIG_SPIRAM_MODE_QUAD is not set CONFIG_SPIRAM_MODE_QUAD=y
CONFIG_SPIRAM_MODE_OCT=y # CONFIG_SPIRAM_MODE_OCT is not set
CONFIG_SPIRAM_TYPE_AUTO=y CONFIG_SPIRAM_TYPE_AUTO=y
# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set
# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set
# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set # CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set
CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY=y CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY=y
CONFIG_SPIRAM_CLK_IO=30 CONFIG_SPIRAM_CLK_IO=30
@@ -1045,11 +1104,12 @@ CONFIG_SPIRAM_CS_IO=26
# CONFIG_SPIRAM_XIP_FROM_PSRAM is not set # CONFIG_SPIRAM_XIP_FROM_PSRAM is not set
# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set # CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set
# CONFIG_SPIRAM_RODATA is not set # CONFIG_SPIRAM_RODATA is not set
# CONFIG_SPIRAM_SPEED_120M is not set
# CONFIG_SPIRAM_SPEED_80M is not set # CONFIG_SPIRAM_SPEED_80M is not set
CONFIG_SPIRAM_SPEED_40M=y CONFIG_SPIRAM_SPEED_40M=y
CONFIG_SPIRAM_SPEED=40 CONFIG_SPIRAM_SPEED=40
# CONFIG_SPIRAM_ECC_ENABLE is not set
CONFIG_SPIRAM_BOOT_INIT=y CONFIG_SPIRAM_BOOT_INIT=y
CONFIG_SPIRAM_PRE_CONFIGURE_MEMORY_PROTECTION=y
# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set # CONFIG_SPIRAM_IGNORE_NOTFOUND is not set
# CONFIG_SPIRAM_USE_MEMMAP is not set # CONFIG_SPIRAM_USE_MEMMAP is not set
# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set # CONFIG_SPIRAM_USE_CAPS_ALLOC is not set
@@ -1214,9 +1274,9 @@ CONFIG_ESP_WIFI_ENABLED=y
CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10
CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32
CONFIG_ESP_WIFI_STATIC_TX_BUFFER=y CONFIG_ESP_WIFI_STATIC_TX_BUFFER=y
# CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER is not set
CONFIG_ESP_WIFI_TX_BUFFER_TYPE=0 CONFIG_ESP_WIFI_TX_BUFFER_TYPE=0
CONFIG_ESP_WIFI_STATIC_TX_BUFFER_NUM=16 CONFIG_ESP_WIFI_STATIC_TX_BUFFER_NUM=16
CONFIG_ESP_WIFI_CACHE_TX_BUFFER_NUM=32
CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y
# CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set # CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set
CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0 CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0
@@ -1226,7 +1286,6 @@ CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y
CONFIG_ESP_WIFI_TX_BA_WIN=6 CONFIG_ESP_WIFI_TX_BA_WIN=6
CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y
CONFIG_ESP_WIFI_RX_BA_WIN=6 CONFIG_ESP_WIFI_RX_BA_WIN=6
# CONFIG_ESP_WIFI_AMSDU_TX_ENABLED is not set
CONFIG_ESP_WIFI_NVS_ENABLED=y CONFIG_ESP_WIFI_NVS_ENABLED=y
CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_0=y CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_0=y
# CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_1 is not set # CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_1 is not set
@@ -1268,7 +1327,6 @@ CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y
# end of WPS Configuration Options # end of WPS Configuration Options
# CONFIG_ESP_WIFI_DEBUG_PRINT is not set # CONFIG_ESP_WIFI_DEBUG_PRINT is not set
# CONFIG_ESP_WIFI_TESTING_OPTIONS is not set
CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y
# CONFIG_ESP_WIFI_ENT_FREE_DYNAMIC_BUFFER is not set # CONFIG_ESP_WIFI_ENT_FREE_DYNAMIC_BUFFER is not set
# end of Wi-Fi # end of Wi-Fi
@@ -1398,7 +1456,6 @@ CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2
CONFIG_HAL_WDT_USE_ROM_IMPL=y CONFIG_HAL_WDT_USE_ROM_IMPL=y
CONFIG_HAL_SPI_MASTER_FUNC_IN_IRAM=y CONFIG_HAL_SPI_MASTER_FUNC_IN_IRAM=y
CONFIG_HAL_SPI_SLAVE_FUNC_IN_IRAM=y CONFIG_HAL_SPI_SLAVE_FUNC_IN_IRAM=y
# CONFIG_HAL_ECDSA_GEN_SIG_CM is not set
# end of Hardware Abstraction Layer (HAL) and Low Level (LL) # end of Hardware Abstraction Layer (HAL) and Low Level (LL)
# #
@@ -1487,6 +1544,7 @@ CONFIG_LWIP_DHCPS=y
CONFIG_LWIP_DHCPS_LEASE_UNIT=60 CONFIG_LWIP_DHCPS_LEASE_UNIT=60
CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8
CONFIG_LWIP_DHCPS_STATIC_ENTRIES=y CONFIG_LWIP_DHCPS_STATIC_ENTRIES=y
CONFIG_LWIP_DHCPS_ADD_DNS=y
# end of DHCP server # end of DHCP server
# CONFIG_LWIP_AUTOIP is not set # CONFIG_LWIP_AUTOIP is not set
@@ -1638,6 +1696,7 @@ CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096
# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set # CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set
# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set # CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set
CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y
# CONFIG_MBEDTLS_SSL_KEYING_MATERIAL_EXPORT is not set
CONFIG_MBEDTLS_PKCS7_C=y CONFIG_MBEDTLS_PKCS7_C=y
# end of mbedTLS v3.x related # end of mbedTLS v3.x related
@@ -1671,6 +1730,7 @@ CONFIG_MBEDTLS_HAVE_TIME=y
# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set # CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set
# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set # CONFIG_MBEDTLS_HAVE_TIME_DATE is not set
CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y
CONFIG_MBEDTLS_SHA1_C=y
CONFIG_MBEDTLS_SHA512_C=y CONFIG_MBEDTLS_SHA512_C=y
# CONFIG_MBEDTLS_SHA3_C is not set # CONFIG_MBEDTLS_SHA3_C is not set
CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y
@@ -1750,6 +1810,7 @@ CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM=y
# CONFIG_MBEDTLS_THREADING_C is not set # CONFIG_MBEDTLS_THREADING_C is not set
CONFIG_MBEDTLS_ERROR_STRINGS=y CONFIG_MBEDTLS_ERROR_STRINGS=y
CONFIG_MBEDTLS_FS_IO=y CONFIG_MBEDTLS_FS_IO=y
# CONFIG_MBEDTLS_ALLOW_WEAK_CERTIFICATE_VERIFICATION is not set
# end of mbedTLS # end of mbedTLS
# #
@@ -1800,25 +1861,12 @@ CONFIG_STDATOMIC_S32C1I_SPIRAM_WORKAROUND=y
# CONFIG_OPENTHREAD_ENABLED is not set # CONFIG_OPENTHREAD_ENABLED is not set
# #
# Thread Operational Dataset # OpenThread Spinel
# #
CONFIG_OPENTHREAD_NETWORK_NAME="OpenThread-ESP"
CONFIG_OPENTHREAD_MESH_LOCAL_PREFIX="fd00:db8:a0:0::/64"
CONFIG_OPENTHREAD_NETWORK_CHANNEL=15
CONFIG_OPENTHREAD_NETWORK_PANID=0x1234
CONFIG_OPENTHREAD_NETWORK_EXTPANID="dead00beef00cafe"
CONFIG_OPENTHREAD_NETWORK_MASTERKEY="00112233445566778899aabbccddeeff"
CONFIG_OPENTHREAD_NETWORK_PSKC="104810e2315100afd6bc9215a6bfac53"
# end of Thread Operational Dataset
CONFIG_OPENTHREAD_XTAL_ACCURACY=130
# CONFIG_OPENTHREAD_SPINEL_ONLY is not set # CONFIG_OPENTHREAD_SPINEL_ONLY is not set
CONFIG_OPENTHREAD_RX_ON_WHEN_IDLE=y # end of OpenThread Spinel
# # CONFIG_OPENTHREAD_DEBUG is not set
# Thread Address Query Config
#
# end of Thread Address Query Config
# end of OpenThread # end of OpenThread
# #
@@ -1827,6 +1875,7 @@ CONFIG_OPENTHREAD_RX_ON_WHEN_IDLE=y
CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y
CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y
CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y
CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_PATCH_VERSION=y
# end of Protocomm # end of Protocomm
# #
@@ -1878,6 +1927,7 @@ CONFIG_SPI_FLASH_SUSPEND_QVL_SUPPORTED=y
# CONFIG_SPI_FLASH_AUTO_SUSPEND is not set # CONFIG_SPI_FLASH_AUTO_SUSPEND is not set
CONFIG_SPI_FLASH_SUSPEND_TSUS_VAL_US=50 CONFIG_SPI_FLASH_SUSPEND_TSUS_VAL_US=50
# CONFIG_SPI_FLASH_FORCE_ENABLE_XMC_C_SUSPEND is not set # CONFIG_SPI_FLASH_FORCE_ENABLE_XMC_C_SUSPEND is not set
# CONFIG_SPI_FLASH_FORCE_ENABLE_C6_H2_SUSPEND is not set
# end of Optional and Experimental Features (READ DOCS FIRST) # end of Optional and Experimental Features (READ DOCS FIRST)
# end of Main Flash configuration # end of Main Flash configuration
@@ -2457,7 +2507,6 @@ CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
CONFIG_ESP32S3_DEBUG_OCDAWARE=y CONFIG_ESP32S3_DEBUG_OCDAWARE=y
CONFIG_BROWNOUT_DET=y CONFIG_BROWNOUT_DET=y
CONFIG_ESP32S3_BROWNOUT_DET=y CONFIG_ESP32S3_BROWNOUT_DET=y
CONFIG_ESP32S3_BROWNOUT_DET=y
CONFIG_BROWNOUT_DET_LVL_SEL_7=y CONFIG_BROWNOUT_DET_LVL_SEL_7=y
CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_7=y CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_7=y
# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set # CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set
@@ -2480,17 +2529,14 @@ CONFIG_ESP32_WIFI_ENABLED=y
CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10
CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32
CONFIG_ESP32_WIFI_STATIC_TX_BUFFER=y CONFIG_ESP32_WIFI_STATIC_TX_BUFFER=y
# CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER is not set
CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=0 CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=0
CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=16 CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=16
CONFIG_ESP32_WIFI_CACHE_TX_BUFFER_NUM=32
# CONFIG_ESP32_WIFI_CSI_ENABLED is not set # CONFIG_ESP32_WIFI_CSI_ENABLED is not set
CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
CONFIG_ESP32_WIFI_TX_BA_WIN=6 CONFIG_ESP32_WIFI_TX_BA_WIN=6
CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
CONFIG_ESP32_WIFI_RX_BA_WIN=6 CONFIG_ESP32_WIFI_RX_BA_WIN=6
CONFIG_ESP32_WIFI_RX_BA_WIN=6
# CONFIG_ESP32_WIFI_AMSDU_TX_ENABLED is not set
CONFIG_ESP32_WIFI_NVS_ENABLED=y CONFIG_ESP32_WIFI_NVS_ENABLED=y
CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y
# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set # CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set
@@ -2511,7 +2557,6 @@ CONFIG_WPA_MBEDTLS_TLS_CLIENT=y
# CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set # CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set
# CONFIG_WPA_WPS_STRICT is not set # CONFIG_WPA_WPS_STRICT is not set
# CONFIG_WPA_DEBUG_PRINT is not set # CONFIG_WPA_DEBUG_PRINT is not set
# CONFIG_WPA_TESTING_OPTIONS is not set
# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set # CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set
# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set # CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set
CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y