1#ifndef _LORAMESHER_PACKET_QUEUE_SERVICE_H
2#define _LORAMESHER_PACKET_QUEUE_SERVICE_H
8#include "entities/packets/QueuePacket.h"
10#include "services/PacketService.h"
12#include "utilities/LinkedQueue.hpp"
14class PacketQueueService {
27 static QueuePacket<T>* createQueuePacket(T* p, uint8_t priority, uint16_t number = 0) {
28 QueuePacket<T>* qp =
new QueuePacket<T>();
29 qp->priority = priority;
44 static QueuePacket<T>* findPacketQueue(LM_LinkedList<QueuePacket<T>>* queue, uint8_t num) {
47 if (queue->moveToStart()) {
49 QueuePacket<T>* current = queue->getCurrent();
51 if (current->number == num) {
52 queue->releaseInUse();
56 }
while (queue->next());
59 queue->releaseInUse();
70 static void addOrdered(LM_LinkedList<QueuePacket<Packet<uint8_t>>>* list, QueuePacket<Packet<uint8_t>>* qp);
77 static void deleteQueuePacketAndPacket(QueuePacket<Packet<uint8_t>>* pq) {
78 Log.traceln(F(
"Deleting packet"));
81 Log.traceln(F(
"Deleting packet queue"));
92 static void deleteQueuePacketAndPacket(QueuePacket<T>* pq) {
93 deleteQueuePacketAndPacket(
reinterpret_cast<QueuePacket<Packet<uint8_t>
>*>(pq));