Use rolling codes from Packet when filling buffer

This commit is contained in:
2024-01-02 21:09:07 +11:00
parent d1adfa54ef
commit f94715c4fc
3 changed files with 6 additions and 17 deletions

View File

@@ -7,14 +7,12 @@
class BufferFiller { class BufferFiller {
public: public:
BufferFiller(uint8_t rollingCode1, uint8_t rollingCode2, uint8_t protocolVersion); BufferFiller(uint8_t protocolVersion);
~BufferFiller(); ~BufferFiller();
bool fill(uint8_t *buffer, const Packet* packet); bool fill(uint8_t *buffer, const Packet* packet);
private: private:
uint8_t rollingCode1;
uint8_t rollingCode2;
uint8_t protocolVersion; uint8_t protocolVersion;
PacketCRC packetCRC; PacketCRC packetCRC;
@@ -23,7 +21,7 @@ private:
void setConstants(uint8_t *buffer); void setConstants(uint8_t *buffer);
void setSourceAddress(uint8_t *buffer, uint16_t); void setSourceAddress(uint8_t *buffer, uint16_t);
void setDestinationAddress(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 setProtocolVersion(uint8_t *buffer, uint8_t);
void setFieldsData(uint8_t *buffer, const FieldsParameters& parameters); void setFieldsData(uint8_t *buffer, const FieldsParameters& parameters);
void calculateCRC(uint8_t *buffer); void calculateCRC(uint8_t *buffer);

View File

@@ -1,8 +1,6 @@
#include "BufferFiller.h" #include "BufferFiller.h"
BufferFiller::BufferFiller(uint8_t rollingCode1, uint8_t rollingCode2, uint8_t protocolVersion) : BufferFiller::BufferFiller(uint8_t protocolVersion) :
rollingCode1(rollingCode1),
rollingCode2(rollingCode2),
protocolVersion(protocolVersion) protocolVersion(protocolVersion)
{ {
} }
@@ -58,11 +56,9 @@ bool BufferFiller::fill(uint8_t *buffer, const Packet* packet) {
return false; return false;
} }
setRollingCodes(buffer); setRollingCodes(buffer, packet->rollingCode1, packet->rollingCode2);
calculateCRC(buffer); calculateCRC(buffer);
incrementRollingCodes();
return true; return true;
} }
@@ -133,7 +129,7 @@ void BufferFiller::setDestinationAddress(uint8_t *buffer, uint16_t targetID) {
buffer[13] = (uint8_t)(targetID & 0x00FF); 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[4] = rollingCode1; // Rolling code 1
buffer[11] = rollingCode2; // Rolling code 2 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 buffer[length + 3] = checksum2; // Checksum
} }
void BufferFiller::incrementRollingCodes() {
rollingCode1++;
rollingCode2++;
}
uint8_t BufferFiller::calculateTotalFieldSize(const FieldsParameters& parameters) { uint8_t BufferFiller::calculateTotalFieldSize(const FieldsParameters& parameters) {
uint8_t totalSize = 0; uint8_t totalSize = 0;
for (size_t i = 0; i < parameters.fields.size(); i++) { for (size_t i = 0; i < parameters.fields.size(); i++) {

View File

@@ -4,7 +4,7 @@
RFPowerView::RFPowerView(uint8_t cePin, uint8_t csPin, uint8_t irqPin, uint16_t rfID) : RFPowerView::RFPowerView(uint8_t cePin, uint8_t csPin, uint8_t irqPin, uint16_t rfID) :
radio(cePin, csPin), radio(cePin, csPin),
packetReceiver(&radio), packetReceiver(&radio),
bufferFiller(0x3D, 0x96, 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) {} packetCallback(nullptr) {}