PacketQueue.cpp 905 B

123456789101112131415161718192021222324252627282930313233
  1. #include <PacketQueue.h>
  2. void PacketQueue::push(const uint8_t* packet, const MiLightRemoteConfig* remoteConfig, const size_t repeatsOverride) {
  3. std::shared_ptr<QueuedPacket> qp = checkoutPacket();
  4. memcpy(qp->packet, packet, remoteConfig->packetFormatter->getPacketLength());
  5. qp->remoteConfig = remoteConfig;
  6. qp->repeatsOverride = repeatsOverride;
  7. }
  8. bool PacketQueue::isEmpty() {
  9. return queue.size() == 0;
  10. }
  11. std::shared_ptr<QueuedPacket> PacketQueue::pop() {
  12. return queue.shift();
  13. }
  14. std::shared_ptr<QueuedPacket> PacketQueue::checkoutPacket() {
  15. if (queue.size() == MILIGHT_MAX_QUEUED_PACKETS) {
  16. return queue.getLast();
  17. } else {
  18. std::shared_ptr<QueuedPacket> packet = std::make_shared<QueuedPacket>();
  19. queue.add(packet);
  20. return packet;
  21. }
  22. }
  23. void PacketQueue::checkinPacket(std::shared_ptr<QueuedPacket> packet) {
  24. }
  25. size_t PacketQueue::size() {
  26. return queue.size();
  27. }