summaryrefslogtreecommitdiff
path: root/src/components/Ble/NotificationManager.h
blob: daa1571b3d6feeafcc80287854d265b9ab9b5c4b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#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+1> 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;
    };
  }
}