summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruvok2025-08-02 18:56:34 +0200
committeruvok2025-08-02 19:00:02 +0200
commit98baf20860831957285a6d2acca1680bae15124f (patch)
treeafe4265bd66cb0f7edb5d2137b528ce6a473f1fa
parentb3027f3fd49e64d19a5054831117e4598f491ab9 (diff)
Prepare having a display indicator
-rw-r--r--include/badge/ble.h15
-rw-r--r--include/badge/display.h2
-rw-r--r--include/badge/indicator.h11
-rw-r--r--src/ble.cpp4
-rw-r--r--src/display.cpp8
-rw-r--r--src/main.cpp11
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())