-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathPacketFifo.cpp
More file actions
36 lines (31 loc) · 840 Bytes
/
PacketFifo.cpp
File metadata and controls
36 lines (31 loc) · 840 Bytes
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
30
31
32
33
34
35
36
#include "PacketFifo.h"
bool PacketFifo::queue(byte* packet, byte channel, byte rssi, int16_t fei, uint32_t delta) {
if (qLen < FIFO_SIZE) {
memcpy(&packetFifo[packetIn].packet, packet, PACKET_LEN);
packetFifo[packetIn].channel = channel;
packetFifo[packetIn].rssi = rssi;
packetFifo[packetIn].fei = fei;
packetFifo[packetIn].delta = delta;
if (++packetIn == FIFO_SIZE) packetIn = 0;
qLen++;
return true;
} else {
return false;
}
}
RadioData* PacketFifo::dequeue() {
if (qLen > 0) {
qLen--;
RadioData* rv = &packetFifo[packetOut];
if (++packetOut == FIFO_SIZE) packetOut = 0;
return rv;
} else {
return NULL;
}
}
void PacketFifo::flush() {
packetIn = packetOut = qLen = 0;
}
bool PacketFifo::hasElements() {
return qLen > 0;
}