diff --git a/.gitignore b/.gitignore index b4bb646..ef2e711 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ pcb/panel/* sdkconfig sdkconfig.old +.vscode/* diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 1ad1dee..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "idf.pythonInstallPath": "/usr/bin/python3" -} \ No newline at end of file diff --git a/config/Kconfig.projbuild b/config/Kconfig.projbuild index e6afc94..3f6bd18 100644 --- a/config/Kconfig.projbuild +++ b/config/Kconfig.projbuild @@ -34,7 +34,7 @@ menu "Example Configuration" config BLINK_GPIO int "Blink GPIO number" range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX - default 2 + default 4 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. @@ -42,7 +42,7 @@ menu "Example Configuration" config BLINK_PERIOD int "Blink period in ms" range 10 3600000 - default 1000 + default 500 help Define the blinking period in milliseconds. diff --git a/config/sdkconfig.defaults b/config/sdkconfig.defaults index fdea10c..f86da07 100644 --- a/config/sdkconfig.defaults +++ b/config/sdkconfig.defaults @@ -1,2 +1,2 @@ -CONFIG_BLINK_LED_GPIO=y -CONFIG_BLINK_GPIO=2 + +CONFIG_BLINK_PERIOD=100 \ No newline at end of file diff --git a/scripts/flash.sh b/scripts/flash.sh index 8bb7b7c..3fa43aa 100644 --- a/scripts/flash.sh +++ b/scripts/flash.sh @@ -5,6 +5,9 @@ set -e export IDF_TOOLS_PATH=${PWD}/lib/idf-tools export IDF_PATH=${PWD}/lib/esp-idf +export SDKCONFIG=${PWD}/config/sdkconfig +export SDKCONFIG_DEFAULTS=${PWD}/config/sdkconfig.defaults + . ${IDF_PATH}/export.sh idf.py fullclean diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 889999f..9a2434a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,9 @@ -idf_component_register(SRCS "main.cpp" - PRIV_REQUIRES spi_flash - REQUIRES esp_driver_gpio - INCLUDE_DIRS ".") +file(GLOB SRC_FILES "*.c" "*.cpp") + +idf_component_register( + SRCS ${SRC_FILES} + PRIV_REQUIRES spi_flash + REQUIRES esp_driver_gpio + INCLUDE_DIRS "." +) \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index c76ad1c..3263601 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,112 +1,21 @@ -/* Blink Example - This example code is in the Public Domain (or CC0 licensed, at your option.) +#include "App.hpp" - Unless required by applicable law or agreed to in writing, this - software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. -*/ -#include -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "driver/gpio.h" #include "esp_log.h" -#include "sdkconfig.h" -#ifdef CONFIG_BLINK_LED_STRIP -#include "led_strip.h" -#endif - -static const char *TAG = "example"; - -/* Use project configuration menu (idf.py menuconfig) to choose the GPIO to blink, - or you can edit the following line and set a number here. -*/ -#define BLINK_GPIO CONFIG_BLINK_GPIO - -static uint8_t s_led_state = 0; - -#ifdef CONFIG_BLINK_LED_STRIP - -static led_strip_handle_t led_strip; - -static void blink_led(void) -{ - /* If the addressable LED is enabled */ - if (s_led_state) { - /* Set the LED pixel using RGB from 0 (0%) to 255 (100%) for each color */ - led_strip_set_pixel(led_strip, 0, 16, 16, 16); - /* Refresh the strip to send data */ - led_strip_refresh(led_strip); - } else { - /* Set all LED off to clear all pixels */ - led_strip_clear(led_strip); - } -} - -static void configure_led(void) -{ - ESP_LOGI(TAG, "Example configured to blink addressable LED!"); - /* LED strip initialization with the GPIO and pixels number*/ - led_strip_config_t strip_config = { - .strip_gpio_num = BLINK_GPIO, - .max_leds = 1, // at least one LED on board - }; -#if CONFIG_BLINK_LED_STRIP_BACKEND_RMT - led_strip_rmt_config_t rmt_config = { - .resolution_hz = 10 * 1000 * 1000, // 10MHz - .flags.with_dma = false, - }; - ESP_ERROR_CHECK(led_strip_new_rmt_device(&strip_config, &rmt_config, &led_strip)); -#elif CONFIG_BLINK_LED_STRIP_BACKEND_SPI - led_strip_spi_config_t spi_config = { - .spi_bus = SPI2_HOST, - .flags.with_dma = true, - }; - ESP_ERROR_CHECK(led_strip_new_spi_device(&strip_config, &spi_config, &led_strip)); -#else -#error "unsupported LED strip backend" -#endif - /* Set all LED off to clear all pixels */ - led_strip_clear(led_strip); -} - -#elif CONFIG_BLINK_LED_GPIO - -static void blink_led(void) -{ - /* Set the GPIO level according to the state (LOW or HIGH)*/ - gpio_set_level((gpio_num_t)BLINK_GPIO, s_led_state); -} - -static void configure_led(void) -{ - ESP_LOGI(TAG, "Example configured to blink GPIO LED!"); - gpio_reset_pin((gpio_num_t)BLINK_GPIO); - /* Set the GPIO as a push/pull output */ - gpio_set_direction((gpio_num_t)BLINK_GPIO, GPIO_MODE_OUTPUT); -} - -#else -#error "unsupported LED type" -#endif +static const char *TAG = "main"; #ifdef __cplusplus extern "C" { #endif -void app_main(void) -{ - /* Configure the peripheral according to the LED type */ - configure_led(); +void app_main(void) { - while (1) { - ESP_LOGI(TAG, "Turning the LED %s!", s_led_state == true ? "ON" : "OFF"); - blink_led(); - /* Toggle the LED state */ - s_led_state = !s_led_state; - vTaskDelay(CONFIG_BLINK_PERIOD / portTICK_PERIOD_MS); - } + ESP_LOGI(TAG, "Program start"); + + App app; + int8_t status = app.main(); + ESP_LOGI(TAG, "App main returned status %d", status); } #ifdef __cplusplus