Merge pull request #6 from PhosphorosVR/main

Add support for FaceFocusVR boards 
fixup issues with task handling
backport improvements to UVC (big upgrade)
Improve KConfig Menu layout
This commit is contained in:
Lorow
2025-08-13 23:21:29 +02:00
committed by GitHub
19 changed files with 388 additions and 166 deletions

10
.gitignore vendored
View File

@@ -82,11 +82,11 @@ sdkconfig
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
# !.vscode/settings.json
##!.vscode/tasks.json
# !.vscode/launch.json
# !.vscode/extensions.json
# !.vscode/*.code-snippets
# Local History for Visual Studio Code
.history/

View File

@@ -1,6 +1,6 @@
// source: https://github.com/espressif/esp-iot-solution/blob/4730d91db70df7e6e0a3191d725ab1c5f98ff9ce/examples/usb/device/usb_webcam/bootloader_components/boot_hooks/boot_hooks.c
#ifdef CONFIG_WIRED_MODE
#ifdef CONFIG_GENERAL_WIRED_MODE
#include "esp_log.h"
#include "soc/rtc_cntl_struct.h"
#include "soc/usb_serial_jtag_reg.h"

View File

@@ -18,8 +18,8 @@ void CameraManager::setupCameraPinout()
// 10000000 stable
// 16500000 optimal freq on ESP32-CAM (default)
// 20000000 max freq on ESP32-CAM
// 24000000 optimal freq on ESP32-S3
int xclk_freq_hz = DEFAULT_XCLK_FREQ_HZ;
// 24000000 optimal freq on ESP32-S3 // 23MHz same fps
int xclk_freq_hz = CONFIG_CAMERA_WIFI_XCLK_FREQ;
#if CONFIG_CAMERA_MODULE_ESP_EYE
/* IO13, IO14 is designed for JTAG by default,
@@ -48,8 +48,8 @@ void CameraManager::setupCameraPinout()
ESP_LOGI(CAMERA_MANAGER_TAG, "CAM_BOARD");
#endif
#if CONFIG_WIRED_MODE
xclk_freq_hz = USB_DEFAULT_XCLK_FREQ_HZ;
#if CONFIG_GENERAL_WIRED_MODE
xclk_freq_hz = CONFIG_CAMERA_USB_XCLK_FREQ;
#endif
config = {
@@ -71,8 +71,7 @@ void CameraManager::setupCameraPinout()
.pin_href = CONFIG_HREF_GPIO_NUM, // CAM_PIN_HREF,
.pin_pclk = CONFIG_PCLK_GPIO_NUM, // CAM_PIN_PCLK,
// XCLK 20MHz or 10MHz for OV2640 double FPS (Experimental)
.xclk_freq_hz = xclk_freq_hz, // 20000000,
.xclk_freq_hz = xclk_freq_hz, // Set in config
.ledc_timer = LEDC_TIMER_0,
.ledc_channel = LEDC_CHANNEL_0,
@@ -80,10 +79,10 @@ void CameraManager::setupCameraPinout()
.pixel_format = PIXFORMAT_JPEG, // YUV422,GRAYSCALE,RGB565,JPEG
.frame_size = FRAMESIZE_240X240, // QQVGA-UXGA, For ESP32, do not use sizes above QVGA when not JPEG. The performance of the ESP32-S series has improved a lot, but JPEG mode always gives better frame rates.
.jpeg_quality = 7, // 0-63, for OV series camera sensors, lower number means higher quality
.fb_count = 2, // 3 // When jpeg mode is used, if fb_count more than one, the driver will work in continuous mode.
.fb_location = CAMERA_FB_IN_PSRAM, // maybe it cannot put them fully in psram?
.grab_mode = CAMERA_GRAB_WHEN_EMPTY, // CAMERA_GRAB_LATEST
.jpeg_quality = 7, // 0-63, for OV series camera sensors, lower number means higher quality // Below 6 stability problems
.fb_count = 2, // When jpeg mode is used, if fb_count more than one, the driver will work in continuous mode.
.fb_location = CAMERA_FB_IN_DRAM,
.grab_mode = CAMERA_GRAB_WHEN_EMPTY,
};
}
@@ -95,7 +94,7 @@ void CameraManager::setupBasicResolution()
ESP_LOGE(CAMERA_MANAGER_TAG, "PSRAM not initialized!");
ESP_LOGD(CAMERA_MANAGER_TAG, "Setting fb_location to CAMERA_FB_IN_DRAM with lower picture quality");
config.fb_location = CAMERA_FB_IN_DRAM;
config.jpeg_quality = 9;
config.jpeg_quality = 7;
config.fb_count = 2;
return;
}
@@ -197,7 +196,7 @@ bool CameraManager::setupCamera()
return false;
}
#if CONFIG_WIRED_MODE
#if CONFIG_GENERAL_WIRED_MODE
const auto temp_sensor = esp_camera_sensor_get();
// Thanks to lick_it, we discovered that OV5640 likes to overheat when

View File

@@ -14,11 +14,7 @@
#include <StateManager.hpp>
#include <ProjectConfig.hpp>
#ifndef DEFAULT_XCLK_FREQ_HZ
#define DEFAULT_XCLK_FREQ_HZ 16500000
#define USB_DEFAULT_XCLK_FREQ_HZ 20000000
#define OV5640_XCLK_FREQ_HZ DEFAULT_XCLK_FREQ_HZ
#endif
#define OV5640_XCLK_FREQ_HZ CONFIG_CAMERA_WIFI_XCLK_FREQ
class CameraManager
{

View File

@@ -78,32 +78,35 @@ void LEDManager::setup() {
gpio_set_direction(blink_led_pin, GPIO_MODE_OUTPUT);
this->toggleLED(LED_OFF);
#ifdef CONFIG_SUPPORTS_EXTERNAL_LED_CONTROL
ESP_LOGD(LED_MANAGER_TAG, "Setting up illuminator led.");
const int freq = 5000;
const auto resolution = LEDC_TIMER_8_BIT;
const int dutyCycle = 255;
#ifdef CONFIG_LED_EXTERNAL_CONTROL
ESP_LOGD(LED_MANAGER_TAG, "Setting up illuminator led.");
const int freq = CONFIG_LED_EXTERNAL_PWM_FREQ;
const auto resolution = LEDC_TIMER_8_BIT;
const int dutyCycle = (CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE * 255) / 100;
ledc_timer_config_t ledc_timer = {
.speed_mode = LEDC_LOW_SPEED_MODE,
.duty_resolution = resolution,
.timer_num = LEDC_TIMER_0,
.freq_hz = freq,
.clk_cfg = LEDC_AUTO_CLK};
ledc_timer_config_t ledc_timer = {
.speed_mode = LEDC_LOW_SPEED_MODE,
.duty_resolution = resolution,
.timer_num = LEDC_TIMER_0,
.freq_hz = freq,
.clk_cfg = LEDC_AUTO_CLK
};
ESP_ERROR_CHECK(ledc_timer_config(&ledc_timer));
ESP_ERROR_CHECK(ledc_timer_config(&ledc_timer));
ledc_channel_config_t ledc_channel = {
.gpio_num = this->illumninator_led_pin,
.speed_mode = LEDC_LOW_SPEED_MODE,
.channel = LEDC_CHANNEL_0,
.intr_type = LEDC_INTR_DISABLE,
.timer_sel = LEDC_TIMER_0,
.duty = dutyCycle,
.hpoint = 0};
ledc_channel_config_t ledc_channel = {
.gpio_num = this->illumninator_led_pin,
.speed_mode = LEDC_LOW_SPEED_MODE,
.channel = LEDC_CHANNEL_0,
.intr_type = LEDC_INTR_DISABLE,
.timer_sel = LEDC_TIMER_0,
.duty = dutyCycle,
.hpoint = 0
};
ESP_ERROR_CHECK(ledc_channel_config(&ledc_channel));
ESP_ERROR_CHECK(ledc_channel_config(&ledc_channel));
#endif
ESP_LOGD(LED_MANAGER_TAG, "Done.");
}

View File

@@ -6,7 +6,7 @@
#include "freertos/FreeRTOS.h"
#include "freertos/queue.h"
#ifdef CONFIG_SUPPORTS_EXTERNAL_LED_CONTROL
#ifdef CONFIG_LED_EXTERNAL_CONTROL
#include "driver/ledc.h"
#endif

View File

@@ -80,7 +80,7 @@ struct MDNSConfig_t : BaseConfigModel
{
// by default, this will be openiris
// but we can override it at compile time
std::string default_hostname = CONFIG_MDNS_HOSTNAME;
std::string default_hostname = CONFIG_WIFI_MDNS_HOSTNAME;
if (default_hostname.empty())
{
@@ -214,8 +214,8 @@ struct AP_WiFiConfig_t : BaseConfigModel
void load()
{
this->ssid = this->pref->getString("apSSID", CONFIG_AP_WIFI_SSID);
this->password = this->pref->getString("apPassword", CONFIG_AP_WIFI_PASSWORD);
this->ssid = this->pref->getString("apSSID", CONFIG_WIFI_AP_SSID);
this->password = this->pref->getString("apPassword", CONFIG_WIFI_AP_PASSWORD);
};
void save() const {

View File

@@ -109,9 +109,9 @@ static void UVCStreamHelpers::camera_fb_return_cb(uvc_fb_t *fb, void *cb_ctx)
esp_err_t UVCStreamManager::setup()
{
#ifndef CONFIG_WIRED_MODE
#ifndef CONFIG_GENERAL_WIRED_MODE
ESP_LOGE(UVC_STREAM_TAG, "The board does not support UVC, please, setup WiFi connection.");
return;
return ESP_FAIL;
#endif
ESP_LOGI(UVC_STREAM_TAG, "Setting up UVC Stream");

View File

@@ -152,8 +152,8 @@ void WiFiManager::SetupAccessPoint()
wifi_config_t ap_wifi_config = {
.ap = {
.ssid = CONFIG_AP_WIFI_SSID,
.password = CONFIG_AP_WIFI_PASSWORD,
.ssid = CONFIG_WIFI_AP_SSID,
.password = CONFIG_WIFI_AP_PASSWORD,
.max_connection = 1,
},

View File

@@ -53,7 +53,7 @@ dependencies:
idf:
source:
type: idf
version: 5.3.2
version: 5.3.3
direct_dependencies:
- espressif/cmake_utilities
- espressif/esp32-camera

View File

@@ -1,56 +1,104 @@
menu "OpenIris basic configuration"
menu "ENV_Caps"
orsource "$IDF_PATH/examples/common_components/env_caps/$IDF_TARGET/Kconfig.env_caps"
config BLINK_GPIO
int "Blink GPIO number"
range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX
default 8
help
GPIO number (IOxx) to blink on and off the LED.
Some GPIOs are used for other purposes (flash connections, etc.) and cannot be used to blink.
endmenu
config SUPPORTS_EXTERNAL_LED_CONTROL
bool "Tick if your board supports the control of external IR leds (Project Babble)"
default false
help
GPIO number (IOxx) to the pin controlling the LEDs found on Babble boards.
config LED_C_PIN
int "Pin number of the pin controlling the external leds (Project Babble)"
range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX
default 1
help
GPIO number (IOxx) to the pin controlling the LEDs found on Babble boards.
config BLINK_PERIOD
int "Blink period in ms"
range 10 3600000
default 1000
help
Define the blinking period in milliseconds.
menu "OpenIris: General Configuration"
config WIRED_MODE
bool "WIred mode"
config GENERAL_WIRED_MODE
bool "Wired mode"
default false
config MDNS_HOSTNAME
string "mDNS name"
config GENERAL_UVC_DELAY
int "UVC delay (s)"
default 30
range 10 10000
help
Delay in seconds before the ESP reports itself as a UVC device.
endmenu
menu "OpenIris: Camera Configuration"
config CAMERA_USB_XCLK_FREQ
int "USB XCLK frequency (Hz)"
default 10000000 # should be set in individual board config
range 1 24000000
help
USB XCLK frequency in Hz.
config CAMERA_WIFI_XCLK_FREQ
int "WIFI XCLK frequency (Hz)"
default 16500000
range 1 24000000
help
WIFI XCLK frequency in Hz.
endmenu
menu "OpenIris: WiFi Configuration"
config WIFI_MDNS_HOSTNAME
string "mDNS hostname"
default "openiristracker"
config WIFI_SSID
string "WiFi network name"
string "WiFi network name (SSID)"
default ""
config WIFI_PASSWORD
string "WiFi password"
default ""
config AP_WIFI_SSID
string "AP WiFi network name"
config WIFI_AP_SSID
string "Access Point WiFi network name (SSID)"
default "EyeTrackVR"
config AP_WIFI_PASSWORD
string "AP WiFi password"
config WIFI_AP_PASSWORD
string "Access Point WiFi password"
default "12345678"
endmenu
menu "OpenIris: LED Configuration"
config LED_BLINK_GPIO
int "Blink GPIO number"
range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX
default 8
help
GPIO number (IOxx) used to blink an onboard LED.
Some GPIOs are reserved for other functions (e.g. flash) and cannot be used.
config LED_EXTERNAL_GPIO
int "GPIO pin controlling external LEDs"
range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX
default 1
help
GPIO number connected to the control line of the external IR LEDs.
config LED_EXTERNAL_CONTROL
bool "Board supports external IR LED control"
default false
help
Enable this if your board can control external IR LEDs.
config LED_EXTERNAL_PWM_FREQ
int "External LED PWM frequency (Hz)"
default 5000
range 1 40000
depends on LED_EXTERNAL_CONTROL
help
Frequency of the PWM signal driving the external IR LEDs.
config LED_EXTERNAL_PWM_DUTY_CYCLE
int "External LED PWM duty cycle (%)"
default 50
range 0 100
depends on LED_EXTERNAL_CONTROL
help
Duty cycle of the PWM signal for external IR LEDs, in percent.
0 means always off, 100 means always on.
endmenu

View File

@@ -21,12 +21,12 @@
#include <SerialManager.hpp>
#include <RestAPI.hpp>
#ifdef CONFIG_WIRED_MODE
#ifdef CONFIG_GENERAL_WIRED_MODE
#include <UVCStream.hpp>
#endif
#define BLINK_GPIO (gpio_num_t) CONFIG_BLINK_GPIO
#define CONFIG_LED_C_PIN_GPIO (gpio_num_t) CONFIG_LED_C_PIN
#define BLINK_GPIO (gpio_num_t) CONFIG_LED_BLINK_GPIO
#define CONFIG_LED_C_PIN_GPIO (gpio_num_t) CONFIG_LED_EXTERNAL_GPIO
esp_timer_handle_t timerHandle;
QueueHandle_t eventQueue = xQueueCreate(10, sizeof(SystemEvent));
@@ -48,7 +48,7 @@ StreamServer streamServer(80, stateManager);
auto *restAPI = new RestAPI("http://0.0.0.0:81", commandManager);
#ifdef CONFIG_WIRED_MODE
#ifdef CONFIG_GENERAL_WIRED_MODE
UVCStreamManager uvcStream;
#endif
@@ -78,6 +78,8 @@ void disable_serial_manager_task(TaskHandle_t serialManagerHandle) {
// if we get anything on the serial, we stop the timer and reset it after the commands are done
// this is done to ensure the user has enough time to configure the board if need be
void start_video_streaming(void *arg) {
TaskHandle_t serialTaskHandle = (TaskHandle_t)arg; // retrieve task handle from arg
// if we're in auto-mode, we can decide which streaming helper to start based on the
// presence of Wi-Fi credentials
ESP_LOGI("[MAIN]", "Setup window expired, starting streaming services, quitting serial manager.");
@@ -88,13 +90,21 @@ void start_video_streaming(void *arg) {
ESP_LOGI("[MAIN]", "WiFi setup detected, starting WiFi streaming.");
streamServer.startStreamServer();
} else {
#ifdef CONFIG_GENERAL_WIRED_MODE
ESP_LOGI("[MAIN]", "UVC setup detected, starting UVC streaming.");
uvcStream.setup();
#else
ESP_LOGW("[MAIN]", "UVC streaming not supported in this configuration.");
#endif
}
break;
case StreamingMode::UVC:
#ifdef CONFIG_GENERAL_WIRED_MODE
ESP_LOGI("[MAIN]", "Device set to UVC Mode, starting UVC streaming.");
uvcStream.setup();
#else
ESP_LOGW("[MAIN]", "UVC streaming not supported in this configuration.");
#endif
break;
case StreamingMode::WIFI:
ESP_LOGI("[MAIN]", "Device set to Wi-Fi mode, starting WiFi streaming.");
@@ -102,8 +112,9 @@ void start_video_streaming(void *arg) {
break;
}
const auto serialTaskHandle = static_cast<TaskHandle_t>(arg);
disable_serial_manager_task(serialTaskHandle);
if (serialTaskHandle != nullptr) {
disable_serial_manager_task(serialTaskHandle);
}
}
esp_timer_handle_t createStartVideoStreamingTimer(void *pvParameter) {
@@ -122,7 +133,12 @@ esp_timer_handle_t createStartVideoStreamingTimer(void *pvParameter) {
}
extern "C" void app_main(void) {
TaskHandle_t *serialManagerHandle = nullptr;
// --- FIX: Use a real TaskHandle_t variable instead of a pointer ---
// Previously: TaskHandle_t* serialManagerHandle = nullptr;
// This caused xTaskCreate() to never store a valid handle,
// leading to random failures when deleting the task in the timer callback.
TaskHandle_t serialManagerHandle = nullptr;
dependencyRegistry->registerService<ProjectConfig>(DependencyType::project_config, deviceConfig);
dependencyRegistry->registerService<CameraManager>(DependencyType::camera_manager, cameraHandler);
// uvc plan
@@ -197,13 +213,15 @@ extern "C" void app_main(void) {
deviceConfig->load();
serialManager->setup();
// Pass address of variable so xTaskCreate() stores the actual task handle
xTaskCreate(
HandleSerialManagerTask,
"HandleSerialManagerTask",
1024 * 6,
serialManager,
1, // we only rely on the serial manager during provisioning, we can run it slower
serialManagerHandle);
&serialManagerHandle
);
wifiManager.Begin();
mdnsManager.start();
@@ -218,8 +236,9 @@ extern "C" void app_main(void) {
1, // it's the rest API, we only serve commands over it so we don't really need a higher priority
nullptr);
timerHandle = createStartVideoStreamingTimer(serialManagerHandle);
// Pass the actual TaskHandle_t value into the timer
timerHandle = createStartVideoStreamingTimer((void*)serialManagerHandle);
if (timerHandle != nullptr) {
esp_timer_start_once(timerHandle, 30000000); // 30s
esp_timer_start_once(timerHandle, CONFIG_GENERAL_UVC_DELAY * 1000000);
}
}
}

121
sdkconfig
View File

@@ -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.3 Project Configuration
#
CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000
CONFIG_SOC_MPU_REGIONS_MAX_NUM=8
@@ -64,6 +64,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
@@ -101,6 +102,7 @@ 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_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
@@ -203,6 +205,7 @@ 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_LP_IO_CLOCK_IS_INDEPENDENT=y
CONFIG_SOC_SDM_GROUPS=y
CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8
CONFIG_SOC_SDM_CLK_SUPPORT_APB=y
@@ -243,6 +246,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
@@ -537,23 +542,47 @@ CONFIG_PARTITION_TABLE_MD5=y
# end of Partition Table
#
# OpenIris basic configuration
# ENV_Caps
#
CONFIG_ENV_GPIO_RANGE_MIN=0
CONFIG_ENV_GPIO_RANGE_MAX=48
CONFIG_ENV_GPIO_IN_RANGE_MAX=48
CONFIG_ENV_GPIO_OUT_RANGE_MAX=48
CONFIG_BLINK_GPIO=38
CONFIG_SUPPORTS_EXTERNAL_LED_CONTROL=y
CONFIG_LED_C_PIN=1
CONFIG_BLINK_PERIOD=1000
CONFIG_WIRED_MODE=y
CONFIG_MDNS_HOSTNAME="openiristracker"
# end of ENV_Caps
#
# OpenIris: General Configuration
#
CONFIG_GENERAL_WIRED_MODE=y
CONFIG_GENERAL_UVC_DELAY=30
# end of OpenIris: General Configuration
#
# OpenIris: Camera Configuration
#
CONFIG_CAMERA_USB_XCLK_FREQ=10000000
CONFIG_CAMERA_WIFI_XCLK_FREQ=16500000
# end of OpenIris: Camera Configuration
#
# OpenIris: WiFi Configuration
#
CONFIG_WIFI_MDNS_HOSTNAME="openiristracker"
CONFIG_WIFI_SSID=""
CONFIG_WIFI_PASSWORD=""
CONFIG_AP_WIFI_SSID="EyeTrackVR"
CONFIG_AP_WIFI_PASSWORD="12345678"
# end of OpenIris basic configuration
CONFIG_WIFI_AP_SSID="EyeTrackVR"
CONFIG_WIFI_AP_PASSWORD="12345678"
# end of OpenIris: WiFi Configuration
#
# OpenIris: LED Configuration
#
CONFIG_LED_BLINK_GPIO=8
CONFIG_LED_EXTERNAL_GPIO=1
CONFIG_LED_EXTERNAL_CONTROL=y
CONFIG_LED_EXTERNAL_PWM_FREQ=5000
CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE=100
# end of OpenIris: LED Configuration
#
# Camera sensor pinout configuration
@@ -628,7 +657,12 @@ CONFIG_APPTRACE_LOCK_ENABLE=y
# Bluetooth
#
# CONFIG_BT_ENABLED is not set
CONFIG_BT_ALARM_MAX_NUM=50
#
# Common Options
#
# CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED is not set
# end of Common Options
# end of Bluetooth
#
@@ -652,6 +686,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
@@ -664,42 +699,49 @@ 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 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
@@ -759,6 +801,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
@@ -877,6 +920,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
#
@@ -1051,6 +1101,7 @@ CONFIG_ESP_PHY_RF_CAL_PARTIAL=y
# CONFIG_ESP_PHY_RF_CAL_FULL is not set
CONFIG_ESP_PHY_CALIBRATION_MODE=0
# CONFIG_ESP_PHY_PLL_TRACK_DEBUG is not set
# CONFIG_ESP_PHY_RECORD_USED_TIME is not set
# end of PHY
#
@@ -1251,9 +1302,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
@@ -1263,7 +1314,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
@@ -1434,7 +1484,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)
#
@@ -1836,25 +1885,10 @@ 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
#
# Thread Address Query Config
#
# end of Thread Address Query Config
# end of OpenThread Spinel
# end of OpenThread
#
@@ -1863,6 +1897,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
#
@@ -2155,9 +2190,9 @@ CONFIG_UVC_MULTI_FRAME_FPS_3=90
#
# UVC Task Config
#
CONFIG_UVC_TINYUSB_TASK_PRIORITY=3
CONFIG_UVC_TINYUSB_TASK_PRIORITY=4
CONFIG_UVC_TINYUSB_TASK_CORE=-1
CONFIG_UVC_CAM1_TASK_PRIORITY=2
CONFIG_UVC_CAM1_TASK_PRIORITY=3
CONFIG_UVC_CAM1_TASK_CORE=-1
# end of UVC Task Config
# end of USB Device UVC
@@ -2190,6 +2225,7 @@ CONFIG_OV5640_SUPPORT=y
# CONFIG_SC101IOT_SUPPORT is not set
# CONFIG_SC030IOT_SUPPORT is not set
# CONFIG_SC031GS_SUPPORT is not set
CONFIG_MEGA_CCM_SUPPORT=y
# CONFIG_SCCB_HARDWARE_I2C_PORT0 is not set
CONFIG_SCCB_HARDWARE_I2C_PORT1=y
CONFIG_SCCB_CLK_FREQ=100000
@@ -2216,6 +2252,17 @@ CONFIG_MDNS_TASK_STACK_SIZE=4096
CONFIG_MDNS_TASK_AFFINITY_CPU0=y
# CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set
CONFIG_MDNS_TASK_AFFINITY=0x0
#
# MDNS Memory Configuration
#
# CONFIG_MDNS_TASK_CREATE_FROM_SPIRAM is not set
CONFIG_MDNS_TASK_CREATE_FROM_INTERNAL=y
# CONFIG_MDNS_MEMORY_ALLOC_SPIRAM is not set
CONFIG_MDNS_MEMORY_ALLOC_INTERNAL=y
# CONFIG_MDNS_MEMORY_CUSTOM_IMPL is not set
# end of MDNS Memory Configuration
CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000
CONFIG_MDNS_TIMER_PERIOD_MS=100
# CONFIG_MDNS_NETWORKING_SOCKET is not set
@@ -2326,7 +2373,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
@@ -2349,17 +2395,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

View File

@@ -536,25 +536,6 @@ CONFIG_PARTITION_TABLE_OFFSET=0x8000
CONFIG_PARTITION_TABLE_MD5=y
# end of Partition Table
#
# OpenIris basic configuration
#
CONFIG_ENV_GPIO_RANGE_MIN=0
CONFIG_ENV_GPIO_RANGE_MAX=48
CONFIG_ENV_GPIO_IN_RANGE_MAX=48
CONFIG_ENV_GPIO_OUT_RANGE_MAX=48
CONFIG_BLINK_GPIO=38
CONFIG_BLINK_PERIOD=1000
CONFIG_WIRED_MODE=y
CONFIG_MDNS_HOSTNAME="openiristracker"
CONFIG_WIFI_SSID=""
CONFIG_WIFI_PASSWORD=""
CONFIG_AP_WIFI_SSID="EyeTrackVR"
CONFIG_AP_WIFI_PASSWORD="12345678"
# CONFIG_SUPPORTS_EXTERNAL_LED_CONTROL is not set
CONFIG_LED_C_PIN=1
# end of OpenIris basic configuration
#
# Camera sensor pinout configuration
#
@@ -2204,7 +2185,7 @@ CONFIG_UVC_CAM1_MULTI_FRAMESIZE=y
#
CONFIG_UVC_MULTI_FRAME_WIDTH_1=240
CONFIG_UVC_MULTI_FRAME_HEIGHT_1=240
CONFIG_UVC_MULTI_FRAME_FPS_1=60
CONFIG_UVC_MULTI_FRAME_FPS_1=90
# end of FRAME_SIZE_1
#
@@ -2212,7 +2193,7 @@ CONFIG_UVC_MULTI_FRAME_FPS_1=60
#
CONFIG_UVC_MULTI_FRAME_WIDTH_2=240
CONFIG_UVC_MULTI_FRAME_HEIGHT_2=240
CONFIG_UVC_MULTI_FRAME_FPS_2=60
CONFIG_UVC_MULTI_FRAME_FPS_2=90
# end of FRAME_SIZE_2
#
@@ -2220,7 +2201,7 @@ CONFIG_UVC_MULTI_FRAME_FPS_2=60
#
CONFIG_UVC_MULTI_FRAME_WIDTH_3=240
CONFIG_UVC_MULTI_FRAME_HEIGHT_3=240
CONFIG_UVC_MULTI_FRAME_FPS_3=60
CONFIG_UVC_MULTI_FRAME_FPS_3=90
# end of FRAME_SIZE_3
# end of UVC_MULTI_FRAME_CONFIG

View File

@@ -0,0 +1,62 @@
CONFIG_BLINK_LED_GPIO=y
CONFIG_BLINK_GPIO=21
CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y
CONFIG_ESP32S3_SPIRAM_SUPPORT=y
CONFIG_SPIRAM_MODE_OCT=y
# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set
CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set
CONFIG_ESPTOOLPY_FLASHSIZE="8MB"
# Camera sensor pinout configuration
CONFIG_CAMERA_MODULE_NAME="FaceFocusVR_Face"
CONFIG_PWDN_GPIO_NUM=-1
CONFIG_RESET_GPIO_NUM=-1
CONFIG_XCLK_GPIO_NUM=10
CONFIG_SIOD_GPIO_NUM=40
CONFIG_SIOC_GPIO_NUM=39
CONFIG_Y9_GPIO_NUM=48
CONFIG_Y8_GPIO_NUM=11
CONFIG_Y7_GPIO_NUM=12
CONFIG_Y6_GPIO_NUM=14
CONFIG_Y5_GPIO_NUM=16
CONFIG_Y4_GPIO_NUM=18
CONFIG_Y3_GPIO_NUM=17
CONFIG_Y2_GPIO_NUM=15
CONFIG_VSYNC_GPIO_NUM=38
CONFIG_HREF_GPIO_NUM=47
CONFIG_PCLK_GPIO_NUM=13
# end of Camera sensor pinout configuration
# CONFIG_FLASHMODE_QIO is not set
# CONFIG_FLASHMODE_QOUT is not set
CONFIG_FLASHMODE_DIO=y
CONFIG_SPIRAM_MODE_OCT=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_ALLOW_STACK_EXTERNAL_MEMORY=y
CONFIG_SPIRAM_CLK_IO=30
CONFIG_SPIRAM_CS_IO=26
# CONFIG_SPIRAM_XIP_FROM_PSRAM is not set
# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set
# CONFIG_SPIRAM_RODATA is not set
CONFIG_SPIRAM_SPEED_80M=y
# CONFIG_SPIRAM_SPEED_40M is not set
# CONFIG_SPIRAM_XIP_FROM_PSRAM is not set
# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set
# CONFIG_SPIRAM_RODATA is not set
# CONFIG_SPIRAM_SPEED_120M is not set
CONFIG_SPIRAM_SPEED=80
CONFIG_SPIRAM_SPEED_80M=y
CONFIG_LED_EXTERNAL_CONTROL=y
CONFIG_LED_EXTERNAL_GPIO=9
CONFIG_LED_EXTERNAL_PWM_FREQ=20000
CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE=50
CONFIG_CAMERA_USB_XCLK_FREQ=23000000
CONFIG_GENERAL_WIRED_MODE=y

View File

@@ -0,0 +1,62 @@
CONFIG_BLINK_LED_GPIO=y
CONFIG_BLINK_GPIO=21
CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y
CONFIG_ESP32S3_SPIRAM_SUPPORT=y
CONFIG_SPIRAM_MODE_OCT=y
# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set
CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set
CONFIG_ESPTOOLPY_FLASHSIZE="8MB"
# Camera sensor pinout configuration
CONFIG_CAMERA_MODULE_NAME="FaceFocusVR_Face"
CONFIG_PWDN_GPIO_NUM=-1
CONFIG_RESET_GPIO_NUM=-1
CONFIG_XCLK_GPIO_NUM=10
CONFIG_SIOD_GPIO_NUM=40
CONFIG_SIOC_GPIO_NUM=39
CONFIG_Y9_GPIO_NUM=48
CONFIG_Y8_GPIO_NUM=11
CONFIG_Y7_GPIO_NUM=12
CONFIG_Y6_GPIO_NUM=14
CONFIG_Y5_GPIO_NUM=16
CONFIG_Y4_GPIO_NUM=18
CONFIG_Y3_GPIO_NUM=17
CONFIG_Y2_GPIO_NUM=15
CONFIG_VSYNC_GPIO_NUM=38
CONFIG_HREF_GPIO_NUM=47
CONFIG_PCLK_GPIO_NUM=13
# end of Camera sensor pinout configuration
# CONFIG_FLASHMODE_QIO is not set
# CONFIG_FLASHMODE_QOUT is not set
CONFIG_FLASHMODE_DIO=y
CONFIG_SPIRAM_MODE_OCT=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_ALLOW_STACK_EXTERNAL_MEMORY=y
CONFIG_SPIRAM_CLK_IO=30
CONFIG_SPIRAM_CS_IO=26
# CONFIG_SPIRAM_XIP_FROM_PSRAM is not set
# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set
# CONFIG_SPIRAM_RODATA is not set
CONFIG_SPIRAM_SPEED_80M=y
# CONFIG_SPIRAM_SPEED_40M is not set
# CONFIG_SPIRAM_XIP_FROM_PSRAM is not set
# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set
# CONFIG_SPIRAM_RODATA is not set
# CONFIG_SPIRAM_SPEED_120M is not set
CONFIG_SPIRAM_SPEED=80
CONFIG_SPIRAM_SPEED_80M=y
CONFIG_LED_EXTERNAL_CONTROL=y
CONFIG_LED_EXTERNAL_GPIO=9
CONFIG_LED_EXTERNAL_PWM_FREQ=20000
CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE=100
CONFIG_CAMERA_USB_XCLK_FREQ=23000000
CONFIG_GENERAL_WIRED_MODE=y

View File

@@ -46,4 +46,9 @@ CONFIG_SPIRAM_CS_IO=26
# CONFIG_SPIRAM_RODATA is not set
# CONFIG_SPIRAM_SPEED_120M is not set
CONFIG_SPIRAM_SPEED_80M=y
CONFIG_SUPPORTS_EXTERNAL_LED_CONTROL=y
CONFIG_LED_EXTERNAL_CONTROL=y
CONFIG_LED_EXTERNAL_PWM_FREQ=5000
CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE=100
CONFIG_LED_EXTERNAL_GPIO=1
CONFIG_CAMERA_USB_XCLK_FREQ=23000000 # NOT TESTED
CONFIG_GENERAL_WIRED_MODE=y

View File

@@ -54,4 +54,6 @@ CONFIG_SPIRAM_SPEED_80M=y
# CONFIG_SPIRAM_SPEED_120M is not set
CONFIG_SPIRAM_SPEED=80
CONFIG_SPIRAM_SPEED_80M=y
# CONFIG_SUPPORTS_EXTERNAL_LED_CONTROL is not set
# CONFIG_LED_EXTERNAL_CONTROL is not set
CONFIG_CAMERA_USB_XCLK_FREQ=23000000
CONFIG_GENERAL_WIRED_MODE=y

View File

@@ -10,7 +10,9 @@ ENDC = '\033[0m'
sdkconfig_defaults = "sdkconfig.base_defaults"
supported_boards = [
"xiao-esp32s3",
"project_babble"
"project_babble",
"facefocusvr_face",
"facefocusvr_eye"
]
parser = argparse.ArgumentParser()