1
This commit is contained in:
Vendored
-3
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"C_Cpp.errorSquiggles": "disabled"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"folders": [
|
||||
{
|
||||
"name": "espLinuxESPIDF",
|
||||
"path": "."
|
||||
},
|
||||
{
|
||||
"path": "src"
|
||||
}
|
||||
],
|
||||
"settings": {}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
import os
|
||||
import sys
|
||||
from os.path import join, isfile
|
||||
|
||||
Import("env")
|
||||
|
||||
# 1. Находим, где на этом ПК физически лежит фреймворк ESP-IDF
|
||||
FRAMEWORK_DIR = env.PioPlatform().get_package_dir("framework-espidf")
|
||||
if not FRAMEWORK_DIR:
|
||||
print("[ERROR] Не удалось найти директорию framework-espidf!")
|
||||
sys.exit(1)
|
||||
|
||||
def patch_file(file_path, search_str, replace_str):
|
||||
if not isfile(file_path):
|
||||
return
|
||||
with open(file_path, "r", encoding="utf-8") as f:
|
||||
content = f.read()
|
||||
if search_str in content and replace_str not in content:
|
||||
print(f"[PATCHING] Модификация файла: {file_path}")
|
||||
new_content = content.replace(search_str, search_str + replace_str)
|
||||
with open(file_path, "w", encoding="utf-8") as f:
|
||||
f.write(new_content)
|
||||
|
||||
# 2. Патчим Kconfig, чтобы добавить новые кнопки в menuconfig / sdkconfig
|
||||
kconfig_path = join(FRAMEWORK_DIR, "components", "esp_system", "port", "soc", "esp32s3", "Kconfig.cpu")
|
||||
search_kconfig = 'config ESP_DEFAULT_CPU_FREQ_MHZ_240\n bool "240 MHz"'
|
||||
replace_kconfig = """\n config ESP_DEFAULT_CPU_FREQ_MHZ_320
|
||||
bool "320 MHz"
|
||||
config ESP_DEFAULT_CPU_FREQ_MHZ_480
|
||||
bool "480 MHz" """
|
||||
|
||||
search_kconfig_val = 'default 240 if ESP_DEFAULT_CPU_FREQ_MHZ_240'
|
||||
replace_kconfig_val = """\n default 320 if ESP_DEFAULT_CPU_FREQ_MHZ_320\n default 480 if ESP_DEFAULT_CPU_FREQ_MHZ_480"""
|
||||
|
||||
patch_file(kconfig_path, search_kconfig, replace_kconfig)
|
||||
patch_file(kconfig_path, search_kconfig_val, replace_kconfig_val)
|
||||
|
||||
# 3. Патчим rtc_clk.c, чтобы ядро умело конфигурировать тактовые делители
|
||||
rtc_clk_path = join(FRAMEWORK_DIR, "components", "esp_hw_support", "port", "esp32s3", "rtc_clk.c")
|
||||
search_rtc = "case 240:\n config.source = SOC_CPU_CLK_SRC_PLL;\n config.source_freq_mhz = 480;\n config.div = 2;\n break;"
|
||||
replace_rtc = """\n case 320:
|
||||
config.source = SOC_CPU_CLK_SRC_PLL;
|
||||
config.source_freq_mhz = 320;
|
||||
config.div = 1;
|
||||
break;
|
||||
case 480:
|
||||
config.source = SOC_CPU_CLK_SRC_PLL;
|
||||
config.source_freq_mhz = 480;
|
||||
config.div = 1;
|
||||
break;"""
|
||||
|
||||
patch_file(rtc_clk_path, search_rtc, replace_rtc)
|
||||
+2
-10
@@ -2,14 +2,6 @@
|
||||
platform = espressif32
|
||||
board = esp32-s3-devkitc-1
|
||||
framework = espidf
|
||||
|
||||
board_build.partitions = partitions.csv
|
||||
|
||||
board_build.arduino.memory_type = qio_opi
|
||||
build_flags =
|
||||
-D BOARD_HAS_PSRAM
|
||||
-mfix-esp32-psram-cache-issue
|
||||
-D CONFIG_SPIRAM_USE_MALLOC=1
|
||||
-D CONFIG_SPIRAM_TYPE_AUTO=1
|
||||
-D CONFIG_SPIRAM_SPEED_80M=1
|
||||
monitor_speed = 115200
|
||||
upload_speed = 921600
|
||||
board_build.partitions = partitions.csv
|
||||
Executable → Regular
+7
-10
@@ -1216,9 +1216,9 @@ CONFIG_SPIRAM_TYPE_AUTO=y
|
||||
# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set
|
||||
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_XIP_FROM_PSRAM=y
|
||||
CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
|
||||
CONFIG_SPIRAM_RODATA=y
|
||||
# CONFIG_SPIRAM_SPEED_120M is not set
|
||||
# CONFIG_SPIRAM_SPEED_80M is not set
|
||||
CONFIG_SPIRAM_SPEED_40M=y
|
||||
@@ -1228,12 +1228,10 @@ 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
|
||||
CONFIG_SPIRAM_USE_MALLOC=y
|
||||
CONFIG_SPIRAM_USE_CAPS_ALLOC=y
|
||||
# CONFIG_SPIRAM_USE_MALLOC is not set
|
||||
CONFIG_SPIRAM_MEMTEST=y
|
||||
CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=16384
|
||||
# CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP is not set
|
||||
CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768
|
||||
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
|
||||
# CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY is not set
|
||||
# end of SPI RAM config
|
||||
@@ -1304,11 +1302,10 @@ CONFIG_ESP32S3_TRACEMEM_RESERVE_DRAM=0x0
|
||||
# end of Trace memory
|
||||
|
||||
CONFIG_ESP_SYSTEM_IN_IRAM=y
|
||||
# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set
|
||||
CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y
|
||||
CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
|
||||
# CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT is not set
|
||||
# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set
|
||||
# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set
|
||||
CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=0
|
||||
CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK=y
|
||||
CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP=y
|
||||
|
||||
|
||||
Executable → Regular
+395
-112
File diff suppressed because it is too large
Load Diff
Vendored
+482
@@ -0,0 +1,482 @@
|
||||
//
|
||||
// !!! WARNING !!! AUTO-GENERATED FILE!
|
||||
// PLEASE DO NOT MODIFY IT AND USE "platformio.ini":
|
||||
// https://docs.platformio.org/page/projectconf/section_env_build.html#build-flags
|
||||
//
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "PlatformIO",
|
||||
"includePath": [
|
||||
"/home/koder/Repos/espLinuxESPIDF/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/xtensa/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/xtensa/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/xtensa/deprecated_include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/.pio/build/esp32-s3-devkitc-1/config",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/newlib/platform_include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/freertos/config/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/freertos/config/include/freertos",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/freertos/config/xtensa/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/freertos/FreeRTOS-Kernel/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/freertos/esp_additions/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/include/soc",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/include/soc/esp32s3",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/dma/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/ldo/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/debug_probe/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/mspi_timing_tuning/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/power_supply/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/port/esp32s3",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/port/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/mspi_timing_tuning/port/esp32s3",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/mspi_timing_tuning/port/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/heap/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/heap/tlsf",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/log/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/soc/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/soc/esp32s3",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/soc/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/soc/esp32s3/register",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/hal/platform_port/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/hal/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/hal/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_rom/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_rom/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_rom/esp32s3/include/esp32s3",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_rom/esp32s3",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_common/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_system/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_system/port/soc",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_system/port/include/private",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/include/apps",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/include/apps/sntp",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/lwip/src/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/port/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/port/freertos/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/port/esp32xx/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/port/esp32xx/include/arch",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/port/esp32xx/include/sys",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_gpio/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_timer/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_pm/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/mbedtls/port/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/mbedtls/mbedtls/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/mbedtls/mbedtls/library",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/mbedtls/esp_crt_bundle/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/mbedtls/mbedtls/3rdparty/everest/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/mbedtls/mbedtls/3rdparty/p256-m",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/mbedtls/mbedtls/3rdparty/p256-m/p256-m",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_app_format/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_bootloader_format/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/app_update/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/bootloader_support/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/bootloader_support/bootloader_flash/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_partition/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/efuse/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/efuse/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_mm/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/spi_flash/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_security/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/pthread/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_gptimer/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_ringbuf/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_psram/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_psram/xip_impl/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_uart/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/vfs/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/app_trace/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_event/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/nvs_flash/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_phy/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_phy/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_usb_serial_jtag/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_vfs_console/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_netif/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/wpa_supplicant/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/wpa_supplicant/port/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/wpa_supplicant/esp_supplicant/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_coex/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_wifi/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_wifi/include/local",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_wifi/wifi_apps/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_wifi/wifi_apps/nan_app/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_spi/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_gdbstub/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/unity/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/unity/unity/src",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/cmock/CMock/src",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/console",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_pcnt/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_mcpwm/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_ana_cmpr/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_i2s/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/sdmmc/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_sdmmc/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_sdspi/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_sdio/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_dac/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_bitscrambler/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_rmt/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_tsens/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_sdm/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_i2c/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_ledc/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_parlio/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_twai/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/driver/deprecated",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/driver/i2c/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/driver/touch_sensor/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/driver/twai/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/driver/touch_sensor/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/http_parser",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp-tls",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp-tls/esp-tls-crypto",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_adc/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_adc/interface",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_adc/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_adc/deprecated/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_isp/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_cam/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_cam/interface",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_cam/dvp/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_jpeg/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_ppa/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_touch_sens/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_touch_sens/hw_ver2/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_eth/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hal_ieee802154/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hid/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/tcp_transport/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_http_client/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_http_server/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_https_ota/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_https_server/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_lcd/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_lcd/interface",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_lcd/rgb/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/protobuf-c/protobuf-c",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/protocomm/include/common",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/protocomm/include/security",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/protocomm/include/transports",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/protocomm/include/crypto/srp6a",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/protocomm/proto-c",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_local_ctrl/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/espcoredump/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/espcoredump/include/port/xtensa",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/wear_levelling/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/fatfs/diskio",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/fatfs/src",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/fatfs/vfs",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/idf_test/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/idf_test/include/esp32s3",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/ieee802154/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/json/cJSON",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/mqtt/esp-mqtt/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/nvs_sec_provider/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/perfmon/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/rt/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/spiffs/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/touch_element/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/usb/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/wifi_provisioning/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/components/esp_littlefs/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/components/espressif__tinyusb/src",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/freertos/FreeRTOS-Kernel/include/freertos",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/dotprod/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/support/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/support/mem/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/windows/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/windows/hann/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/windows/blackman/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/windows/blackman_harris/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/windows/blackman_nuttall/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/windows/nuttall/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/windows/flat_top/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/iir/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/fir/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/math/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/math/add/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/math/sub/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/math/mul/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/math/addc/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/math/mulc/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/math/sqrt/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/matrix/mul/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/matrix/add/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/matrix/addc/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/matrix/mulc/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/matrix/sub/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/matrix/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/fft/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/dct/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/conv/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/common/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/matrix/mul/test/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/kalman/ekf/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/kalman/ekf_imu13states/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp_tinyusb/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/src",
|
||||
"/home/koder/Repos/espLinuxESPIDF/src/boot",
|
||||
"/home/koder/Repos/espLinuxESPIDF/src/drivers/fs",
|
||||
""
|
||||
],
|
||||
"browse": {
|
||||
"limitSymbolsToIncludedHeaders": true,
|
||||
"path": [
|
||||
"/home/koder/Repos/espLinuxESPIDF/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/xtensa/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/xtensa/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/xtensa/deprecated_include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/.pio/build/esp32-s3-devkitc-1/config",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/newlib/platform_include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/freertos/config/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/freertos/config/include/freertos",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/freertos/config/xtensa/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/freertos/FreeRTOS-Kernel/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/freertos/esp_additions/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/include/soc",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/include/soc/esp32s3",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/dma/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/ldo/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/debug_probe/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/mspi_timing_tuning/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/power_supply/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/port/esp32s3",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/port/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/mspi_timing_tuning/port/esp32s3",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hw_support/mspi_timing_tuning/port/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/heap/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/heap/tlsf",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/log/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/soc/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/soc/esp32s3",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/soc/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/soc/esp32s3/register",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/hal/platform_port/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/hal/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/hal/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_rom/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_rom/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_rom/esp32s3/include/esp32s3",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_rom/esp32s3",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_common/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_system/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_system/port/soc",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_system/port/include/private",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/include/apps",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/include/apps/sntp",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/lwip/src/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/port/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/port/freertos/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/port/esp32xx/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/port/esp32xx/include/arch",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/lwip/port/esp32xx/include/sys",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_gpio/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_timer/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_pm/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/mbedtls/port/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/mbedtls/mbedtls/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/mbedtls/mbedtls/library",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/mbedtls/esp_crt_bundle/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/mbedtls/mbedtls/3rdparty/everest/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/mbedtls/mbedtls/3rdparty/p256-m",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/mbedtls/mbedtls/3rdparty/p256-m/p256-m",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_app_format/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_bootloader_format/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/app_update/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/bootloader_support/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/bootloader_support/bootloader_flash/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_partition/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/efuse/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/efuse/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_mm/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/spi_flash/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_security/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/pthread/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_gptimer/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_ringbuf/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_psram/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_psram/xip_impl/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_uart/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/vfs/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/app_trace/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_event/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/nvs_flash/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_phy/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_phy/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_usb_serial_jtag/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_vfs_console/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_netif/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/wpa_supplicant/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/wpa_supplicant/port/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/wpa_supplicant/esp_supplicant/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_coex/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_wifi/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_wifi/include/local",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_wifi/wifi_apps/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_wifi/wifi_apps/nan_app/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_spi/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_gdbstub/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/unity/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/unity/unity/src",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/cmock/CMock/src",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/console",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_pcnt/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_mcpwm/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_ana_cmpr/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_i2s/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/sdmmc/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_sdmmc/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_sdspi/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_sdio/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_dac/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_bitscrambler/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_rmt/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_tsens/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_sdm/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_i2c/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_ledc/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_parlio/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_twai/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/driver/deprecated",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/driver/i2c/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/driver/touch_sensor/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/driver/twai/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/driver/touch_sensor/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/http_parser",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp-tls",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp-tls/esp-tls-crypto",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_adc/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_adc/interface",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_adc/esp32s3/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_adc/deprecated/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_isp/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_cam/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_cam/interface",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_cam/dvp/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_jpeg/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_ppa/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_touch_sens/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_driver_touch_sens/hw_ver2/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_eth/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hal_ieee802154/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_hid/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/tcp_transport/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_http_client/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_http_server/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_https_ota/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_https_server/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_lcd/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_lcd/interface",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_lcd/rgb/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/protobuf-c/protobuf-c",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/protocomm/include/common",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/protocomm/include/security",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/protocomm/include/transports",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/protocomm/include/crypto/srp6a",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/protocomm/proto-c",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/esp_local_ctrl/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/espcoredump/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/espcoredump/include/port/xtensa",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/wear_levelling/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/fatfs/diskio",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/fatfs/src",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/fatfs/vfs",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/idf_test/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/idf_test/include/esp32s3",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/ieee802154/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/json/cJSON",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/mqtt/esp-mqtt/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/nvs_sec_provider/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/perfmon/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/rt/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/spiffs/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/touch_element/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/usb/include",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/wifi_provisioning/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/components/esp_littlefs/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/components/espressif__tinyusb/src",
|
||||
"/home/koder/.platformio/packages/framework-espidf/components/freertos/FreeRTOS-Kernel/include/freertos",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/dotprod/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/support/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/support/mem/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/windows/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/windows/hann/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/windows/blackman/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/windows/blackman_harris/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/windows/blackman_nuttall/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/windows/nuttall/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/windows/flat_top/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/iir/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/fir/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/math/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/math/add/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/math/sub/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/math/mul/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/math/addc/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/math/mulc/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/math/sqrt/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/matrix/mul/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/matrix/add/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/matrix/addc/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/matrix/mulc/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/matrix/sub/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/matrix/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/fft/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/dct/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/conv/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/common/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/matrix/mul/test/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/kalman/ekf/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp-dsp/modules/kalman/ekf_imu13states/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/managed_components/espressif__esp_tinyusb/include",
|
||||
"/home/koder/Repos/espLinuxESPIDF/src",
|
||||
"/home/koder/Repos/espLinuxESPIDF/src/boot",
|
||||
"/home/koder/Repos/espLinuxESPIDF/src/drivers/fs",
|
||||
""
|
||||
]
|
||||
},
|
||||
"defines": [
|
||||
"CFG_TUD_MTP_EP_CONTROL_BUFSIZE=16",
|
||||
"CFG_TUD_MTP_EP_BUFSIZE=512",
|
||||
"CFG_TUD_MTP=1",
|
||||
"CFG_TUD_ENABLED=1",
|
||||
"CFG_TUSB_MCU=OPT_MCU_ESP32S3",
|
||||
"_POSIX_READER_WRITER_LOCKS",
|
||||
"_GNU_SOURCE",
|
||||
"_GLIBCXX_USE_POSIX_SEMAPHORE",
|
||||
"_GLIBCXX_HAVE_POSIX_SEMAPHORE",
|
||||
"SOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ",
|
||||
"SOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE",
|
||||
"MBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"",
|
||||
"IDF_VER=\"5.5.3\"",
|
||||
"ESP_PLATFORM",
|
||||
"PLATFORMIO=60119",
|
||||
"ARDUINO_ESP32S3_DEV",
|
||||
"ARDUINO_USB_MODE=1",
|
||||
"ARDUINO_RUNNING_CORE=1",
|
||||
"ARDUINO_EVENT_RUNNING_CORE=1",
|
||||
""
|
||||
],
|
||||
"cStandard": "gnu17",
|
||||
"cppStandard": "gnu++23",
|
||||
"compilerPath": "/home/koder/.platformio/packages/toolchain-xtensa-esp-elf/bin/xtensa-esp32s3-elf-gcc",
|
||||
"compilerArgs": [
|
||||
"-mdisable-hardware-atomics",
|
||||
"-mlongcalls",
|
||||
""
|
||||
]
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
||||
+16
-3
@@ -1,7 +1,20 @@
|
||||
FILE(GLOB_RECURSE app_sources ${CMAKE_SOURCE_DIR}/src/*.c)
|
||||
# 1. Рекурсивно ищем все исходники (и .c и .cpp)
|
||||
file(GLOB_RECURSE app_sources
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/*.cpp"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/*.c"
|
||||
)
|
||||
|
||||
# 2. Регистрируем компонент
|
||||
idf_component_register(
|
||||
SRCS ${app_sources}
|
||||
INCLUDE_DIRS "." "${CMAKE_SOURCE_DIR}"
|
||||
REQUIRES esp_littlefs espressif__tinyusb
|
||||
INCLUDE_DIRS
|
||||
"." # Папка src (где лежит CMakeLists)
|
||||
"boot" # Чтобы видеть entry.hpp
|
||||
"drivers/fs" # Чтобы видеть fs.hpp
|
||||
REQUIRES
|
||||
esp_littlefs
|
||||
espressif__tinyusb
|
||||
mbedtls
|
||||
vfs
|
||||
)
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
#ifndef SHELL_HPP
|
||||
#define SHELL_HPP
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "answer_code.h"
|
||||
#include "answer_code.hpp"
|
||||
#include <stdlib.h>
|
||||
|
||||
const char* get_error(uint32_t code) {
|
||||
@@ -14,6 +14,9 @@ const char* get_error(uint32_t code) {
|
||||
case OS_WRN_ALREADY_INIT: return "Warning: Attempting to reinitialize an object";
|
||||
case OS_WRN_NOT_NEED_INIT: return "Warning: Attempt to initialize an uninitializable object";
|
||||
|
||||
case VFS_ERR_TARGET_BUSY: return "Error: Remounting on busy path";
|
||||
case VFS_ERR_NOT_SUPPORTED: return "Error: FS version not supported";
|
||||
|
||||
case VRAM_ERR_RANGE: return "Error: Attempt to write/read outside the video memory block";
|
||||
case VRAM_ERR_HANDLE: return "Error: Invalid or non-existent Handle";
|
||||
case VRAM_WRN_DEFRAG_REQ: return "Warning: Defragmentation required to allocate memory";
|
||||
@@ -26,13 +29,6 @@ const char* get_error(uint32_t code) {
|
||||
|
||||
case DISP_ERR_UNSUPPORTED: return "Error: Screen mode or pixel format not supported";
|
||||
|
||||
case APIOS_ERR_DUPLICATE_NAME: return "Error: Attempting to register a driver with a name that is already taken.";
|
||||
case APIOS_ERR_EMPTY_API: return "Error: The driver has an empty function table.";
|
||||
case APIOS_ERR_DRIVER_CRASH: return "Error: Error calling function: The function returned a critical failure that requires unloading.";
|
||||
case APIOS_WRN_PARTIAL_API: return "Warning: The driver is loaded, but some of its functions are not implemented.";
|
||||
case APIOS_ERR_NOT_INITIALIZED: return "Error: Attempting to call an API when the apios table is not initialized";
|
||||
case APIOS_ERR_DRIVER_NOT_FOUND: return "Error: Attempt to call API of non-existent driver";
|
||||
|
||||
default: return "Unknown system error";
|
||||
}
|
||||
}
|
||||
@@ -4,8 +4,9 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#define OS_OK 0x00000000
|
||||
#define OS_ERR 0x0000000f
|
||||
|
||||
// Общие системные ошибки (Generic)
|
||||
// Общие системные ошибки (0x00+)
|
||||
#define OS_ERR_NO_MEMORY 0x00000001 // Ошибка malloc (не хватило ОЗУ)
|
||||
#define OS_ERR_NOT_INIT 0x00000002 // Объект или таблица не инициализированы (NULL)
|
||||
#define OS_ERR_NOT_FOUND 0x00000003 // Драйвер, функция или файл не найдены
|
||||
@@ -15,29 +16,25 @@
|
||||
#define OS_WRN_ALREADY_INIT 0x00000007 // Объект уже был инициализирован ранее
|
||||
#define OS_WRN_NOT_NEED_INIT 0x00000008 // Попытка инициалезировать когда она этого не требует
|
||||
|
||||
// Специфические ошибки VRAM (0x10+)
|
||||
// Ошибки VFS (0x40+)
|
||||
#define VFS_ERR_TARGET_BUSY 0x00000040 // Ошибка повторное монтирование по занятому пути
|
||||
#define VFS_ERR_NOT_SUPPORTED 0x00000041 // Ошибка версия FS не поддерживается
|
||||
|
||||
// Специфические ошибки VRAM (0x10+)
|
||||
#define VRAM_ERR_RANGE 0x00000010 // Попытка записи/чтения за пределами блока
|
||||
#define VRAM_ERR_HANDLE 0x00000011 // Неверный или несуществующий Handle
|
||||
#define VRAM_WRN_DEFRAG_REQ 0x00000012 // Требуется дефрагментация для выделения памяти
|
||||
#define VRAM_ERR_WR_or_RD 0x00000013 // Ошибка чтения записи
|
||||
#define VRAM_ERR_POOL_MEMORY 0x00000014 // Ошибка выделения памяти
|
||||
|
||||
// Ошибки процессов и планировщика (0x20+)
|
||||
// Ошибки процессов и планировщика (0x20+)
|
||||
#define PROC_ERR_STACK 0x00000020 // Не хватило памяти под стек задачи
|
||||
#define PROC_ERR_PRIORITY 0x00000021 // Недопустимый приоритет FreeRTOS
|
||||
#define PROC_ERR_ALIVE 0x00000022 // Попытка действия над уже мертвым процессом
|
||||
|
||||
// Ошибки графической подсистемы (0x30+)
|
||||
// Ошибки графической подсистемы (0x30+)
|
||||
#define DISP_ERR_UNSUPPORTED 0x00000030 // Режим экрана или формат пикселя не поддерживается
|
||||
|
||||
// Ошибки APIOS (0x40+)
|
||||
#define APIOS_ERR_DUPLICATE_NAME 0x00000040 // Попытка зарегистрировать драйвер с именем, которое уже занято
|
||||
#define APIOS_ERR_EMPTY_API 0x00000041 // У драйвера пустая таблица функций (fn_count == 0)
|
||||
#define APIOS_ERR_DRIVER_CRASH 0x00000042 // Ошибка при вызове функции: функция вернула критический сбой, требующий выгрузки
|
||||
#define APIOS_WRN_PARTIAL_API 0x00000043 // Драйвер загружен, но некоторые его функции не реолизованны
|
||||
#define APIOS_ERR_NOT_INITIALIZED 0x00000044 // Попытка вызова API при неинициализированной таблице APIOS
|
||||
#define APIOS_ERR_DRIVER_NOT_FOUND 0x00000045 // Попытка вызвать API несущевствууещего драйвера
|
||||
|
||||
const char* get_error(uint32_t code);
|
||||
|
||||
#endif
|
||||
@@ -1,38 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "FreeRTOS.h"
|
||||
#include "drivers/fs/fs.h"
|
||||
#include "boot/entry.h"
|
||||
#include "boot/answer_code.h"
|
||||
|
||||
void log_result(int res, char *service_name){
|
||||
if (res == OS_OK) {
|
||||
printf("[ \033[0;32mOK\033[0m ] APIOS initialization\n");
|
||||
} else {
|
||||
char *err_text = "Error";
|
||||
const char *msg = get_error(res);
|
||||
if (strncmp(msg, err_text, 5) == 0) {
|
||||
printf("[ \033[0;31mEROR\033[0m ] %s initialization: %s (%d)\n", service_name, msg, res);
|
||||
} else {
|
||||
printf("[ \033[0;33mWARN\033[0m ] %s initialization: %s (%d)\n", service_name, msg, res);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main_entry()
|
||||
{
|
||||
printf("\033[2J\033[H");
|
||||
printf("OS started\n");
|
||||
|
||||
init_fs();
|
||||
|
||||
while (true)
|
||||
{
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Executable
+85
@@ -0,0 +1,85 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "FreeRTOS.h"
|
||||
#include "esp_cpu.h"
|
||||
#include "esp_timer.h"
|
||||
|
||||
#include "drivers/fs/fs.hpp"
|
||||
#include "boot/entry.hpp"
|
||||
#include "boot/answer_code.hpp"
|
||||
#include "lib/runtime/RT.hpp"
|
||||
|
||||
extern Handler_vfs boot_handler;
|
||||
|
||||
void log_result(int res, char *service_name){
|
||||
if (res == OS_OK) {
|
||||
printf("[ \033[0;32mOK\033[0m ] %s\n", service_name);
|
||||
} else {
|
||||
char *err_text = "Error";
|
||||
const char *msg = get_error(res);
|
||||
if (strncmp(msg, err_text, 5) == 0) {
|
||||
printf("[ \033[0;31mEROR\033[0m ] %s initialization: %s (%d)\n", service_name, msg, res);
|
||||
} else {
|
||||
printf("[ \033[0;33mWARN\033[0m ] %s initialization: %s (%d)\n", service_name, msg, res);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Result test_fn(descriptor *fn) {
|
||||
/*printf("Вызов функции %s\n", fn->name);
|
||||
fn->ret.int_v = 42;*/
|
||||
return {OS_OK, *fn};
|
||||
}
|
||||
|
||||
int main_entry()
|
||||
{
|
||||
printf("Free IRAM: %d bytes\n", heap_caps_get_free_size(MALLOC_CAP_INTERNAL | MALLOC_CAP_32BIT | MALLOC_CAP_EXEC));
|
||||
printf("Largest IRAM block: %d bytes\n", heap_caps_get_largest_free_block(MALLOC_CAP_INTERNAL | MALLOC_CAP_32BIT | MALLOC_CAP_EXEC));
|
||||
|
||||
//printf("\033[2J\033[H");
|
||||
printf("OS started\n");
|
||||
|
||||
log_result(init_fs(), "VFS");
|
||||
|
||||
mount(MOUNT_HANDLER, boot_handler.path, boot_handler.path, &boot_handler);
|
||||
|
||||
/*
|
||||
|
||||
boot_handler.link_function("/test_fn", test_fn);
|
||||
|
||||
int fd = open("/boot/test_fn", O_RDWR | O_CREAT | O_TRUNC);
|
||||
if (fd >= 0) {
|
||||
//write(fd, "Hello, world!", 13);
|
||||
|
||||
Result res_buffer;
|
||||
ssize_t bytes_read = read(fd, &res_buffer, sizeof(Result));
|
||||
|
||||
if (bytes_read == sizeof(Result)) {
|
||||
printf("Структура успешно получена напрямую из ядра! [%d]\n", res_buffer.data.ret.int_v);
|
||||
}
|
||||
|
||||
close(fd);
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
printf("Free IRAM: %u bytes\n",
|
||||
heap_caps_get_free_size(MALLOC_CAP_EXEC));
|
||||
|
||||
printf("Largest IRAM block: %u bytes\n",
|
||||
heap_caps_get_largest_free_block(MALLOC_CAP_EXEC));
|
||||
|
||||
run_app_from_iram();
|
||||
|
||||
while (true)
|
||||
{
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
#ifndef TYPEDEF
|
||||
#define TYPEDEF
|
||||
|
||||
typedef int (*entry_fn_t)(void *args);
|
||||
typedef int (*entry_fn_t)();
|
||||
|
||||
typedef struct {
|
||||
char name[128];
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "boot/entry.h"
|
||||
#include "boot/typedef.h"
|
||||
#include "boot/entry.hpp"
|
||||
#include "boot/typedef.hpp"
|
||||
|
||||
boot_entry_t entry_data[] = {
|
||||
{
|
||||
@@ -10,5 +10,5 @@ boot_entry_t entry_data[] = {
|
||||
}
|
||||
};
|
||||
|
||||
const int autostart_index = 0;
|
||||
const int entry_table_count = 1;
|
||||
extern const int autostart_index = 0;
|
||||
extern const int entry_table_count = 1;
|
||||
@@ -1,76 +0,0 @@
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "esp_vfs_fat.h"
|
||||
#include "esp_spiffs.h"
|
||||
#include "esp_littlefs.h"
|
||||
#include "drivers/fs/fs.h"
|
||||
#include "boot/typedef.h"
|
||||
#include "boot/answer_code.h"
|
||||
#include "boot/entry.h"
|
||||
|
||||
esp_err_t mount(fs_type_t type, const char *path, const char *label) {
|
||||
switch (type) {
|
||||
case MOUNT_LITTLEFS: {
|
||||
printf("fs: mount littlefs\n");
|
||||
esp_vfs_littlefs_conf_t conf = {
|
||||
.base_path = path,
|
||||
.partition_label = label,
|
||||
.format_if_mount_failed = true
|
||||
};
|
||||
return esp_vfs_littlefs_register(&conf);
|
||||
}
|
||||
|
||||
case MOUNT_SD_CARD: {
|
||||
printf("fs: sd card mount is not configured yet\n");
|
||||
// Для SD нужны sdmmc_host_t и sdmmc_slot_config_t
|
||||
// Пока возвращаем ошибку, чтобы скомпилировалось
|
||||
return ESP_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
case MOUNT_SPIFFS: {
|
||||
printf("fs: mount spiffs\n");
|
||||
esp_vfs_spiffs_conf_t conf = {
|
||||
.base_path = path,
|
||||
.partition_label = label,
|
||||
.max_files = 5,
|
||||
.format_if_mount_failed = true
|
||||
};
|
||||
return esp_vfs_spiffs_register(&conf);
|
||||
}
|
||||
|
||||
default:
|
||||
return ESP_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
}
|
||||
int unmount() {
|
||||
printf("fs: unmount");
|
||||
return 0;
|
||||
}
|
||||
int format() {
|
||||
printf("fs: format");
|
||||
return 0;
|
||||
}
|
||||
int get_info() {
|
||||
printf("fs: get_info");
|
||||
return 0;
|
||||
}
|
||||
int is_present() {
|
||||
printf("fs: is_present");
|
||||
return 0;
|
||||
}
|
||||
int get_vfs_config() {
|
||||
printf("fs: get_vfs_config");
|
||||
return 0;
|
||||
}
|
||||
|
||||
int init_fs() {
|
||||
// Проверьте, как называется макрос ошибки в boot/answer_code.h
|
||||
// Если там ANS_ERR или что-то другое, замените здесь
|
||||
if (mount(MOUNT_SPIFFS, "/spiffs", "storage") != ESP_OK) {
|
||||
printf("fs: init failed\n");
|
||||
return 1; // Используйте число или верный макрос из answer_code.h
|
||||
}
|
||||
return 0; // Аналогично для OK
|
||||
}
|
||||
Executable
+239
@@ -0,0 +1,239 @@
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <dirent.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include "esp_vfs.h"
|
||||
#include "esp_vfs_fat.h"
|
||||
#include "esp_spiffs.h"
|
||||
#include "esp_littlefs.h"
|
||||
#include "mbedtls/sha256.h"
|
||||
|
||||
#include "drivers/fs/fs.hpp"
|
||||
#include "boot/typedef.hpp"
|
||||
#include "boot/answer_code.hpp"
|
||||
#include "boot/entry.hpp"
|
||||
#include "drivers/fs/handlers.hpp"
|
||||
|
||||
void input_string(char *buffer, size_t max_len, bool hide_echo) {
|
||||
int i = 0;
|
||||
while (i < max_len - 1) {
|
||||
int c = getchar();
|
||||
if (c == EOF || c == 0xFF) {
|
||||
vTaskDelay(pdMS_TO_TICKS(10));
|
||||
continue;
|
||||
}
|
||||
if (c == '\n' || c == '\r') {
|
||||
buffer[i] = '\0';
|
||||
printf("\n");
|
||||
break;
|
||||
}
|
||||
if (c == '\b' || c == 127) {
|
||||
if (i > 0) {
|
||||
i--;
|
||||
printf("\b \b");
|
||||
fflush(stdout);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (c >= 32 && c <= 126) {
|
||||
buffer[i++] = (char)c;
|
||||
if (!hide_echo) putchar(c);
|
||||
else putchar('*');
|
||||
fflush(stdout);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void create_fs() {
|
||||
|
||||
char device_name[32];
|
||||
char user_name[32];
|
||||
char user_password[32];
|
||||
char user_password_sha256[32];
|
||||
|
||||
printf("\033[0;31mNot find file os\n\033[0m");
|
||||
printf("Please entry device name: ");
|
||||
input_string(device_name, 32, false);
|
||||
printf("Please entry username: ");
|
||||
input_string(user_name, 32, false);
|
||||
printf("Please entry user password: ");
|
||||
input_string(user_password, 32, true);
|
||||
|
||||
mbedtls_sha256((const unsigned char *)user_password, strlen(user_password), (unsigned char *)user_password_sha256, 0);
|
||||
|
||||
char hex_hash[65];
|
||||
for (int j = 0; j < 32; j++) {
|
||||
sprintf(&hex_hash[j * 2], "%02x", (unsigned char)user_password_sha256[j]);
|
||||
}
|
||||
|
||||
printf("device_name: %s\n", device_name);
|
||||
printf("user_name: %s\n", user_name);
|
||||
printf("user_password: %s\n", user_password);
|
||||
printf("user_password_sha256: %s\n", user_password_sha256);
|
||||
|
||||
int total_prograss = 0;
|
||||
int max_prograss = 15;
|
||||
|
||||
mkdir("/bin", 0777); total_prograss++;
|
||||
mkdir("/boot", 0777); total_prograss++;
|
||||
mkdir("/dev", 0777); total_prograss++;
|
||||
mkdir("/etc", 0777); total_prograss++;
|
||||
mkdir("/home", 0777); total_prograss++;
|
||||
mkdir("/lib", 0777); total_prograss++;
|
||||
mkdir("/mnt", 0777); total_prograss++;
|
||||
mkdir("/opt", 0777); total_prograss++;
|
||||
mkdir("/root", 0777); total_prograss++;
|
||||
mkdir("tmp", 0777); total_prograss++;
|
||||
mkdir("/usr", 0777); total_prograss++;
|
||||
|
||||
FILE *file = fopen("/etc/hostname", "w"); total_prograss++;
|
||||
fprintf(file, "%s\n", device_name);
|
||||
fclose(file);
|
||||
|
||||
file = fopen("/etc/passwd", "w"); total_prograss++;
|
||||
fprintf(file, "root:0:0:/root:/bin/shell\n%s:1000:1000:/home/%s:/bin/shell\n", user_name, user_name);
|
||||
fclose(file);
|
||||
|
||||
file = fopen("/etc/shadow", "w"); total_prograss++;
|
||||
fprintf(file, "root:*\n%s:%s\n", user_name, hex_hash);
|
||||
fclose(file);
|
||||
|
||||
file = fopen("/etc/group", "w"); total_prograss++;
|
||||
fprintf(file, "root:0:root\nusr:1000:%s", user_name);
|
||||
fclose(file);
|
||||
|
||||
}
|
||||
|
||||
void list_files(const char *path) {
|
||||
printf("Чтение директории: %s\n", path);
|
||||
|
||||
DIR *dir = opendir(path);
|
||||
if (dir == NULL) {
|
||||
printf("Не удалось открыть директорию\n");
|
||||
return;
|
||||
}
|
||||
|
||||
struct dirent *entry;
|
||||
int found = 0;
|
||||
while ((entry = readdir(dir)) != NULL) {
|
||||
found++;
|
||||
const char *type = (entry->d_type == DT_DIR) ? "DIR" : "FILE";
|
||||
printf("[%s] %s\n", type, entry->d_name);
|
||||
}
|
||||
|
||||
if (found == 0) {
|
||||
printf("Директория пуста\n");
|
||||
}
|
||||
|
||||
closedir(dir);
|
||||
}
|
||||
|
||||
bool file_exists(const char *path) {
|
||||
struct stat buffer;
|
||||
return (stat(path, &buffer) == 0);
|
||||
}
|
||||
uint32_t mount(fs_type_t type, const char *path, const char *label, const Handler_vfs *class_fs) {
|
||||
switch (type) {
|
||||
case MOUNT_LITTLEFS: {
|
||||
printf("fs: mount littlefs\n");
|
||||
esp_vfs_littlefs_conf_t conf = {
|
||||
.base_path = path,
|
||||
.partition_label = label,
|
||||
.format_if_mount_failed = true
|
||||
};
|
||||
switch (esp_vfs_littlefs_register(&conf))
|
||||
{
|
||||
case ESP_OK: return OS_OK;
|
||||
case ESP_ERR_NO_MEM: return OS_ERR_NO_MEMORY;
|
||||
case ESP_ERR_INVALID_ARG: return OS_ERR_INVALID_ARG;
|
||||
case ESP_ERR_INVALID_STATE: return VFS_ERR_TARGET_BUSY;
|
||||
case ESP_FAIL: return OS_ERR;
|
||||
case ESP_ERR_NOT_FOUND: return OS_ERR_NOT_FOUND;
|
||||
case ESP_ERR_NOT_SUPPORTED: return VFS_ERR_NOT_SUPPORTED;
|
||||
default: return OS_ERR;
|
||||
};
|
||||
}
|
||||
|
||||
case MOUNT_SD_CARD: {
|
||||
printf("fs: sd card mount is not configured yet\n");
|
||||
return VFS_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
case MOUNT_SPIFFS: {
|
||||
printf("fs: mount spiffs\n");
|
||||
esp_vfs_spiffs_conf_t conf = {
|
||||
.base_path = path,
|
||||
.partition_label = label,
|
||||
.max_files = 5,
|
||||
.format_if_mount_failed = true
|
||||
};
|
||||
switch (esp_vfs_spiffs_register(&conf))
|
||||
{
|
||||
case ESP_OK: return OS_OK;
|
||||
case ESP_ERR_NO_MEM: return OS_ERR_NO_MEMORY;
|
||||
case ESP_ERR_INVALID_ARG: return OS_ERR_INVALID_ARG;
|
||||
case ESP_ERR_INVALID_STATE: return VFS_ERR_TARGET_BUSY;
|
||||
case ESP_FAIL: return OS_ERR;
|
||||
case ESP_ERR_NOT_FOUND: return OS_ERR_NOT_FOUND;
|
||||
case ESP_ERR_NOT_SUPPORTED: return VFS_ERR_NOT_SUPPORTED;
|
||||
default: return OS_ERR;
|
||||
};
|
||||
}
|
||||
|
||||
case MOUNT_HANDLER: {
|
||||
esp_vfs_t conf = {};
|
||||
memset(&conf, 0, sizeof(conf));
|
||||
conf.flags = ESP_VFS_FLAG_CONTEXT_PTR;
|
||||
conf.open_p = &Handler_vfs::open_vfs;
|
||||
conf.read_p = &Handler_vfs::read_vfs;
|
||||
conf.write_p = &Handler_vfs::write_vfs;
|
||||
conf.close_p = &Handler_vfs::close_vfs;
|
||||
switch (esp_vfs_register(path, &conf, (void*)class_fs))
|
||||
{
|
||||
case ESP_OK: return OS_OK;
|
||||
case ESP_ERR_NO_MEM: return OS_ERR_NO_MEMORY;
|
||||
case ESP_ERR_INVALID_ARG: return OS_ERR_INVALID_ARG;
|
||||
case ESP_ERR_INVALID_STATE: return VFS_ERR_TARGET_BUSY;
|
||||
case ESP_FAIL: return OS_ERR;
|
||||
case ESP_ERR_NOT_FOUND: return OS_ERR_NOT_FOUND;
|
||||
case ESP_ERR_NOT_SUPPORTED: return VFS_ERR_NOT_SUPPORTED;
|
||||
default: return OS_ERR;
|
||||
};
|
||||
}
|
||||
|
||||
default:
|
||||
return ESP_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
}
|
||||
int unmount() {
|
||||
printf("fs: unmount");
|
||||
return 0;
|
||||
}
|
||||
int format() {
|
||||
printf("fs: format");
|
||||
return 0;
|
||||
}
|
||||
int get_info() {
|
||||
printf("fs: get_info");
|
||||
return 0;
|
||||
}
|
||||
int is_present() {
|
||||
printf("fs: is_present");
|
||||
return 0;
|
||||
}
|
||||
int get_vfs_config() {
|
||||
printf("fs: get_vfs_config");
|
||||
return 0;
|
||||
}
|
||||
|
||||
int init_fs() {
|
||||
uint32_t ret = mount(MOUNT_LITTLEFS, "", "storage");
|
||||
if (ret != OS_OK) return ret;
|
||||
|
||||
if (!file_exists("/etc/hostname")) create_fs();
|
||||
|
||||
return OS_OK;
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
#ifndef _FS_H_
|
||||
#define _FS_H_
|
||||
|
||||
#include "boot/typedef.h"
|
||||
|
||||
typedef enum {
|
||||
MOUNT_LITTLEFS,
|
||||
MOUNT_SD_CARD,
|
||||
MOUNT_SPIFFS
|
||||
} fs_type_t;
|
||||
|
||||
int init_fs();
|
||||
|
||||
esp_err_t mount(fs_type_t type, const char *path, const char *label);
|
||||
int unmount();
|
||||
int format();
|
||||
int get_info();
|
||||
int is_present();
|
||||
int get_vfs_config();
|
||||
|
||||
#endif
|
||||
Executable
+32
@@ -0,0 +1,32 @@
|
||||
#ifndef _FS_H_
|
||||
#define _FS_H_
|
||||
|
||||
#include <sys/stat.h>
|
||||
#include <sys/dirent.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "boot/typedef.hpp"
|
||||
#include "drivers/fs/handlers.hpp"
|
||||
|
||||
#include "esp_err.h"
|
||||
|
||||
typedef enum {
|
||||
MOUNT_LITTLEFS,
|
||||
MOUNT_SD_CARD,
|
||||
MOUNT_SPIFFS,
|
||||
MOUNT_HANDLER
|
||||
} fs_type_t;
|
||||
|
||||
int init_fs();
|
||||
|
||||
void list_files(const char *path);
|
||||
bool file_exists(const char *path);
|
||||
uint32_t mount(fs_type_t type, const char *path, const char *label, const Handler_vfs *class_fs = NULL);
|
||||
int unmount();
|
||||
int format();
|
||||
int get_info();
|
||||
int is_present();
|
||||
int get_vfs_config();
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,162 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "boot/answer_code.hpp"
|
||||
#include "drivers/fs/handlers.hpp"
|
||||
#include "drivers/fs/fs.hpp"
|
||||
|
||||
Handler_vfs boot_handler("/boot");
|
||||
|
||||
Handler_vfs::Handler_vfs(const char *path) {
|
||||
strcpy(this->path, path);
|
||||
count_fn = 0;
|
||||
count_ds = 0;
|
||||
capacity_fn = 10;
|
||||
capacity_ds = 10;
|
||||
functions = (function_file*)malloc(capacity_fn * sizeof(function_file));
|
||||
descriptors = (descriptor*)malloc(capacity_ds * sizeof(descriptor));
|
||||
};
|
||||
|
||||
Handler_vfs::~Handler_vfs() {
|
||||
if (functions != nullptr) {
|
||||
free(functions);
|
||||
}
|
||||
}
|
||||
|
||||
int Handler_vfs::link_function(const char *name, func_t func) {
|
||||
if (count_fn + 1 > capacity_fn) {
|
||||
int new_capacity = capacity_fn + 10;
|
||||
size_t new_size = new_capacity * sizeof(function_file);
|
||||
|
||||
function_file* temp = (function_file*)realloc(functions, new_size);
|
||||
|
||||
if (temp != nullptr) {
|
||||
functions = temp;
|
||||
capacity_fn = new_capacity;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
strncpy(functions[count_fn].name, name, 32);
|
||||
functions[count_fn].handler = func;
|
||||
|
||||
count_fn++;
|
||||
|
||||
return 0;
|
||||
}
|
||||
int Handler_vfs::unlink_function(const char *name) {
|
||||
int index = -1;
|
||||
for (int i = 0; i < count_fn; i++) {
|
||||
if (strcmp(functions[i].name, name) == 0) {
|
||||
index = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (index == -1) return -1;
|
||||
|
||||
for (int i = index; i < count_fn - 1; i++) {
|
||||
functions[i] = functions[i + 1];
|
||||
}
|
||||
|
||||
count_fn--;
|
||||
|
||||
if (capacity_fn - count_fn >= 15 && capacity_fn > 10) {
|
||||
int new_capacity = capacity_fn - 10;
|
||||
size_t new_size = new_capacity * sizeof(function_file);
|
||||
|
||||
function_file* temp = (function_file*)realloc(functions, new_size);
|
||||
if (temp != nullptr || new_size == 0) {
|
||||
functions = temp;
|
||||
capacity_fn = new_capacity;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Handler_vfs::open(const char *name, int flags, int mode) {
|
||||
int fn_idx = -1;
|
||||
for (int i = 0; i < count_fn; i++) {
|
||||
if (strcmp(functions[i].name, name) == 0) { { fn_idx = i; break; } }
|
||||
}
|
||||
if (fn_idx == -1) return OS_ERR_NOT_FOUND;
|
||||
|
||||
int target_fd = -1;
|
||||
for (int i = 0; i < count_ds; i++) {
|
||||
if (descriptors[i].handler == nullptr) {
|
||||
target_fd = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (target_fd == -1) {
|
||||
if (count_ds + 1 > capacity_ds) {
|
||||
int new_capacity = capacity_ds + 10;
|
||||
descriptor* temp = (descriptor*)realloc(descriptors, new_capacity * sizeof(descriptor));
|
||||
if (temp == nullptr) return OS_ERR_NO_MEMORY;
|
||||
descriptors = temp;
|
||||
capacity_ds = new_capacity;
|
||||
}
|
||||
target_fd = count_ds;
|
||||
count_ds++;
|
||||
}
|
||||
|
||||
memset(descriptors[target_fd].name, 0, 32);
|
||||
strncpy(descriptors[target_fd].name, name, 31);
|
||||
descriptors[target_fd].handler = functions[fn_idx].handler;
|
||||
|
||||
return target_fd;
|
||||
}
|
||||
int Handler_vfs::open_vfs(void* ctx, const char *path, int flags, int mode) {
|
||||
Handler_vfs* self = (Handler_vfs*)ctx;
|
||||
return self->open(path, flags, mode);
|
||||
}
|
||||
|
||||
ssize_t Handler_vfs::read(int fd, void *dst, size_t size) {
|
||||
|
||||
if (fd < 0 || fd >= count_ds || descriptors[fd].handler == nullptr) return OS_ERR_NOT_FOUND;
|
||||
if (dst == nullptr) return OS_ERR_NOT_FOUND;
|
||||
|
||||
if (size < sizeof(Result)) return OS_ERR_NO_MEMORY;
|
||||
|
||||
Result res = descriptors[fd].handler(&descriptors[fd]);
|
||||
|
||||
memcpy(dst, &res, sizeof(res));
|
||||
|
||||
return sizeof(res);
|
||||
}
|
||||
|
||||
ssize_t Handler_vfs::read_vfs(void* ctx, int fd, void *dst, size_t size) {
|
||||
Handler_vfs* self = (Handler_vfs*)ctx;
|
||||
return self->read(fd, dst, size);
|
||||
}
|
||||
|
||||
ssize_t Handler_vfs::write(int fd, const void *src, size_t size) {
|
||||
//printf("Handler write [%d]\n", fd);
|
||||
return 0;
|
||||
}
|
||||
ssize_t Handler_vfs::write_vfs(void* ctx, int fd, const void *src, size_t size) {
|
||||
Handler_vfs* self = (Handler_vfs*)ctx;
|
||||
return self->write(fd, src, size);
|
||||
}
|
||||
|
||||
int Handler_vfs::close(int fd) {
|
||||
if (fd < 0 || fd >= count_ds) return OS_ERR_INVALID_ARG;
|
||||
descriptors[fd].handler = nullptr;
|
||||
return 0;
|
||||
}
|
||||
int Handler_vfs::close_vfs(void* ctx, int fd) {
|
||||
Handler_vfs* self = (Handler_vfs*)ctx;
|
||||
return self->close(fd);
|
||||
}
|
||||
|
||||
int Handler_vfs::rename(const char *src, const char *dst) {
|
||||
printf("Handler rename [%s] [%s]\n", src, dst);
|
||||
return 0;
|
||||
}
|
||||
int Handler_vfs::rename_vfs(void* ctx, const char *src, const char *dst) {
|
||||
Handler_vfs* self = (Handler_vfs*)ctx;
|
||||
return self->rename(src, dst);
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
#ifndef HANDLERS_HPP
|
||||
#define HANDLERS_HPP
|
||||
|
||||
#include <sys/stat.h>
|
||||
#include <sys/dirent.h>
|
||||
#include <unistd.h>
|
||||
|
||||
struct descriptor;
|
||||
struct Result;
|
||||
|
||||
typedef Result (*func_t)(descriptor*);
|
||||
|
||||
enum arg_t { argINT_t, argFLOAT_t, argSTRING_t };
|
||||
|
||||
struct arg {
|
||||
arg_t type;
|
||||
union {
|
||||
int valueINT;
|
||||
float valueFLOAT;
|
||||
char valueSTRING[32];
|
||||
} value;
|
||||
};
|
||||
|
||||
struct descriptor
|
||||
{
|
||||
char name[32];
|
||||
arg args[8];
|
||||
union {
|
||||
int int_v;
|
||||
float float_v;
|
||||
char string_v[32];
|
||||
} ret;
|
||||
func_t handler;
|
||||
};
|
||||
|
||||
struct function_file {
|
||||
char name[32];
|
||||
func_t handler;
|
||||
descriptor descriptors;
|
||||
};
|
||||
|
||||
struct Result {
|
||||
int code;
|
||||
descriptor data;
|
||||
};
|
||||
|
||||
class Handler_vfs {
|
||||
public:
|
||||
char path[32];
|
||||
|
||||
Handler_vfs(const char *path);
|
||||
~Handler_vfs();
|
||||
int link_function(const char *name, func_t func);
|
||||
int unlink_function(const char *name);
|
||||
|
||||
int open(const char *name, int flags, int mode);
|
||||
static int open_vfs(void* ctx, const char *path, int flags, int mode);
|
||||
|
||||
ssize_t read(int fd, void *dst, size_t size);
|
||||
static ssize_t read_vfs(void* ctx, int fd, void *dst, size_t size);
|
||||
|
||||
ssize_t write(int fd, const void *src, size_t size);
|
||||
static ssize_t write_vfs(void* ctx, int fd, const void *src, size_t size);
|
||||
|
||||
int close(int fd);
|
||||
static int close_vfs(void* ctx, int fd);
|
||||
|
||||
int rename(const char *src, const char *dst);
|
||||
static int rename_vfs(void* ctx, const char *src, const char *dst);
|
||||
|
||||
private:
|
||||
function_file* functions;
|
||||
descriptor* descriptors;
|
||||
int count_fn = 0;
|
||||
int count_ds = 0;
|
||||
int capacity_fn = 0;
|
||||
int capacity_ds = 0;
|
||||
static Handler_vfs* instance;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,28 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "esp_heap_caps.h"
|
||||
#include "esp_cpu.h"
|
||||
|
||||
typedef int (*func_t)(void);
|
||||
|
||||
void run_app_from_iram(void)
|
||||
{
|
||||
uint8_t code[] = {
|
||||
0x36, 0x41, 0x00, 0x2c, 0xa2, 0x1d, 0xf0
|
||||
};
|
||||
|
||||
void *exec = heap_caps_malloc(sizeof(code),
|
||||
MALLOC_CAP_EXEC | MALLOC_CAP_8BIT);
|
||||
|
||||
memcpy(exec, code, sizeof(code));
|
||||
|
||||
//esp_cpu_invalidate_icache_all();
|
||||
|
||||
func_t f = (func_t)exec;
|
||||
|
||||
int result = f();
|
||||
|
||||
printf("Result = %d\n", result); // Должно быть 42
|
||||
|
||||
heap_caps_free(exec);
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
#ifndef RT_HPP
|
||||
#define RT_HPP
|
||||
|
||||
void run_app_from_iram();
|
||||
|
||||
#endif
|
||||
+67
-48
@@ -359,7 +359,7 @@ static void apply_system_config(system_config_t *cfg)
|
||||
|
||||
if (cfg->watchdog_timeout > 0) {
|
||||
esp_task_wdt_config_t wdt = {
|
||||
.timeout_ms = cfg->watchdog_timeout * 1000,
|
||||
.timeout_ms = (uint32_t)(cfg->watchdog_timeout * 1000),
|
||||
.idle_core_mask = (1 << 0) | (1 << 1),
|
||||
.trigger_panic = true
|
||||
};
|
||||
@@ -391,18 +391,18 @@ static void apply_system_config(system_config_t *cfg)
|
||||
|
||||
static configurator_ctx_t *create_configurator_ctx(system_config_t *shared)
|
||||
{
|
||||
configurator_ctx_t *ctx = calloc(1, sizeof(configurator_ctx_t));
|
||||
configurator_ctx_t *ctx = (configurator_ctx_t *)calloc(1, sizeof(configurator_ctx_t));
|
||||
if (!ctx) return NULL;
|
||||
|
||||
ctx->main_items = calloc(8, sizeof(conf_item));
|
||||
ctx->cpu_items = calloc(3, sizeof(conf_item));
|
||||
ctx->memory_items = calloc(4, sizeof(conf_item));
|
||||
ctx->storage_items = calloc(1, sizeof(conf_item));
|
||||
ctx->hardware_items = calloc(6, sizeof(conf_item));
|
||||
ctx->power_items = calloc(2, sizeof(conf_item));
|
||||
ctx->tabs = calloc(TAB_COUNT, sizeof(conf_item *));
|
||||
ctx->counts = calloc(TAB_COUNT, sizeof(int));
|
||||
ctx->config = calloc(1, sizeof(system_config_t));
|
||||
ctx->main_items = (conf_item *)calloc(8, sizeof(conf_item));
|
||||
ctx->cpu_items = (conf_item *)calloc(3, sizeof(conf_item));
|
||||
ctx->memory_items = (conf_item *)calloc(4, sizeof(conf_item));
|
||||
ctx->storage_items = (conf_item *)calloc(1, sizeof(conf_item));
|
||||
ctx->hardware_items = (conf_item *)calloc(6, sizeof(conf_item));
|
||||
ctx->power_items = (conf_item *)calloc(2, sizeof(conf_item));
|
||||
ctx->tabs = (conf_item **)calloc(TAB_COUNT, sizeof(conf_item *));
|
||||
ctx->counts = (int *)calloc(TAB_COUNT, sizeof(int));
|
||||
ctx->config = (system_config_t *)calloc(1, sizeof(system_config_t));
|
||||
|
||||
if (!ctx->main_items || !ctx->cpu_items || !ctx->memory_items ||
|
||||
!ctx->storage_items || !ctx->hardware_items || !ctx->power_items ||
|
||||
@@ -890,31 +890,27 @@ static int show_selection_popup(conf_item *item)
|
||||
for (int i = 0; i < pw - 2; i++) printf("═");
|
||||
printf("╣");
|
||||
|
||||
void draw_ch(void) {
|
||||
for (int i = 0; i < item->choice_count; i++) {
|
||||
printf("\033[%d;%dH║", py + 3 + i, px);
|
||||
if (i == sel) printf("\033[44m\033[97m");
|
||||
for (int i = 0; i < item->choice_count; i++) {
|
||||
printf("\033[%d;%dH║", py + 3 + i, px);
|
||||
if (i == sel) printf("\033[44m\033[97m");
|
||||
|
||||
char ct[26] = "";
|
||||
switch (item->type) {
|
||||
case conf_char16_t:
|
||||
snprintf(ct, sizeof(ct), "%s", item->choices_char16[i]); break;
|
||||
case conf_int8_t:
|
||||
snprintf(ct, sizeof(ct), "%d", item->choices_int8[i]); break;
|
||||
case conf_int16_t:
|
||||
snprintf(ct, sizeof(ct), "%d", item->choices_int16[i]); break;
|
||||
case conf_bool_t:
|
||||
snprintf(ct, sizeof(ct), "%s",
|
||||
item->choices_bool[i] ? "Enabled" : "Disabled");
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
printf(" %-*s \033[0m║", pw - 4, ct);
|
||||
char ct[26] = "";
|
||||
switch (item->type) {
|
||||
case conf_char16_t:
|
||||
snprintf(ct, sizeof(ct), "%s", item->choices_char16[i]); break;
|
||||
case conf_int8_t:
|
||||
snprintf(ct, sizeof(ct), "%d", item->choices_int8[i]); break;
|
||||
case conf_int16_t:
|
||||
snprintf(ct, sizeof(ct), "%d", item->choices_int16[i]); break;
|
||||
case conf_bool_t:
|
||||
snprintf(ct, sizeof(ct), "%s",
|
||||
item->choices_bool[i] ? "Enabled" : "Disabled");
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
printf(" %-*s \033[0m║", pw - 4, ct);
|
||||
}
|
||||
|
||||
draw_ch();
|
||||
|
||||
printf("\033[%d;%dH╚", py + 3 + item->choice_count, px);
|
||||
for (int i = 0; i < pw - 2; i++) printf("═");
|
||||
printf("╝");
|
||||
@@ -933,7 +929,26 @@ static int show_selection_popup(conf_item *item)
|
||||
if (s1 == 0x5B) {
|
||||
if (s2 == 0x41 && sel > 0) sel--;
|
||||
else if (s2 == 0x42 && sel < item->choice_count - 1) sel++;
|
||||
draw_ch();
|
||||
for (int i = 0; i < item->choice_count; i++) {
|
||||
printf("\033[%d;%dH║", py + 3 + i, px);
|
||||
if (i == sel) printf("\033[44m\033[97m");
|
||||
|
||||
char ct[26] = "";
|
||||
switch (item->type) {
|
||||
case conf_char16_t:
|
||||
snprintf(ct, sizeof(ct), "%s", item->choices_char16[i]); break;
|
||||
case conf_int8_t:
|
||||
snprintf(ct, sizeof(ct), "%d", item->choices_int8[i]); break;
|
||||
case conf_int16_t:
|
||||
snprintf(ct, sizeof(ct), "%d", item->choices_int16[i]); break;
|
||||
case conf_bool_t:
|
||||
snprintf(ct, sizeof(ct), "%s",
|
||||
item->choices_bool[i] ? "Enabled" : "Disabled");
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
printf(" %-*s \033[0m║", pw - 4, ct);
|
||||
}
|
||||
}
|
||||
} else if (b == '\r' || b == '\n') {
|
||||
return sel;
|
||||
@@ -974,15 +989,11 @@ static bool show_confirm_dialog(const char *title, const char *msg)
|
||||
printf("\033[%d;%dH║ %-*s ║", py + 3, px, pw - 4, msg);
|
||||
printf("\033[%d;%dH║ %-*s ║", py + 4, px, pw - 4, "");
|
||||
|
||||
void draw_btn(void) {
|
||||
printf("\033[%d;%dH║", py + 5, px);
|
||||
printf(sel == 0 ? " \033[42m\033[97m Yes \033[0m" : " Yes ");
|
||||
printf(" ");
|
||||
printf(sel == 1 ? "\033[41m\033[97m No \033[0m" : " No ");
|
||||
printf(" ║");
|
||||
}
|
||||
|
||||
draw_btn();
|
||||
printf("\033[%d;%dH║", py + 5, px);
|
||||
printf(sel == 0 ? " \033[42m\033[97m Yes \033[0m" : " Yes ");
|
||||
printf(" ");
|
||||
printf(sel == 1 ? "\033[41m\033[97m No \033[0m" : " No ");
|
||||
printf(" ║");
|
||||
|
||||
printf("\033[%d;%dH╚", py + 6, px);
|
||||
for (int i = 0; i < pw - 2; i++) printf("═");
|
||||
@@ -996,7 +1007,14 @@ static bool show_confirm_dialog(const char *title, const char *msg)
|
||||
int s1 = getchar();
|
||||
if (s1 == EOF) return false;
|
||||
int s2 = getchar();
|
||||
if (s1 == 0x5B && (s2 == 0x43 || s2 == 0x44)) { sel = 1 - sel; draw_btn(); }
|
||||
if (s1 == 0x5B && (s2 == 0x43 || s2 == 0x44)) {
|
||||
sel = 1 - sel;
|
||||
printf("\033[%d;%dH║", py + 5, px);
|
||||
printf(sel == 0 ? " \033[42m\033[97m Yes \033[0m" : " Yes ");
|
||||
printf(" ");
|
||||
printf(sel == 1 ? "\033[41m\033[97m No \033[0m" : " No ");
|
||||
printf(" ║");
|
||||
}
|
||||
} else if (b == '\r' || b == '\n') return (sel == 0);
|
||||
else if (b == 'y' || b == 'Y') return true;
|
||||
else if (b == 'n' || b == 'N') return false;
|
||||
@@ -1180,12 +1198,13 @@ static void show_boot_info(void)
|
||||
printf(" \033[1mCPU :\033[0m %d MHz (actual)\n\n", read_cpu_freq_mhz());
|
||||
}
|
||||
|
||||
void app_main(void)
|
||||
extern "C" void app_main(void)
|
||||
{
|
||||
bootloader_ctx_t *ctx = calloc(1, sizeof(bootloader_ctx_t));
|
||||
|
||||
bootloader_ctx_t *ctx = (bootloader_ctx_t *)calloc(1, sizeof(bootloader_ctx_t));
|
||||
if (!ctx) return;
|
||||
|
||||
ctx->config = calloc(1, sizeof(system_config_t));
|
||||
ctx->config = (system_config_t *)calloc(1, sizeof(system_config_t));
|
||||
if (!ctx->config) { free(ctx); return; }
|
||||
|
||||
*ctx->config = default_config();
|
||||
@@ -1235,8 +1254,8 @@ void app_main(void)
|
||||
printf(" \033[32mOK\033[0m\n");
|
||||
|
||||
printf(" [4/4] Loading boot entries...\n");
|
||||
ctx->abstraction = malloc(sizeof(abstraction_entry_t) * (entry_table_count + 1));
|
||||
ctx->entries = malloc(sizeof(entries_t) * (entry_table_count + 1));
|
||||
ctx->abstraction = (abstraction_entry_t *)malloc(sizeof(abstraction_entry_t) * (entry_table_count + 1));
|
||||
ctx->entries = (entries_t *)malloc(sizeof(entries_t) * (entry_table_count + 1));
|
||||
|
||||
if (!ctx->entries || !ctx->abstraction) {
|
||||
free_bootloader_ctx(ctx);
|
||||
Reference in New Issue
Block a user