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();
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);
private:
@@ -34,7 +37,9 @@ private:
uint8_t irqPin;
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];

View File

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