#ifndef PACKETBUILDER_H #define PACKETBUILDER_H #include #include class PacketBuilder { public: PacketBuilder(uint16_t address, uint8_t rollingCode1, uint8_t rollingCode2, uint8_t protocolVersion); ~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 buildSetPositionPacket(uint8_t *buffer, uint16_t shadeID, float percentage); void buildFetchPositionPacket(uint8_t *buffer, uint16_t shadeID); private: uint16_t address; uint8_t rollingCode1; uint8_t rollingCode2; uint8_t protocolVersion; 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