localbtn deinit & cleanup
This commit is contained in:
@ -14,18 +14,20 @@
|
||||
#include "freertos/task.h"
|
||||
#include "esp_log.h"
|
||||
|
||||
#define MAX_MODES 14 // TODO
|
||||
|
||||
static const char *TAG = "CONTROL";
|
||||
|
||||
static uint8_t current_animation_mode = 0;
|
||||
|
||||
// Forward declarations
|
||||
static void on_mode_change(uint8_t new_mode);
|
||||
static void on_mode_change();
|
||||
|
||||
// Animation mode change callback
|
||||
static void on_mode_change(uint8_t new_mode)
|
||||
static void on_mode_change()
|
||||
{
|
||||
current_animation_mode = new_mode;
|
||||
animation_set_mode((animation_mode_t)new_mode);
|
||||
current_animation_mode = (current_animation_mode + 1) % MAX_MODES;
|
||||
animation_set_mode((animation_mode_t)current_animation_mode);
|
||||
}
|
||||
|
||||
void control_set_animation_mode(uint8_t mode)
|
||||
@ -42,11 +44,6 @@ uint8_t control_get_animation_mode(void)
|
||||
return current_animation_mode;
|
||||
}
|
||||
|
||||
void control_emulate_pwm_pulse(void)
|
||||
{
|
||||
rcsignal_trigger_mode_change();
|
||||
}
|
||||
|
||||
// Main initialization
|
||||
esp_err_t control_init(void)
|
||||
{
|
||||
|
||||
@ -16,17 +16,18 @@
|
||||
|
||||
static const char *TAG = "LOCALBTN";
|
||||
uint8_t current_mode;
|
||||
bool initialized;
|
||||
TaskHandle_t localbtnTaskhandle;
|
||||
localbtn_mode_change_callback_t callback;
|
||||
|
||||
#define BOOT_BTN GPIO_NUM_0
|
||||
#define MAX_MODES 14 // TODO: get from control
|
||||
#define BOOT_BTN GPIO_NUM_0 // TODO: move to config
|
||||
|
||||
bool boot_button_pressed(void)
|
||||
{
|
||||
return gpio_get_level(BOOT_BTN) == 0; // active LOW
|
||||
}
|
||||
|
||||
static void monitor_task(void *arg)
|
||||
static void localbtn_task(void *arg)
|
||||
{
|
||||
bool lastState = false;
|
||||
while (1)
|
||||
@ -38,10 +39,6 @@ static void monitor_task(void *arg)
|
||||
{
|
||||
printf("BOOT button pressed\n");
|
||||
|
||||
current_mode = (current_mode + 1) % MAX_MODES;
|
||||
|
||||
ESP_LOGI(TAG, "Mode changed to: %d ", current_mode);
|
||||
|
||||
if (callback)
|
||||
{
|
||||
callback(current_mode);
|
||||
@ -64,13 +61,13 @@ esp_err_t localbtn_init()
|
||||
ESP_ERROR_CHECK(gpio_config(&io_conf));
|
||||
|
||||
// Create monitor task
|
||||
BaseType_t ret = xTaskCreate(monitor_task, "localbtn_monitor", 2048, NULL, 5, NULL);
|
||||
BaseType_t ret = xTaskCreate(localbtn_task, "localbtn_monitor", 2048, NULL, 5, &localbtnTaskhandle);
|
||||
if (ret != pdPASS)
|
||||
{
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
// TODO: rcsignal.initialized = true;
|
||||
initialized = true;
|
||||
ESP_LOGI(TAG, "local btn initialized on GPIO%d", BOOT_BTN);
|
||||
|
||||
return ESP_OK;
|
||||
@ -78,7 +75,17 @@ esp_err_t localbtn_init()
|
||||
|
||||
void localbtn_deinit(void)
|
||||
{
|
||||
// TODO:
|
||||
if (!initialized)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (localbtnTaskhandle)
|
||||
{
|
||||
vTaskDelete(localbtnTaskhandle);
|
||||
localbtnTaskhandle = NULL;
|
||||
}
|
||||
initialized = false;
|
||||
}
|
||||
|
||||
void localbtn_register_callback(localbtn_mode_change_callback_t cb)
|
||||
|
||||
@ -13,9 +13,8 @@
|
||||
|
||||
/**
|
||||
* @brief Callback function type for mode changes
|
||||
* @param new_mode New animation mode (0-13)
|
||||
*/
|
||||
typedef void (*localbtn_mode_change_callback_t)(uint8_t new_mode);
|
||||
typedef void (*localbtn_mode_change_callback_t)();
|
||||
|
||||
/**
|
||||
* @brief Initialize local btn reading
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
|
||||
static const char *TAG = "RCSIGNAL";
|
||||
|
||||
#define MAX_MODES 14 //TODO: Get from config
|
||||
#define MAX_MODES 14 // TODO: Get from config
|
||||
#define PULSE_THRESHOLD_US 1500
|
||||
#define SIGNAL_TIMEOUT_MS 100
|
||||
static struct
|
||||
@ -99,14 +99,10 @@ static void monitor_task(void *arg)
|
||||
{
|
||||
// Mode change detected
|
||||
rcsignal.pull_detected = false;
|
||||
rcsignal.current_mode = (rcsignal.current_mode + 1) % MAX_MODES;
|
||||
|
||||
ESP_LOGI(TAG, "Mode changed to: %d (pulse: %lu us)",
|
||||
rcsignal.current_mode, rcsignal.pulse_width_us);
|
||||
|
||||
if (rcsignal.callback)
|
||||
{
|
||||
rcsignal.callback(rcsignal.current_mode);
|
||||
rcsignal.callback();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -186,17 +182,6 @@ bool rcsignal_is_active(void)
|
||||
return rcsignal.signal_active;
|
||||
}
|
||||
|
||||
void rcsignal_trigger_mode_change(void)
|
||||
{
|
||||
rcsignal.current_mode = (rcsignal.current_mode + 1) % MAX_MODES;
|
||||
ESP_LOGI(TAG, "Manual mode change to: %d", rcsignal.current_mode);
|
||||
|
||||
if (rcsignal.callback)
|
||||
{
|
||||
rcsignal.callback(rcsignal.current_mode);
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t rcsignal_get_current_mode(void)
|
||||
{
|
||||
return rcsignal.current_mode;
|
||||
|
||||
@ -13,9 +13,8 @@
|
||||
|
||||
/**
|
||||
* @brief Callback function type for mode changes
|
||||
* @param new_mode New animation mode (0-13)
|
||||
*/
|
||||
typedef void (*rcsignal_mode_change_callback_t)(uint8_t new_mode);
|
||||
typedef void (*rcsignal_mode_change_callback_t)();
|
||||
|
||||
/**
|
||||
* @brief Initialize RC signal reading
|
||||
@ -47,11 +46,6 @@ uint32_t rcsignal_get_pulse_width(void);
|
||||
*/
|
||||
bool rcsignal_is_active(void);
|
||||
|
||||
/**
|
||||
* @brief Manually trigger mode change (for emulation)
|
||||
*/
|
||||
void rcsignal_trigger_mode_change(void);
|
||||
|
||||
/**
|
||||
* @brief Get current mode
|
||||
* @return Current animation mode (0-13)
|
||||
|
||||
Reference in New Issue
Block a user