From f94715c4fc0bb781f398197959d5d61846484c1f Mon Sep 17 00:00:00 2001 From: Matt Way Date: Tue, 2 Jan 2024 21:09:07 +1100 Subject: [PATCH] Use rolling codes from Packet when filling buffer --- include/BufferFiller.h | 6 ++---- src/BufferFiller.cpp | 15 +++------------ src/RFPowerView.cpp | 2 +- 3 files changed, 6 insertions(+), 17 deletions(-) diff --git a/include/BufferFiller.h b/include/BufferFiller.h index 68df45c..7f7db41 100644 --- a/include/BufferFiller.h +++ b/include/BufferFiller.h @@ -7,14 +7,12 @@ class BufferFiller { public: - BufferFiller(uint8_t rollingCode1, uint8_t rollingCode2, uint8_t protocolVersion); + BufferFiller(uint8_t protocolVersion); ~BufferFiller(); bool fill(uint8_t *buffer, const Packet* packet); private: - uint8_t rollingCode1; - uint8_t rollingCode2; uint8_t protocolVersion; PacketCRC packetCRC; @@ -23,7 +21,7 @@ private: void setConstants(uint8_t *buffer); void setSourceAddress(uint8_t *buffer, uint16_t); void setDestinationAddress(uint8_t *buffer, uint16_t); - void setRollingCodes(uint8_t *buffer); + void setRollingCodes(uint8_t *buffer, uint8_t rollingCode1, uint8_t rollingCode2); void setProtocolVersion(uint8_t *buffer, uint8_t); void setFieldsData(uint8_t *buffer, const FieldsParameters& parameters); void calculateCRC(uint8_t *buffer); diff --git a/src/BufferFiller.cpp b/src/BufferFiller.cpp index 278fe15..dd9175c 100644 --- a/src/BufferFiller.cpp +++ b/src/BufferFiller.cpp @@ -1,8 +1,6 @@ #include "BufferFiller.h" -BufferFiller::BufferFiller(uint8_t rollingCode1, uint8_t rollingCode2, uint8_t protocolVersion) : - rollingCode1(rollingCode1), - rollingCode2(rollingCode2), +BufferFiller::BufferFiller(uint8_t protocolVersion) : protocolVersion(protocolVersion) { } @@ -58,11 +56,9 @@ bool BufferFiller::fill(uint8_t *buffer, const Packet* packet) { return false; } - setRollingCodes(buffer); + setRollingCodes(buffer, packet->rollingCode1, packet->rollingCode2); calculateCRC(buffer); - incrementRollingCodes(); - return true; } @@ -133,7 +129,7 @@ void BufferFiller::setDestinationAddress(uint8_t *buffer, uint16_t targetID) { buffer[13] = (uint8_t)(targetID & 0x00FF); } -void BufferFiller::setRollingCodes(uint8_t *buffer) { +void BufferFiller::setRollingCodes(uint8_t *buffer, uint8_t rollingCode1, uint8_t rollingCode2) { buffer[4] = rollingCode1; // Rolling code 1 buffer[11] = rollingCode2; // Rolling code 2 } @@ -153,11 +149,6 @@ void BufferFiller::calculateCRC(uint8_t *buffer) { // must be called after the b buffer[length + 3] = checksum2; // Checksum } -void BufferFiller::incrementRollingCodes() { - rollingCode1++; - rollingCode2++; -} - uint8_t BufferFiller::calculateTotalFieldSize(const FieldsParameters& parameters) { uint8_t totalSize = 0; for (size_t i = 0; i < parameters.fields.size(); i++) { diff --git a/src/RFPowerView.cpp b/src/RFPowerView.cpp index 2456a99..de7b01e 100644 --- a/src/RFPowerView.cpp +++ b/src/RFPowerView.cpp @@ -4,7 +4,7 @@ RFPowerView::RFPowerView(uint8_t cePin, uint8_t csPin, uint8_t irqPin, uint16_t rfID) : radio(cePin, csPin), packetReceiver(&radio), - bufferFiller(0x3D, 0x96, 0x05), + bufferFiller(0x05), irqPin(irqPin), rfID{static_cast(rfID & 0xFF), static_cast(rfID >> 8)}, packetCallback(nullptr) {}