Add KiCad files and USB CDC logging support
This commit is contained in:
@@ -4,6 +4,8 @@
|
||||
#include "led_strip.h"
|
||||
#include "esp_check.h"
|
||||
#include "esp_log.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
#include "sdkconfig.h"
|
||||
|
||||
#ifndef CONFIG_WATCH_WS2812_LED_COUNT
|
||||
@@ -132,3 +134,62 @@ esp_err_t ws2812_status_refresh_from_dcdc(void)
|
||||
}
|
||||
return ws2812_status_apply();
|
||||
}
|
||||
|
||||
esp_err_t ws2812_status_play_bringup_animation(size_t cycles, uint32_t step_delay_ms)
|
||||
{
|
||||
if (!s_strip) {
|
||||
return ESP_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
if (cycles == 0) {
|
||||
cycles = 1;
|
||||
}
|
||||
if (step_delay_ms == 0) {
|
||||
step_delay_ms = 150;
|
||||
}
|
||||
|
||||
bool saved_led_state[WS2812_STATUS_LED_COUNT];
|
||||
for (size_t i = 0; i < WS2812_STATUS_LED_COUNT; ++i) {
|
||||
saved_led_state[i] = s_led_state[i];
|
||||
}
|
||||
const bool saved_error = s_error_state;
|
||||
const size_t saved_active = s_active_channel;
|
||||
|
||||
s_error_state = false;
|
||||
s_active_channel = SIZE_MAX;
|
||||
|
||||
const TickType_t delay_ticks = pdMS_TO_TICKS(step_delay_ms);
|
||||
esp_err_t err = ESP_OK;
|
||||
|
||||
for (size_t cycle = 0; cycle < cycles && err == ESP_OK; ++cycle) {
|
||||
for (size_t led = 0; led < WS2812_STATUS_LED_COUNT; ++led) {
|
||||
for (size_t idx = 0; idx < WS2812_STATUS_LED_COUNT; ++idx) {
|
||||
const uint8_t g = (idx == led) ? 35 : 0;
|
||||
err = led_strip_set_pixel(s_strip, idx, 0, g, 0);
|
||||
if (err != ESP_OK) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (err != ESP_OK) {
|
||||
break;
|
||||
}
|
||||
err = led_strip_refresh(s_strip);
|
||||
if (err != ESP_OK) {
|
||||
break;
|
||||
}
|
||||
vTaskDelay(delay_ticks);
|
||||
}
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < WS2812_STATUS_LED_COUNT; ++i) {
|
||||
s_led_state[i] = saved_led_state[i];
|
||||
}
|
||||
s_error_state = saved_error;
|
||||
s_active_channel = saved_active;
|
||||
|
||||
esp_err_t restore_err = ws2812_status_apply();
|
||||
if (err != ESP_OK) {
|
||||
return err;
|
||||
}
|
||||
return restore_err;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user