| 12345678910111213141516171819202122232425262728293031 |
- #pragma once
- #include <memory>
- #include <CircularBuffer.h>
- #include <MiLightRadioConfig.h>
- #include <MiLightRemoteConfig.h>
- #ifndef MILIGHT_MAX_QUEUED_PACKETS
- #define MILIGHT_MAX_QUEUED_PACKETS 20
- #endif
- struct QueuedPacket {
- uint8_t packet[MILIGHT_MAX_PACKET_LENGTH];
- const MiLightRemoteConfig* remoteConfig;
- size_t repeatsOverride;
- };
- class PacketQueue {
- public:
- void push(const uint8_t* packet, const MiLightRemoteConfig* remoteConfig, const size_t repeatsOverride);
- std::shared_ptr<QueuedPacket> pop();
- bool isEmpty();
- size_t size();
- private:
- std::shared_ptr<QueuedPacket> checkoutPacket();
- void checkinPacket(std::shared_ptr<QueuedPacket> packet);
- LinkedList<std::shared_ptr<QueuedPacket>> queue;
- };
|