diff options
Diffstat (limited to 'src/components/ble/NotificationManager.h')
-rw-r--r-- | src/components/ble/NotificationManager.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/components/ble/NotificationManager.h b/src/components/ble/NotificationManager.h index daa1571b..6bf689a8 100644 --- a/src/components/ble/NotificationManager.h +++ b/src/components/ble/NotificationManager.h @@ -1,6 +1,7 @@ #pragma once #include <array> +#include <atomic> namespace Pinetime { namespace Controllers { @@ -10,20 +11,32 @@ namespace Pinetime { static constexpr uint8_t MessageSize{18}; struct Notification { + using Id = uint8_t; + Id id; + bool valid = false; + uint8_t index; + uint8_t number = TotalNbNotifications; std::array<char, MessageSize+1> message; Categories category = Categories::Unknown; }; + Notification::Id nextId {0}; void Push(Categories category, const char* message, uint8_t messageSize); - Notification Pop(); + Notification GetLastNotification(); + Notification GetNext(Notification::Id id); + Notification GetPrevious(Notification::Id id); + bool ClearNewNotificationFlag(); + bool AreNewNotificationsAvailable(); private: + Notification::Id GetNextId(); static constexpr uint8_t TotalNbNotifications = 5; std::array<Notification, TotalNbNotifications> notifications; uint8_t readIndex = 0; uint8_t writeIndex = 0; bool empty = true; + std::atomic<bool> newNotification{false}; }; } }
\ No newline at end of file |