This commit is contained in:
Dmytro Kolesnykov 2025-12-15 16:53:07 +01:00 committed by GitHub
commit fa09058f3a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 23 additions and 0 deletions

View file

@ -49,6 +49,15 @@ void led_blinking_task() {
#ifdef PICO_DEFAULT_LED_PIN_INVERTED
state = !state;
#endif
if (!led_mode) {
// in this mode the LED shall be off, not blinking
if (board_millis() - last_led_update_ms > 2) {
led_driver_color(0, 0, 0);
last_led_update_ms = board_millis();
}
return;
}
uint32_t led_brightness = (led_mode & LED_BTNESS_MASK) >> LED_BTNESS_SHIFT;
uint32_t led_color = (led_mode & LED_COLOR_MASK) >> LED_COLOR_SHIFT;
uint32_t led_off = (led_mode & LED_OFF_MASK) >> LED_OFF_SHIFT;

View file

@ -50,6 +50,19 @@ enum {
// steady on
#define LED_ON_NO_BLINK ((1000 << LED_ON_SHIFT) | (0 << LED_OFF_SHIFT))
#if defined(PICO_DEFAULT_LED_PIN) && !defined(PICO_DEFAULT_WS2812_PIN) && !defined(PIMORONI_TINY2040) && !defined(PIMORONI_TINY2350)
// boards with plain old monochrome LED
enum {
MODE_NOT_MOUNTED = (MAX_BTNESS << LED_BTNESS_SHIFT) | (LED_COLOR_WHITE << LED_COLOR_SHIFT) | (500 << LED_ON_SHIFT) | (500 << LED_OFF_SHIFT),
MODE_MOUNTED = 0, // no distraction when idle
MODE_SUSPENDED = 0, // no distraction when idle
MODE_PROCESSING = (MAX_BTNESS << LED_BTNESS_SHIFT) | (LED_COLOR_WHITE << LED_COLOR_SHIFT) | (50 << LED_ON_SHIFT) | (50 << LED_OFF_SHIFT),
MODE_BUTTON = (MAX_BTNESS << LED_BTNESS_SHIFT) | (LED_COLOR_WHITE << LED_COLOR_SHIFT) | (250 << LED_ON_SHIFT) | (250 << LED_OFF_SHIFT),
MODE_ALWAYS_ON = UINT32_MAX,
MODE_ALWAYS_OFF = 0
};
#else
// boards with Neopixel or something similar
enum {
MODE_NOT_MOUNTED = (MAX_BTNESS << LED_BTNESS_SHIFT) | (LED_COLOR_RED << LED_COLOR_SHIFT) | (500 << LED_ON_SHIFT) | (500 << LED_OFF_SHIFT),
MODE_MOUNTED = (MAX_BTNESS << LED_BTNESS_SHIFT) | (LED_COLOR_GREEN << LED_COLOR_SHIFT) | (500 << LED_ON_SHIFT) | (500 << LED_OFF_SHIFT),
@ -60,6 +73,7 @@ enum {
MODE_ALWAYS_ON = UINT32_MAX,
MODE_ALWAYS_OFF = 0
};
#endif
extern void led_set_mode(uint32_t mode);
extern uint32_t led_get_mode();