Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b2813d62a3 |
@@ -4,13 +4,12 @@ set(SOURCES
|
||||
"TM1640/TM1640.cpp"
|
||||
"SparkFunBQ27441/SparkFunBQ27441.cpp"
|
||||
"esp_lcd_ili9488/esp_lcd_ili9488.c"
|
||||
# "bottom_half.cpp"
|
||||
"bottom_half.cpp"
|
||||
"char_lcd.cpp"
|
||||
"game_info.cpp"
|
||||
"game_timer.cpp"
|
||||
"i2c_lcd_pcf8574.c"
|
||||
"i2c.cpp"
|
||||
"inputs.cpp"
|
||||
"leds.cpp"
|
||||
"perh.cpp"
|
||||
"power.cpp"
|
||||
|
||||
@@ -1,486 +0,0 @@
|
||||
#include "blk_box_drivers/inputs.hpp"
|
||||
|
||||
#include "bottom_half.h"
|
||||
#include "pins.h"
|
||||
#include "driver/i2c.h"
|
||||
#include "driver/gpio.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_err.h"
|
||||
|
||||
static const char *TAG = "INPUTS";
|
||||
|
||||
static TaskHandle_t expander_task_handle = NULL;
|
||||
|
||||
static i2c_master_dev_handle_t expander_i2c_dev_handle;
|
||||
|
||||
const static uint8_t REG_WHOAMI = 0x01;
|
||||
const static uint8_t REG_SW_VERSION = 0x02;
|
||||
const static uint8_t REG_EVENT_QUEUE_POP = 0x10;
|
||||
const static uint8_t REG_EVENT_QUEUE_LEN = 0x11;
|
||||
const static uint8_t REG_STATE_BUTTONS = 0x20;
|
||||
const static uint8_t REG_STATE_SWITCHES = 0x21;
|
||||
const static uint8_t REG_STATE_KEYPAD = 0x22;
|
||||
const static uint8_t REG_STATE_TOUCH = 0x23;
|
||||
const static uint8_t REG_STATE_RFID = 0x24;
|
||||
const static uint8_t REG_STATE_HALL = 0x25;
|
||||
const static uint8_t REG_STATE_CLOSE = 0x26;
|
||||
const static uint8_t REG_RESET = 0x30;
|
||||
const static uint8_t REG_HALL_SENSITIVITY = 0x31;
|
||||
const static uint8_t REG_CLOSE_SENSITIVITY = 0x32;
|
||||
const static uint8_t REG_SWITCH_TOUCH_EVENT = 0x33;
|
||||
|
||||
/// The global data for the expander peripheral.
|
||||
class ExpanderPeripheral {
|
||||
// TODO: change these to private
|
||||
// or even make this class hidden
|
||||
public:
|
||||
SemaphoreHandle_t state_mutex;
|
||||
InputsState state;
|
||||
|
||||
// channels
|
||||
QueueHandle_t button_press_events;
|
||||
QueueHandle_t button_release_events;
|
||||
QueueHandle_t switch_flip_events;
|
||||
QueueHandle_t switch_touch_events;
|
||||
QueueHandle_t touch_events;
|
||||
QueueHandle_t keypad_press_events;
|
||||
QueueHandle_t keypad_release_events;
|
||||
};
|
||||
|
||||
ExpanderPeripheral expander_peripheral_singleton;
|
||||
|
||||
// forward declarations
|
||||
static void get_events();
|
||||
static void handle_event(uint8_t event);
|
||||
static void handle_button_switch_event(uint8_t event);
|
||||
static void handle_keypad_event(uint8_t event);
|
||||
static void handle_touch_event(uint8_t event);
|
||||
static void handle_rfid_event(uint8_t event);
|
||||
static void handle_close_hal_event(uint8_t event);
|
||||
static void expander_task(void *arg);
|
||||
|
||||
// ISR handler
|
||||
static void IRAM_ATTR expander_isr_handler(void *arg) {
|
||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||
|
||||
if (expander_task_handle != NULL) {
|
||||
vTaskNotifyGiveFromISR(expander_task_handle, &xHigherPriorityTaskWoken);
|
||||
}
|
||||
|
||||
if (xHigherPriorityTaskWoken == pdTRUE) {
|
||||
portYIELD_FROM_ISR();
|
||||
}
|
||||
}
|
||||
|
||||
void init_expander() {
|
||||
ESP_LOGI(TAG, "Initializing expander...");
|
||||
|
||||
i2c_device_config_t dev_config = {
|
||||
.dev_addr_length = I2C_ADDR_BIT_LEN_7,
|
||||
.device_address = EXPANDER_I2C_ADDR,
|
||||
.scl_speed_hz = EXPANDER_I2C_SPEED,
|
||||
.scl_wait_us = 0, // default
|
||||
.flags = {
|
||||
.disable_ack_check = 0,
|
||||
}
|
||||
};
|
||||
|
||||
// setup interrupt on BOTTOM_PIN_INTERUPT
|
||||
gpio_config_t io_conf = {
|
||||
.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_NEGEDGE
|
||||
};
|
||||
|
||||
ESP_ERROR_CHECK(gpio_config(&io_conf));
|
||||
|
||||
// Install ISR service (only call once in your program)
|
||||
ESP_ERROR_CHECK(gpio_install_isr_service(0));
|
||||
|
||||
// Attach the ISR to the expander pin
|
||||
ESP_ERROR_CHECK(gpio_isr_handler_add(BOTTOM_PIN_INTERUPT, expander_isr_handler, NULL));
|
||||
|
||||
// verify the expander connection status by reading the WHOAMI register
|
||||
uint8_t read_buf[2] = {0};
|
||||
|
||||
i2c_master_write_read_device(I2C_NUM_0, BOTTOM_I2C_ADDR, ®_WHOAMI, 1, read_buf, 1, 1000);
|
||||
|
||||
if (read_buf[0] != EXPANDER_WHOAMI_VALUE) {
|
||||
ESP_LOGE(TAG, "WHOAMI mismatch, expected 0x%02X, got 0x%02X", EXPANDER_WHOAMI_VALUE, read_buf[0]);
|
||||
return;
|
||||
}
|
||||
|
||||
ESP_LOGD(TAG, "Expander WHOAMI check passed");
|
||||
|
||||
ESP_ERROR_CHECK(i2c_master_transmit_receive(expander_i2c_dev_handle, ®_SW_VERSION, 1, read_buf, 2, EXPANDER_TIMEOUT_MS));
|
||||
|
||||
// init the peripheral struct
|
||||
expander_peripheral_singleton.state_mutex = xSemaphoreCreateMutex();
|
||||
expander_peripheral_singleton.button_press_events= xQueueCreate(EXPANDER_EVENT_QUEUE_SIZE, sizeof(Button));
|
||||
expander_peripheral_singleton.button_release_events= xQueueCreate(EXPANDER_EVENT_QUEUE_SIZE, sizeof(Button));
|
||||
expander_peripheral_singleton.switch_flip_events= xQueueCreate(EXPANDER_EVENT_QUEUE_SIZE, sizeof(SwitchFlip));
|
||||
expander_peripheral_singleton.switch_touch_events= xQueueCreate(EXPANDER_EVENT_QUEUE_SIZE, sizeof(SwitchTouch));
|
||||
expander_peripheral_singleton.touch_events= xQueueCreate(EXPANDER_EVENT_QUEUE_SIZE, sizeof(TouchedReleased));
|
||||
expander_peripheral_singleton.keypad_press_events= xQueueCreate(EXPANDER_KEYPAD_QUEUE_SIZE, sizeof(KeypadKey));
|
||||
expander_peripheral_singleton.keypad_release_events= xQueueCreate(EXPANDER_KEYPAD_QUEUE_SIZE, sizeof(KeypadKey));
|
||||
|
||||
ESP_LOGI(TAG, "Expander initialized! SW version: v%d.%d", read_buf[0], read_buf[1]);
|
||||
|
||||
// Create the expander background worker task
|
||||
BaseType_t task_created = xTaskCreate(
|
||||
expander_task,
|
||||
"expander_task",
|
||||
4096,
|
||||
NULL,
|
||||
tskIDLE_PRIORITY + 1,
|
||||
&expander_task_handle
|
||||
);
|
||||
|
||||
if (task_created != pdPASS) {
|
||||
ESP_LOGE(TAG, "Failed to create expander task");
|
||||
}
|
||||
}
|
||||
|
||||
static void expander_task(void *arg) {
|
||||
(void)arg;
|
||||
|
||||
while (true) {
|
||||
get_events();
|
||||
|
||||
// Wait for interrupt notification (signal is sent when INT falls)
|
||||
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
|
||||
}
|
||||
}
|
||||
|
||||
static void get_events() {
|
||||
uint8_t recv;
|
||||
while (gpio_get_level(PIN_EXPANDER_INT) == 0) {
|
||||
ESP_ERROR_CHECK(i2c_master_transmit_receive(expander_i2c_dev_handle, ®_EVENT_QUEUE_POP, 1, &recv, 1, EXPANDER_TIMEOUT_MS));
|
||||
handle_event(recv);
|
||||
}
|
||||
}
|
||||
|
||||
static void handle_event(uint8_t event) {
|
||||
const uint8_t BUTTON_SWITCH = 0b000;
|
||||
const uint8_t KEYPAD = 0b001;
|
||||
const uint8_t TOUCH = 0b010;
|
||||
const uint8_t RFID = 0b011;
|
||||
|
||||
ESP_LOGD(TAG, "Expander event: 0b%08b (0x%02X)", event, event);
|
||||
|
||||
if (event == 0) {
|
||||
ESP_LOGE(TAG, "We read from event queue while it was empty!");
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t type_bits = event >> 5;
|
||||
|
||||
switch (type_bits) {
|
||||
case BUTTON_SWITCH:
|
||||
handle_button_switch_event(event);
|
||||
break;
|
||||
case KEYPAD:
|
||||
handle_keypad_event(event);
|
||||
break;
|
||||
case TOUCH:
|
||||
handle_touch_event(event);
|
||||
break;
|
||||
case RFID:
|
||||
handle_rfid_event(event);
|
||||
break;
|
||||
default:
|
||||
handle_close_hal_event(event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void handle_button_switch_event(uint8_t event) {
|
||||
const uint8_t PRESSED_NOT_RELEASED_BIT = 0b10000;
|
||||
const uint8_t SWITCH_NOT_BUTTON_BIT = 0b01000;
|
||||
const uint8_t SWITCH_UP_NOT_DOWN_BIT = 0b00100;
|
||||
const uint8_t NUMBER_MASK = 0b00011;
|
||||
|
||||
bool pressed = (event & PRESSED_NOT_RELEASED_BIT) != 0;
|
||||
uint8_t number = event & NUMBER_MASK;
|
||||
|
||||
if ((event & SWITCH_NOT_BUTTON_BIT) != 0) {
|
||||
// For now, we support two position switches by only looking at the switch up events
|
||||
bool switch_up = (event & SWITCH_UP_NOT_DOWN_BIT) != 0;
|
||||
if (!switch_up) {
|
||||
return;
|
||||
}
|
||||
|
||||
Switch sw = static_cast<Switch>(number);
|
||||
SwitchFlip sw_flip = SwitchFlip(sw, pressed);
|
||||
xQueueSendToBack(expander_peripheral_singleton.switch_flip_events, &sw_flip, 0);
|
||||
xSemaphoreTake(expander_peripheral_singleton.state_mutex, portMAX_DELAY);
|
||||
if (pressed) {
|
||||
// set
|
||||
expander_peripheral_singleton.state.switch_state |= 1 << number;
|
||||
} else {
|
||||
// clear
|
||||
expander_peripheral_singleton.state.switch_state &= ~(1 << number);
|
||||
}
|
||||
xSemaphoreGive(expander_peripheral_singleton.state_mutex);
|
||||
} else {
|
||||
// button
|
||||
Button button = static_cast<Button>(number);
|
||||
if (pressed) {
|
||||
xQueueSendToBack(expander_peripheral_singleton.button_press_events, &button, 0);
|
||||
xSemaphoreTake(expander_peripheral_singleton.state_mutex, portMAX_DELAY);
|
||||
expander_peripheral_singleton.state.button_state |= 1 << number;
|
||||
xSemaphoreGive(expander_peripheral_singleton.state_mutex);
|
||||
} else {
|
||||
xQueueSendToBack(expander_peripheral_singleton.button_release_events, &button, 0);
|
||||
xSemaphoreTake(expander_peripheral_singleton.state_mutex, portMAX_DELAY);
|
||||
expander_peripheral_singleton.state.button_state &= ~(1 << number);
|
||||
xSemaphoreGive(expander_peripheral_singleton.state_mutex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void handle_keypad_event(uint8_t event) {
|
||||
const uint8_t PRESSED_NOT_RELEASED_BIT = 0b10000;
|
||||
const uint8_t KEY_MASK = 0b1111;
|
||||
|
||||
bool pressed = (event & PRESSED_NOT_RELEASED_BIT) != 0;
|
||||
uint8_t number = event & KEY_MASK;
|
||||
KeypadKey key = static_cast<KeypadKey>(number);
|
||||
|
||||
// starcode system gets first dibs
|
||||
// TODO: do starcode inbetweener
|
||||
// if starcode_handle_keypad(key, pressed).await {
|
||||
// return;
|
||||
// }
|
||||
|
||||
if (pressed) {
|
||||
xQueueSendToBack(expander_peripheral_singleton.keypad_press_events, &key, 0);
|
||||
xSemaphoreTake(expander_peripheral_singleton.state_mutex, portMAX_DELAY);
|
||||
expander_peripheral_singleton.state.keypad_state |= 1 << number;
|
||||
xSemaphoreGive(expander_peripheral_singleton.state_mutex);
|
||||
} else {
|
||||
xQueueSendToBack(expander_peripheral_singleton.keypad_release_events, &key, 0);
|
||||
xSemaphoreTake(expander_peripheral_singleton.state_mutex, portMAX_DELAY);
|
||||
expander_peripheral_singleton.state.keypad_state &= ~(1 << number);
|
||||
xSemaphoreGive(expander_peripheral_singleton.state_mutex);
|
||||
}
|
||||
}
|
||||
|
||||
static void handle_touch_event(uint8_t event) {
|
||||
const uint8_t TOUCHED_NOT_UNTOUCHED_BIT = 0b10000;
|
||||
const uint8_t SENSOR_MASK = 0b0111;
|
||||
const uint8_t FINGERPRINT_BIT = 0b0100;
|
||||
|
||||
bool touched = (event & TOUCHED_NOT_UNTOUCHED_BIT) != 0;
|
||||
uint8_t sensor = event & SENSOR_MASK;
|
||||
|
||||
if ((sensor & FINGERPRINT_BIT) != 0) {
|
||||
TouchedReleased touch_state = static_cast<TouchedReleased>(touched);
|
||||
xQueueSendToBack(expander_peripheral_singleton.touch_events, &touch_state, 0);
|
||||
} else {
|
||||
Switch sw = static_cast<Switch>(sensor);
|
||||
SwitchTouch sw_touch = SwitchTouch(sw, touched);
|
||||
xQueueSendToBack(expander_peripheral_singleton.switch_touch_events, &sw_touch, 0);
|
||||
}
|
||||
|
||||
xSemaphoreTake(expander_peripheral_singleton.state_mutex, portMAX_DELAY);
|
||||
if (touched) {
|
||||
expander_peripheral_singleton.state.touch_state |= 1 << sensor;
|
||||
} else {
|
||||
expander_peripheral_singleton.state.touch_state &= ~(1 << sensor);
|
||||
}
|
||||
xSemaphoreGive(expander_peripheral_singleton.state_mutex);
|
||||
}
|
||||
|
||||
static void handle_rfid_event(uint8_t event) {
|
||||
// TODO: impl
|
||||
(void)event;
|
||||
}
|
||||
|
||||
static void handle_close_hal_event(uint8_t event) {
|
||||
// TODO: impl
|
||||
(void)event;
|
||||
}
|
||||
|
||||
// InputsController implementations
|
||||
|
||||
/// Clears all events waiting in the queues.
|
||||
void InputsController::clear_all_events() {
|
||||
xQueueReset(expander_peripheral_singleton.button_press_events);
|
||||
xQueueReset(expander_peripheral_singleton.button_release_events);
|
||||
xQueueReset(expander_peripheral_singleton.switch_flip_events);
|
||||
xQueueReset(expander_peripheral_singleton.switch_touch_events);
|
||||
xQueueReset(expander_peripheral_singleton.touch_events);
|
||||
xQueueReset(expander_peripheral_singleton.keypad_press_events);
|
||||
xQueueReset(expander_peripheral_singleton.keypad_release_events);
|
||||
}
|
||||
|
||||
InputsState InputsController::get_input_state() {
|
||||
xSemaphoreTake(expander_peripheral_singleton.state_mutex, portMAX_DELAY);
|
||||
InputsState state_copy = expander_peripheral_singleton.state;
|
||||
xSemaphoreGive(expander_peripheral_singleton.state_mutex);
|
||||
return state_copy;
|
||||
}
|
||||
|
||||
/// Returns `true` iff there is a button press event waiting.
|
||||
bool InputsController::has_button_press() {
|
||||
return uxQueueMessagesWaiting(expander_peripheral_singleton.button_press_events) > 0;
|
||||
}
|
||||
|
||||
/// Gets the next button press event (if any).
|
||||
std::optional<Button> InputsController::get_button_press() {
|
||||
Button b;
|
||||
if (xQueueReceive(expander_peripheral_singleton.button_press_events, &b, 0) == pdTRUE) {
|
||||
return b;
|
||||
}
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
/// Gets the next button press event, waiting if neccesary.
|
||||
Button InputsController::wait_button_press() {
|
||||
Button b;
|
||||
xQueueReceive(expander_peripheral_singleton.button_press_events, &b, portMAX_DELAY);
|
||||
return b;
|
||||
}
|
||||
|
||||
/// Gets the current state of the buttons.
|
||||
uint8_t InputsController::button_state() {
|
||||
xSemaphoreTake(expander_peripheral_singleton.state_mutex, portMAX_DELAY);
|
||||
uint8_t value = expander_peripheral_singleton.state.button_state;
|
||||
xSemaphoreGive(expander_peripheral_singleton.state_mutex);
|
||||
return value;
|
||||
}
|
||||
|
||||
/// Returns `true` iff there is a button release event waiting.
|
||||
bool InputsController::has_button_release() {
|
||||
return uxQueueMessagesWaiting(expander_peripheral_singleton.button_release_events) > 0;
|
||||
}
|
||||
|
||||
/// Gets the next button release event (if any).
|
||||
std::optional<Button> InputsController::get_button_release() {
|
||||
Button b;
|
||||
if (xQueueReceive(expander_peripheral_singleton.button_release_events, &b, 0) == pdTRUE) {
|
||||
return b;
|
||||
}
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
/// Gets the next button release event, waiting if neccesary.
|
||||
Button InputsController::wait_button_release() {
|
||||
Button b;
|
||||
xQueueReceive(expander_peripheral_singleton.button_release_events, &b, portMAX_DELAY);
|
||||
return b;
|
||||
}
|
||||
|
||||
/// Returns `true` iff there is a switch flip event waiting.
|
||||
bool InputsController::has_switch_flip() {
|
||||
return uxQueueMessagesWaiting(expander_peripheral_singleton.switch_flip_events) > 0;
|
||||
}
|
||||
|
||||
/// Gets the next switch flip event (if any).
|
||||
std::optional<SwitchFlip> InputsController::get_switch_flip() {
|
||||
SwitchFlip s;
|
||||
if (xQueueReceive(expander_peripheral_singleton.switch_flip_events, &s, 0) == pdTRUE) {
|
||||
return s;
|
||||
}
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
/// Gets the next switch flip event, waiting if neccesary.
|
||||
SwitchFlip InputsController::wait_switch_flip() {
|
||||
SwitchFlip s;
|
||||
xQueueReceive(expander_peripheral_singleton.switch_flip_events, &s, portMAX_DELAY);
|
||||
return s;
|
||||
}
|
||||
|
||||
/// Gets the current state of the switches.
|
||||
uint8_t InputsController::switch_state() {
|
||||
xSemaphoreTake(expander_peripheral_singleton.state_mutex, portMAX_DELAY);
|
||||
uint8_t value = expander_peripheral_singleton.state.switch_state;
|
||||
xSemaphoreGive(expander_peripheral_singleton.state_mutex);
|
||||
return value;
|
||||
}
|
||||
|
||||
/// Returns `true` iff there is a switch touch event waiting.
|
||||
bool InputsController::has_switch_touch() {
|
||||
return uxQueueMessagesWaiting(expander_peripheral_singleton.switch_touch_events) > 0;
|
||||
}
|
||||
|
||||
/// Gets the next switch touch event (if any).
|
||||
std::optional<SwitchTouch> InputsController::get_switch_touch() {
|
||||
SwitchTouch s;
|
||||
if (xQueueReceive(expander_peripheral_singleton.switch_touch_events, &s, 0) == pdTRUE) {
|
||||
return s;
|
||||
}
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
/// Gets the next switch touch event, waiting if neccesary.
|
||||
SwitchTouch InputsController::wait_switch_touch() {
|
||||
SwitchTouch s;
|
||||
xQueueReceive(expander_peripheral_singleton.switch_touch_events, &s, portMAX_DELAY);
|
||||
return s;
|
||||
}
|
||||
|
||||
/// Gets the current state of the touch sensors.
|
||||
uint8_t InputsController::switch_touch_state() {
|
||||
xSemaphoreTake(expander_peripheral_singleton.state_mutex, portMAX_DELAY);
|
||||
uint8_t value = expander_peripheral_singleton.state.touch_state;
|
||||
xSemaphoreGive(expander_peripheral_singleton.state_mutex);
|
||||
return value;
|
||||
}
|
||||
|
||||
/// Returns `true` iff there is a keypad press event waiting.
|
||||
bool InputsController::has_keypad_press() {
|
||||
return uxQueueMessagesWaiting(expander_peripheral_singleton.keypad_press_events) > 0;
|
||||
}
|
||||
|
||||
/// Gets the next keypad press event (if any).
|
||||
std::optional<KeypadKey> InputsController::get_keypad_press() {
|
||||
KeypadKey k;
|
||||
if (xQueueReceive(expander_peripheral_singleton.keypad_press_events, &k, 0) == pdTRUE) {
|
||||
return k;
|
||||
}
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
/// Gets the next keypad press event, waiting if neccesary.
|
||||
KeypadKey InputsController::wait_keypad_press() {
|
||||
KeypadKey k;
|
||||
xQueueReceive(expander_peripheral_singleton.keypad_press_events, &k, portMAX_DELAY);
|
||||
return k;
|
||||
}
|
||||
|
||||
/// Returns `true` iff there is a keypad release event waiting.
|
||||
bool InputsController::has_keypad_release() {
|
||||
return uxQueueMessagesWaiting(expander_peripheral_singleton.keypad_release_events) > 0;
|
||||
}
|
||||
|
||||
/// Gets the next keypad release event (if any).
|
||||
std::optional<KeypadKey> InputsController::get_keypad_release() {
|
||||
KeypadKey k;
|
||||
if (xQueueReceive(expander_peripheral_singleton.keypad_release_events, &k, 0) == pdTRUE) {
|
||||
return k;
|
||||
}
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
/// Gets the next keypad release event, waiting if neccesary.
|
||||
KeypadKey InputsController::wait_keypad_release() {
|
||||
KeypadKey k;
|
||||
xQueueReceive(expander_peripheral_singleton.keypad_release_events, &k, portMAX_DELAY);
|
||||
return k;
|
||||
}
|
||||
|
||||
/// Gets the current state of the keypad.
|
||||
uint16_t InputsController::keypad_state() {
|
||||
xSemaphoreTake(expander_peripheral_singleton.state_mutex, portMAX_DELAY);
|
||||
uint16_t value = expander_peripheral_singleton.state.keypad_state;
|
||||
xSemaphoreGive(expander_peripheral_singleton.state_mutex);
|
||||
return value;
|
||||
}
|
||||
|
||||
+102
-48
@@ -13,19 +13,102 @@
|
||||
#include "helper.h"
|
||||
|
||||
#include "steps/step0.h"
|
||||
#include "steps/step1.h"
|
||||
#include "steps/step2.h"
|
||||
#include "steps/step3.h"
|
||||
#include "steps/step4.h"
|
||||
#include "steps/step5.h"
|
||||
#include "steps/step6.h"
|
||||
#include "steps/p001_step1.h"
|
||||
#include "steps/p001_step2.h"
|
||||
#include "steps/p001_step3.h"
|
||||
#include "steps/p001_step4.h"
|
||||
#include "steps/p001_step5.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";
|
||||
uint32_t initial_game_time = 90*60*1000 + 1000;
|
||||
uint32_t skip_to_step = 0;
|
||||
uint32_t current_step = 0;
|
||||
uint32_t puzzle = 0;
|
||||
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) {
|
||||
printf("app_main\n");
|
||||
|
||||
@@ -40,49 +123,20 @@ extern "C" void app_main(void) {
|
||||
lcd_do_splash();
|
||||
step0();
|
||||
|
||||
if (puzzle == 1) {
|
||||
do_p001();
|
||||
} else {
|
||||
do_p002();
|
||||
}
|
||||
|
||||
// set_recording_source(stdout, false);
|
||||
FILE* record_file = fopen(MOUNT_POINT "/record.txt", "w");
|
||||
if (record_file == nullptr) {
|
||||
ESP_LOGE("main", "failed to open record.txt");
|
||||
}
|
||||
set_recording_source(record_file, true);
|
||||
start_recording();
|
||||
// FILE* record_file = fopen(MOUNT_POINT "/record.txt", "w");
|
||||
// if (record_file == nullptr) {
|
||||
// ESP_LOGE("main", "failed to open record.txt");
|
||||
// }
|
||||
// set_recording_source(record_file, true);
|
||||
// start_recording();
|
||||
|
||||
set_game_time(initial_game_time);
|
||||
start_game_timer();
|
||||
total_strikes = 0;
|
||||
clean_bomb();
|
||||
current_step = 1;
|
||||
if (skip_to_step <= 1) step1();
|
||||
step_finish_times[current_step-1] = get_game_time();
|
||||
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();
|
||||
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();
|
||||
// stop_recording();
|
||||
|
||||
}
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
set(SOURCES
|
||||
"setup_wires.cpp"
|
||||
"step0.cpp"
|
||||
"step1.cpp"
|
||||
"step2.cpp"
|
||||
"step3.cpp"
|
||||
"step4.cpp"
|
||||
"step5.cpp"
|
||||
"step6.cpp"
|
||||
"p001_step1.cpp"
|
||||
"p001_step2.cpp"
|
||||
"p001_step3.cpp"
|
||||
"p001_step4.cpp"
|
||||
"p001_step5.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"
|
||||
)
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "step1.h"
|
||||
#include "p001_step1.h"
|
||||
|
||||
__attribute__((unused))
|
||||
static const char *TAG = "step1";
|
||||
@@ -275,7 +275,7 @@ static bool play_part(uint32_t time) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void step1(void) {
|
||||
void p001_step1(void) {
|
||||
while (get_switch_flipped(nullptr));
|
||||
|
||||
init_step();
|
||||
@@ -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))
|
||||
static const char *TAG = "step2";
|
||||
@@ -91,7 +91,7 @@ static void new_puzzle(void) {
|
||||
set_module_sseg_raw(display_map);
|
||||
}
|
||||
|
||||
void step2(void) {
|
||||
void p001_step2(void) {
|
||||
KeypadKey key;
|
||||
int solved_times = 0;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef STEP_2_H
|
||||
#define STEP_2_H
|
||||
#ifndef P001_STEP_2_H
|
||||
#define P001_STEP_2_H
|
||||
|
||||
#include "../drivers/all.h"
|
||||
#include "../helper.h"
|
||||
@@ -7,6 +7,6 @@
|
||||
#include <random>
|
||||
#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 THREE_SECOND_TIME 90'000
|
||||
@@ -72,7 +72,7 @@ static bool one_second();
|
||||
static bool three_second();
|
||||
static bool six_second();
|
||||
|
||||
void step3(void) {
|
||||
void p001_step3(void) {
|
||||
SemaphoreHandle_t continue_sem = xSemaphoreCreateBinary();
|
||||
if (continue_sem == nullptr) {
|
||||
ESP_LOGE(TAG, "could not create semaphore");
|
||||
@@ -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))
|
||||
static const char *TAG = "step4";
|
||||
@@ -379,7 +379,7 @@ static void fail() {
|
||||
}
|
||||
}
|
||||
|
||||
void step4() {
|
||||
void p001_step4() {
|
||||
// TODO: extract to helper function
|
||||
SemaphoreHandle_t continue_sem = xSemaphoreCreateBinary();
|
||||
if (continue_sem == nullptr) {
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef STEP_4_H
|
||||
#define STEP_4_H
|
||||
#ifndef P001_STEP_4_H
|
||||
#define P001_STEP_4_H
|
||||
|
||||
#include <random>
|
||||
#include "../drivers/all.h"
|
||||
@@ -9,6 +9,6 @@
|
||||
#define TETRIS_USE_FLASH_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_PLANK 40'000
|
||||
@@ -178,7 +178,7 @@ bool submit_6(bool* buttons_cycling, bool button_turned_on, int led_off) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void step5(void) {
|
||||
void p001_step5(void) {
|
||||
SemaphoreHandle_t continue_sem = xSemaphoreCreateBinary();
|
||||
if (continue_sem == nullptr) {
|
||||
ESP_LOGE(TAG, "could not create semaphore");
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef STEP_5_H
|
||||
#define STEP_5_H
|
||||
#ifndef P001_STEP_5_H
|
||||
#define P001_STEP_5_H
|
||||
|
||||
#include "../drivers/all.h"
|
||||
#include "../helper.h"
|
||||
@@ -11,6 +11,6 @@
|
||||
#include <cmath>
|
||||
#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))
|
||||
static const char *TAG = "step6";
|
||||
|
||||
static uint8_t cut_wires = 0;
|
||||
|
||||
void step6(void) {
|
||||
void p001_step6(void) {
|
||||
get_cut_wires();
|
||||
clear_all_pressed_released();
|
||||
|
||||
@@ -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 */
|
||||
@@ -0,0 +1,10 @@
|
||||
#include "p002_step1.h"
|
||||
|
||||
__attribute__((unused))
|
||||
static const char *TAG = "step1";
|
||||
|
||||
void p002_step1(void) {
|
||||
// TODO: implement step 1
|
||||
}
|
||||
|
||||
|
||||
@@ -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 */
|
||||
@@ -0,0 +1,8 @@
|
||||
#include "p002_step2.h"
|
||||
|
||||
__attribute__((unused))
|
||||
static const char *TAG = "step2";
|
||||
|
||||
void p002_step2(void) {
|
||||
// TODO: implement step 2
|
||||
}
|
||||
@@ -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 */
|
||||
@@ -0,0 +1,8 @@
|
||||
#include "p002_step3.h"
|
||||
|
||||
__attribute__((unused))
|
||||
static const char *TAG = "step3";
|
||||
|
||||
void p002_step3(void) {
|
||||
// TODO: implement step 3
|
||||
}
|
||||
@@ -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 */
|
||||
@@ -0,0 +1,8 @@
|
||||
#include "p002_step4.h"
|
||||
|
||||
__attribute__((unused))
|
||||
static const char *TAG = "step4";
|
||||
|
||||
void p002_step4(void) {
|
||||
// TODO: implement step 4
|
||||
}
|
||||
@@ -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 */
|
||||
@@ -0,0 +1,8 @@
|
||||
#include "p002_step5.h"
|
||||
|
||||
__attribute__((unused))
|
||||
static const char *TAG = "step5";
|
||||
|
||||
void p002_step5(void) {
|
||||
// TODO: implement step 5
|
||||
}
|
||||
@@ -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 */
|
||||
@@ -0,0 +1,8 @@
|
||||
#include "p002_step6.h"
|
||||
|
||||
__attribute__((unused))
|
||||
static const char *TAG = "step6";
|
||||
|
||||
void p002_step6(void) {
|
||||
// TODO: implement step 6
|
||||
}
|
||||
@@ -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 */
|
||||
+24
-9
@@ -5,6 +5,7 @@ static const char* TAG = "step0";
|
||||
|
||||
extern uint32_t initial_game_time;
|
||||
extern uint32_t skip_to_step;
|
||||
extern uint32_t puzzle;
|
||||
|
||||
static void set_game_time();
|
||||
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_step5() { skip_to_step = 5; }
|
||||
static void skip_to_step6() { skip_to_step = 6; }
|
||||
static void try_step1() { clean_bomb(); step1(); }
|
||||
static void try_step2() { clean_bomb(); step2(); }
|
||||
static void try_step3() { clean_bomb(); step3(); }
|
||||
static void try_step4() { clean_bomb(); step4(); }
|
||||
static void try_step5() { clean_bomb(); step5(); }
|
||||
static void try_step6() { clean_bomb(); step6(); }
|
||||
static void try_step1() { clean_bomb(); p001_step1(); }
|
||||
static void try_step2() { clean_bomb(); p001_step2(); }
|
||||
static void try_step3() { clean_bomb(); p001_step3(); }
|
||||
static void try_step4() { clean_bomb(); p001_step4(); }
|
||||
static void try_step5() { clean_bomb(); p001_step5(); }
|
||||
static void try_step6() { clean_bomb(); p001_step6(); }
|
||||
static void issue_strike() { strike("Strike Issued"); }
|
||||
static void flashbang();
|
||||
static void debug_switches();
|
||||
@@ -45,6 +46,13 @@ static void replay_last() {
|
||||
start_playback();
|
||||
}
|
||||
|
||||
static void do_p001() {
|
||||
puzzle = 1;
|
||||
}
|
||||
|
||||
static void do_p002() {
|
||||
puzzle = 2;
|
||||
}
|
||||
|
||||
void step0() {
|
||||
led_set(IndicatorLED::LED_SPEAKER, LEDColor::LED_COLOR_BLUE);
|
||||
@@ -59,15 +67,22 @@ void step0() {
|
||||
StarCodeEntry star_codes[] = {
|
||||
{
|
||||
.code = "9819",
|
||||
.display_text = "Diffusal Initiated",
|
||||
.display_text = "Start P001",
|
||||
.delay_us = 2'000'000,
|
||||
.callback = nullptr,
|
||||
.callback = do_p001,
|
||||
.triggered_sem = continue_sem,
|
||||
},
|
||||
{
|
||||
.code = "3141",
|
||||
.display_text = "Start P002",
|
||||
.delay_us = 2'000'000,
|
||||
.callback = do_p002,
|
||||
.triggered_sem = continue_sem,
|
||||
},
|
||||
{
|
||||
.code = "59861",
|
||||
.display_text = "Setup Wires",
|
||||
.delay_us = 10'000'000,
|
||||
.delay_us = 2'000'000,
|
||||
.callback = setup_wires,
|
||||
.triggered_sem = nullptr,
|
||||
},
|
||||
|
||||
+6
-6
@@ -4,12 +4,12 @@
|
||||
#include "../drivers/all.h"
|
||||
|
||||
#include "setup_wires.h"
|
||||
#include "step1.h"
|
||||
#include "step2.h"
|
||||
#include "step3.h"
|
||||
#include "step4.h"
|
||||
#include "step5.h"
|
||||
#include "step6.h"
|
||||
#include "p001_step1.h"
|
||||
#include "p001_step2.h"
|
||||
#include "p001_step3.h"
|
||||
#include "p001_step4.h"
|
||||
#include "p001_step5.h"
|
||||
#include "p001_step6.h"
|
||||
|
||||
/// Wait for "*9819"
|
||||
void step0(void);
|
||||
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# 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_REGIONS_MAX_NUM=8
|
||||
@@ -11,6 +11,7 @@ CONFIG_SOC_PHY_SUPPORTED=y
|
||||
CONFIG_SOC_WIFI_SUPPORTED=y
|
||||
CONFIG_SOC_TWAI_SUPPORTED=y
|
||||
CONFIG_SOC_GDMA_SUPPORTED=y
|
||||
CONFIG_SOC_UHCI_SUPPORTED=y
|
||||
CONFIG_SOC_AHB_GDMA_SUPPORTED=y
|
||||
CONFIG_SOC_GPTIMER_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_LP_PERIPH_SHARE_INTERRUPT=y
|
||||
CONFIG_SOC_PM_SUPPORTED=y
|
||||
CONFIG_SOC_SIMD_INSTRUCTION_SUPPORTED=y
|
||||
CONFIG_SOC_XTAL_SUPPORT_40M=y
|
||||
CONFIG_SOC_APPCPU_HAS_CLOCK_GATING_BUG=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_CPU_BREAKPOINTS_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_KEY_PARAM_MD_IV_LENGTH=16
|
||||
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_SUPPORT_RX_PINGPONG=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_AUTO_STOP=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_HOLD_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_CLK_SUPPORT_APB=y
|
||||
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_APB=y
|
||||
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_NUM=15
|
||||
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_RTC_CLK=y
|
||||
CONFIG_SOC_UART_SUPPORT_XTAL_CLK=y
|
||||
CONFIG_SOC_UHCI_NUM=1
|
||||
CONFIG_SOC_USB_OTG_PERIPH_NUM=1
|
||||
CONFIG_SOC_SHA_DMA_MAX_BUFFER_SIZE=3968
|
||||
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_GCMP_SUPPORT=y
|
||||
CONFIG_SOC_WIFI_WAPI_SUPPORT=y
|
||||
CONFIG_SOC_WIFI_TXOP_SUPPORT=y
|
||||
CONFIG_SOC_WIFI_CSI_SUPPORT=y
|
||||
CONFIG_SOC_WIFI_MESH_SUPPORT=y
|
||||
CONFIG_SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW=y
|
||||
@@ -593,7 +601,21 @@ CONFIG_APPTRACE_LOCK_ENABLE=y
|
||||
# Bluetooth
|
||||
#
|
||||
# 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
|
||||
|
||||
#
|
||||
@@ -617,6 +639,7 @@ CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y
|
||||
# Legacy ADC Driver Configuration
|
||||
#
|
||||
# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set
|
||||
# CONFIG_ADC_SKIP_LEGACY_CONFLICT_CHECK is not set
|
||||
|
||||
#
|
||||
# Legacy ADC Calibration Configuration
|
||||
@@ -629,42 +652,55 @@ CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y
|
||||
# Legacy MCPWM Driver Configurations
|
||||
#
|
||||
# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set
|
||||
# CONFIG_MCPWM_SKIP_LEGACY_CONFLICT_CHECK is not set
|
||||
# end of Legacy MCPWM Driver Configurations
|
||||
|
||||
#
|
||||
# Legacy Timer Group Driver Configurations
|
||||
#
|
||||
# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set
|
||||
# CONFIG_GPTIMER_SKIP_LEGACY_CONFLICT_CHECK is not set
|
||||
# end of Legacy Timer Group Driver Configurations
|
||||
|
||||
#
|
||||
# Legacy RMT Driver Configurations
|
||||
#
|
||||
# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set
|
||||
# CONFIG_RMT_SKIP_LEGACY_CONFLICT_CHECK is not set
|
||||
# end of Legacy RMT Driver Configurations
|
||||
|
||||
#
|
||||
# Legacy I2S Driver Configurations
|
||||
#
|
||||
# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set
|
||||
# CONFIG_I2S_SKIP_LEGACY_CONFLICT_CHECK is not set
|
||||
# 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
|
||||
#
|
||||
# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set
|
||||
# CONFIG_PCNT_SKIP_LEGACY_CONFLICT_CHECK is not set
|
||||
# end of Legacy PCNT Driver Configurations
|
||||
|
||||
#
|
||||
# Legacy SDM Driver Configurations
|
||||
#
|
||||
# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set
|
||||
# CONFIG_SDM_SKIP_LEGACY_CONFLICT_CHECK is not set
|
||||
# end of Legacy SDM Driver Configurations
|
||||
|
||||
#
|
||||
# Legacy Temperature Sensor Driver Configurations
|
||||
#
|
||||
# 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 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_PSK_VERIFICATION is not set
|
||||
# CONFIG_ESP_TLS_INSECURE is not set
|
||||
CONFIG_ESP_TLS_DYN_BUF_STRATEGY_SUPPORTED=y
|
||||
# end of ESP-TLS
|
||||
|
||||
#
|
||||
@@ -724,6 +761,7 @@ CONFIG_ESP_ERR_TO_NAME_LOOKUP=y
|
||||
CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y
|
||||
# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM 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
|
||||
# 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
|
||||
# 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
|
||||
#
|
||||
@@ -842,6 +888,13 @@ CONFIG_ESP_GDBSTUB_SUPPORT_TASKS=y
|
||||
CONFIG_ESP_GDBSTUB_MAX_TASKS=32
|
||||
# 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
|
||||
#
|
||||
@@ -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_FULL is not set
|
||||
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_RECORD_USED_TIME is not set
|
||||
CONFIG_ESP_PHY_IRAM_OPT=y
|
||||
# CONFIG_ESP_PHY_DEBUG is not set
|
||||
# end of PHY
|
||||
|
||||
#
|
||||
@@ -1052,6 +1109,7 @@ CONFIG_SPIRAM_CS_IO=26
|
||||
CONFIG_SPIRAM_SPEED_40M=y
|
||||
CONFIG_SPIRAM_SPEED=40
|
||||
CONFIG_SPIRAM_BOOT_INIT=y
|
||||
CONFIG_SPIRAM_PRE_CONFIGURE_MEMORY_PROTECTION=y
|
||||
# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set
|
||||
# CONFIG_SPIRAM_USE_MEMMAP is not set
|
||||
# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set
|
||||
@@ -1216,9 +1274,9 @@ CONFIG_ESP_WIFI_ENABLED=y
|
||||
CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10
|
||||
CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32
|
||||
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_STATIC_TX_BUFFER_NUM=16
|
||||
CONFIG_ESP_WIFI_CACHE_TX_BUFFER_NUM=32
|
||||
CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y
|
||||
# CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set
|
||||
CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0
|
||||
@@ -1228,7 +1286,6 @@ CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y
|
||||
CONFIG_ESP_WIFI_TX_BA_WIN=6
|
||||
CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y
|
||||
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_TASK_PINNED_TO_CORE_0=y
|
||||
# CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_1 is not set
|
||||
@@ -1270,7 +1327,6 @@ CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y
|
||||
# end of WPS Configuration Options
|
||||
|
||||
# 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_ENT_FREE_DYNAMIC_BUFFER is not set
|
||||
# end of Wi-Fi
|
||||
@@ -1400,7 +1456,6 @@ CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2
|
||||
CONFIG_HAL_WDT_USE_ROM_IMPL=y
|
||||
CONFIG_HAL_SPI_MASTER_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)
|
||||
|
||||
#
|
||||
@@ -1489,6 +1544,7 @@ CONFIG_LWIP_DHCPS=y
|
||||
CONFIG_LWIP_DHCPS_LEASE_UNIT=60
|
||||
CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8
|
||||
CONFIG_LWIP_DHCPS_STATIC_ENTRIES=y
|
||||
CONFIG_LWIP_DHCPS_ADD_DNS=y
|
||||
# end of DHCP server
|
||||
|
||||
# CONFIG_LWIP_AUTOIP is not set
|
||||
@@ -1640,6 +1696,7 @@ CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096
|
||||
# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set
|
||||
# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set
|
||||
CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y
|
||||
# CONFIG_MBEDTLS_SSL_KEYING_MATERIAL_EXPORT is not set
|
||||
CONFIG_MBEDTLS_PKCS7_C=y
|
||||
# end of mbedTLS v3.x related
|
||||
|
||||
@@ -1673,6 +1730,7 @@ CONFIG_MBEDTLS_HAVE_TIME=y
|
||||
# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set
|
||||
# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set
|
||||
CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y
|
||||
CONFIG_MBEDTLS_SHA1_C=y
|
||||
CONFIG_MBEDTLS_SHA512_C=y
|
||||
# CONFIG_MBEDTLS_SHA3_C is not set
|
||||
CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y
|
||||
@@ -1752,6 +1810,7 @@ CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM=y
|
||||
# CONFIG_MBEDTLS_THREADING_C is not set
|
||||
CONFIG_MBEDTLS_ERROR_STRINGS=y
|
||||
CONFIG_MBEDTLS_FS_IO=y
|
||||
# CONFIG_MBEDTLS_ALLOW_WEAK_CERTIFICATE_VERIFICATION is not set
|
||||
# end of mbedTLS
|
||||
|
||||
#
|
||||
@@ -1802,25 +1861,12 @@ CONFIG_STDATOMIC_S32C1I_SPIRAM_WORKAROUND=y
|
||||
# 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_RX_ON_WHEN_IDLE=y
|
||||
# end of OpenThread Spinel
|
||||
|
||||
#
|
||||
# Thread Address Query Config
|
||||
#
|
||||
# end of Thread Address Query Config
|
||||
# CONFIG_OPENTHREAD_DEBUG is not set
|
||||
# end of OpenThread
|
||||
|
||||
#
|
||||
@@ -1829,6 +1875,7 @@ CONFIG_OPENTHREAD_RX_ON_WHEN_IDLE=y
|
||||
CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y
|
||||
CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y
|
||||
CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y
|
||||
CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_PATCH_VERSION=y
|
||||
# end of Protocomm
|
||||
|
||||
#
|
||||
@@ -1880,6 +1927,7 @@ CONFIG_SPI_FLASH_SUSPEND_QVL_SUPPORTED=y
|
||||
# CONFIG_SPI_FLASH_AUTO_SUSPEND is not set
|
||||
CONFIG_SPI_FLASH_SUSPEND_TSUS_VAL_US=50
|
||||
# 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 Main Flash configuration
|
||||
|
||||
@@ -2459,7 +2507,6 @@ CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
|
||||
CONFIG_ESP32S3_DEBUG_OCDAWARE=y
|
||||
CONFIG_BROWNOUT_DET=y
|
||||
CONFIG_ESP32S3_BROWNOUT_DET=y
|
||||
CONFIG_ESP32S3_BROWNOUT_DET=y
|
||||
CONFIG_BROWNOUT_DET_LVL_SEL_7=y
|
||||
CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_7=y
|
||||
# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set
|
||||
@@ -2482,17 +2529,14 @@ CONFIG_ESP32_WIFI_ENABLED=y
|
||||
CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10
|
||||
CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32
|
||||
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_STATIC_TX_BUFFER_NUM=16
|
||||
CONFIG_ESP32_WIFI_CACHE_TX_BUFFER_NUM=32
|
||||
# CONFIG_ESP32_WIFI_CSI_ENABLED is not set
|
||||
CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
|
||||
CONFIG_ESP32_WIFI_TX_BA_WIN=6
|
||||
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_AMSDU_TX_ENABLED is not set
|
||||
CONFIG_ESP32_WIFI_NVS_ENABLED=y
|
||||
CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y
|
||||
# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set
|
||||
@@ -2513,7 +2557,6 @@ CONFIG_WPA_MBEDTLS_TLS_CLIENT=y
|
||||
# CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set
|
||||
# CONFIG_WPA_WPS_STRICT 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_UART is not set
|
||||
CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y
|
||||
|
||||
Reference in New Issue
Block a user