Add packetCallback to RFPowerView class

This commit is contained in:
2023-12-30 23:34:06 +11:00
parent 9d507fdb0b
commit 09fd491fdc
4 changed files with 47 additions and 37 deletions

View File

@@ -23,8 +23,8 @@ public:
void loop();
void read();
void setPacketCallback(std::function<void(const uint8_t*)> callback);
void setInvalidPacketCallback(std::function<void(const uint8_t*)> callback);
void setBufferCallback(std::function<void(const uint8_t*)> callback);
void setInvalidBufferCallback(std::function<void(const uint8_t*)> callback);
private:
RF24 *radio;
@@ -35,13 +35,13 @@ private:
CircularBuffer<uint8_t*, EMPTY_BUFFER_COUNT> freeBuffers;
CircularBuffer<uint8_t*, VALID_BUFFER_COUNT> receivedBuffers;
std::function<void(const uint8_t*)> packetCallback;
std::function<void(const uint8_t*)> invalidPacketCallback;
std::function<void(const uint8_t*)> bufferCallback;
std::function<void(const uint8_t*)> invalidBufferCallback;
bool isSanePacket(uint8_t *buffer);
bool isValidPacket(uint8_t *buffer);
bool isNewPacket(uint8_t *buffer);
bool isEquivalentPacket(uint8_t *a, uint8_t *b);
bool isSaneBuffer(uint8_t *buffer);
bool isValidBuffer(uint8_t *buffer);
bool isNewBuffer(uint8_t *buffer);
bool isEquivalentBuffer(uint8_t *a, uint8_t *b);
};
#endif // PACKET_RECEIVER_H

View File

@@ -22,6 +22,9 @@ public:
bool begin();
void loop();
void startListening();
void setPacketCallback(std::function<void(const Packet*)> callback);
private:
RF24 radio;
PacketReceiver packetReceiver;
@@ -29,10 +32,12 @@ private:
uint8_t irqPin;
uint8_t rfID[2];
std::function<void(const Packet*)> packetCallback;
void interruptHandler();
void processPacketBuffer(const uint8_t *buffer);
void processInvalidPacketBuffer(const uint8_t *buffer);
void processBuffer(const uint8_t *buffer);
void processInvalidBuffer(const uint8_t *buffer);
};
#endif // RFPOWERVIEW_H