29 lines
830 B
C
29 lines
830 B
C
|
#pragma once
|
||
|
|
||
|
#include <array>
|
||
|
|
||
|
namespace Pinetime {
|
||
|
namespace Controllers {
|
||
|
class NotificationManager {
|
||
|
public:
|
||
|
enum class Categories {Unknown, SimpleAlert, Email, News, IncomingCall, MissedCall, Sms, VoiceMail, Schedule, HighProriotyAlert, InstantMessage };
|
||
|
static constexpr uint8_t MessageSize = 18;
|
||
|
|
||
|
struct Notification {
|
||
|
std::array<char, MessageSize> message;
|
||
|
Categories category = Categories::Unknown;
|
||
|
};
|
||
|
|
||
|
void Push(Categories category, const char* message, uint8_t messageSize);
|
||
|
Notification Pop();
|
||
|
|
||
|
|
||
|
private:
|
||
|
static constexpr uint8_t TotalNbNotifications = 5;
|
||
|
std::array<Notification, TotalNbNotifications> notifications;
|
||
|
uint8_t readIndex = 0;
|
||
|
uint8_t writeIndex = 0;
|
||
|
bool empty = true;
|
||
|
};
|
||
|
}
|
||
|
}
|