InfiniTime.git

ref: 45e65b66b11b6b8533b225067ce4c2a4b5eac653

src/components/ble/NotificationManager.h


 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;
    };
  }
}