#pragma once #ifndef WS2812B_WRITER_H_ #define WS2812B_WRITER_H_ #include "drv/ws2812b.h" #include "param.h" #include "esp_err.h" #include "freertos/FreeRTOS.h" #include "freertos/semphr.h" #include "freertos/task.h" extern const int NUMBER_PARAMS; typedef struct { #define STATE_PARAM(t, n, ...) t n; #include "state_params.i" #undef STATE_PARAM } ws_state_t; typedef struct { ws2812b_t* drv; ws_state_t state; SemaphoreHandle_t state_lock; } ws_params_t; void reset_parameters(ws_params_t* params); esp_err_t ws_state_save(const ws_state_t* state); esp_err_t ws_state_load(ws_state_t* state); portTASK_FUNCTION_PROTO(ws2812b_write_task, params); #endif /* WS2812B_WRITER_H_ */