diff options
author | uvok | 2025-08-02 18:56:34 +0200 |
---|---|---|
committer | uvok | 2025-08-02 19:00:02 +0200 |
commit | 98baf20860831957285a6d2acca1680bae15124f (patch) | |
tree | afe4265bd66cb0f7edb5d2137b528ce6a473f1fa | |
parent | b3027f3fd49e64d19a5054831117e4598f491ab9 (diff) |
Prepare having a display indicator
-rw-r--r-- | include/badge/ble.h | 15 | ||||
-rw-r--r-- | include/badge/display.h | 2 | ||||
-rw-r--r-- | include/badge/indicator.h | 11 | ||||
-rw-r--r-- | src/ble.cpp | 4 | ||||
-rw-r--r-- | src/display.cpp | 8 | ||||
-rw-r--r-- | src/main.cpp | 11 |
6 files changed, 45 insertions, 6 deletions
diff --git a/include/badge/ble.h b/include/badge/ble.h index 231b103..27b4749 100644 --- a/include/badge/ble.h +++ b/include/badge/ble.h @@ -1,13 +1,24 @@ #pragma once +#include "indicator.h" #include <stdint.h> namespace de::uvok::badge { + enum class BleActionType + { + None, + Template, + Indicator + }; + typedef struct { - bool has_data; - uint8_t new_template; + BleActionType action_type; + union { + uint8_t new_template; + DisplayIndicator new_indicator; + }; } ble_poll_result_t; void ble_init(void); diff --git a/include/badge/display.h b/include/badge/display.h index 567eef5..d78c899 100644 --- a/include/badge/display.h +++ b/include/badge/display.h @@ -1,5 +1,6 @@ #pragma once +#include "indicator.h" #include <stdint.h> namespace de::uvok::badge @@ -13,4 +14,5 @@ namespace de::uvok::badge uint8_t display_prev(void); uint8_t display_refresh(void); void display_direct(uint8_t num); + void display_indicator(DisplayIndicator); } // namespace de::uvok::badge diff --git a/include/badge/indicator.h b/include/badge/indicator.h new file mode 100644 index 0000000..033a186 --- /dev/null +++ b/include/badge/indicator.h @@ -0,0 +1,11 @@ +#pragma once + +namespace de::uvok::badge +{ + enum class DisplayIndicator + { + None, + Advertising, + Connected + }; +} // namespace de::uvok::badge diff --git a/src/ble.cpp b/src/ble.cpp index ff38b18..a7bb73b 100644 --- a/src/ble.cpp +++ b/src/ble.cpp @@ -127,9 +127,9 @@ de::uvok::badge::ble_poll_result_t de::uvok::badge::ble_poll(void) { const uint8_t val = value_changed.value; value_changed.changed = false; - return (ble_poll_result_t){.has_data = true, .new_template = val}; + return (ble_poll_result_t){.action_type = BleActionType::Template, .new_template = val}; } - return (ble_poll_result_t){.has_data = false}; + return (ble_poll_result_t){.action_type = BleActionType::None}; } void de::uvok::badge::ble_set_image(uint8_t image) diff --git a/src/display.cpp b/src/display.cpp index 74561f3..3a2d99f 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -190,11 +190,17 @@ void de::uvok::badge::display_direct(uint8_t num) { LOG_F("Display direct\n"); if (num >= image_count) - return; + return; displayed = num; displayDo(DISPLAY_FULL); } +void de::uvok::badge::display_indicator(DisplayIndicator indicator) +{ + +} + + /* // -> #include "output_h4x4a.xbm" diff --git a/src/main.cpp b/src/main.cpp index af388bd..0f6af57 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -83,11 +83,20 @@ void loop() { de::uvok::badge::ble_poll_result_t pollres = de::uvok::badge::ble_poll(); - if (pollres.has_data) + switch (pollres.action_type) { + case de::uvok::badge::BleActionType::Template: { + de::uvok::badge::display_direct(pollres.new_template); lastActivity = millis(); } + break; + case de::uvok::badge::BleActionType::Indicator: { + de::uvok::badge::display_indicator(pollres.new_indicator); + lastActivity = millis(); + } + break; + } } if (millis() - lastActivity > SLEEP_TIME && !de::uvok::badge::ble_is_active()) |