Add callbacks for getting raw buffer

This commit is contained in:
2024-01-13 19:12:01 +11:00
parent e488cf86d4
commit 90e101c47e
2 changed files with 29 additions and 8 deletions

View File

@@ -23,7 +23,10 @@ public:
bool begin(); bool begin();
void loop(); void loop();
void setPacketCallback(std::function<void(const Packet*)> callback); void setPacketReceivedCallback(std::function<void(const Packet*)> callback);
void setValidBufferReceivedCallback(std::function<void(const uint8_t*)> callback);
void setInvalidBufferReceivedCallback(std::function<void(const uint8_t*)> callback);
bool sendPacket(const Packet* packet); bool sendPacket(const Packet* packet);
private: private:
@@ -34,7 +37,9 @@ private:
uint8_t irqPin; uint8_t irqPin;
uint8_t rfID[2]; uint8_t rfID[2];
std::function<void(const Packet*)> packetCallback; std::function<void(const Packet*)> packetReceivedCallback;
std::function<void(const uint8_t*)> validBufferReceivedCallback;
std::function<void(const uint8_t*)> invalidBufferReceivedCallback;
uint8_t sendBuffer[32]; uint8_t sendBuffer[32];

View File

@@ -7,7 +7,9 @@ RFPowerView::RFPowerView(uint8_t cePin, uint8_t csPin, uint8_t irqPin, uint16_t
bufferFiller(0x05), bufferFiller(0x05),
irqPin(irqPin), irqPin(irqPin),
rfID{static_cast<uint8_t>(rfID & 0xFF), static_cast<uint8_t>(rfID >> 8)}, rfID{static_cast<uint8_t>(rfID & 0xFF), static_cast<uint8_t>(rfID >> 8)},
packetCallback(nullptr) {} packetReceivedCallback(nullptr),
validBufferReceivedCallback(nullptr),
invalidBufferReceivedCallback(nullptr) {}
bool RFPowerView::begin() { bool RFPowerView::begin() {
if (!radio.begin()) { if (!radio.begin()) {
@@ -60,21 +62,35 @@ void RFPowerView::interruptHandler() {
} }
void RFPowerView::processBuffer(const uint8_t *buffer) { void RFPowerView::processBuffer(const uint8_t *buffer) {
if (validBufferReceivedCallback != nullptr) {
validBufferReceivedCallback(buffer);
}
Packet packet; Packet packet;
bool result = packetParser.parsePacket(buffer, packet); bool result = packetParser.parsePacket(buffer, packet);
if (result) { if (result) {
if (packetCallback != nullptr) { if (packetReceivedCallback != nullptr) {
packetCallback(&packet); packetReceivedCallback(&packet);
} }
} }
} }
void RFPowerView::processInvalidBuffer(const uint8_t *buffer) { void RFPowerView::processInvalidBuffer(const uint8_t *buffer) {
if (invalidBufferReceivedCallback != nullptr) {
invalidBufferReceivedCallback(buffer);
}
} }
void RFPowerView::setPacketCallback(std::function<void(const Packet*)> callback) { void RFPowerView::setPacketReceivedCallback(std::function<void(const Packet*)> callback) {
packetCallback = callback; packetReceivedCallback = callback;
}
void RFPowerView::setValidBufferReceivedCallback(std::function<void(const uint8_t*)> callback) {
validBufferReceivedCallback = callback;
}
void RFPowerView::setInvalidBufferReceivedCallback(std::function<void(const uint8_t*)> callback) {
invalidBufferReceivedCallback = callback;
} }
bool RFPowerView::sendPacket(const Packet* packet) { bool RFPowerView::sendPacket(const Packet* packet) {