34 lines
1007 B
C++
34 lines
1007 B
C++
#ifndef PACKETBUILDER_H
|
|
#define PACKETBUILDER_H
|
|
|
|
#include <Arduino.h>
|
|
#include <PacketCRC.h>
|
|
|
|
class PacketBuilder {
|
|
public:
|
|
PacketBuilder(uint16_t address, uint8_t rollingCode1, uint8_t rollingCode2);
|
|
~PacketBuilder();
|
|
|
|
void buildUpPacket(uint8_t *buffer, uint16_t shadeID);
|
|
void buildDownPacket(uint8_t *buffer, uint16_t shadeID);
|
|
void buildStopPacket(uint8_t *buffer, uint16_t shadeID);
|
|
void buildPositionPacket(uint8_t *buffer, uint16_t shadeID, float percentage);
|
|
|
|
private:
|
|
uint16_t address;
|
|
uint8_t rollingCode1;
|
|
uint8_t rollingCode2;
|
|
|
|
PacketCRC packetCRC;
|
|
|
|
void setPacketSize(uint8_t *buffer, uint8_t);
|
|
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 setProtocolVersion(uint8_t *buffer, uint8_t);
|
|
void calculateCRC(uint8_t *buffer);
|
|
void incrementRollingCodes();
|
|
};
|
|
|
|
#endif // PACKETBUILDER_H
|