| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #include <inttypes.h>
- #include <PacketFormatter.h>
- #ifndef _V2_PACKET_FORMATTER
- #define _V2_PACKET_FORMATTER
- #define V2_PACKET_LEN 9
- #define V2_PROTOCOL_ID_INDEX 1
- #define V2_COMMAND_INDEX 4
- #define V2_ARGUMENT_INDEX 5
- class V2PacketFormatter : public PacketFormatter {
- public:
- V2PacketFormatter(uint8_t protocolId, uint8_t numGroups);
- virtual bool canHandle(const uint8_t* packet, const size_t packetLen);
- virtual void initializePacket(uint8_t* packet);
- virtual void updateStatus(MiLightStatus status, uint8_t group);
- virtual void command(uint8_t command, uint8_t arg);
- virtual void format(uint8_t const* packet, char* buffer);
- virtual void unpair();
- virtual void finalizePacket(uint8_t* packet);
- uint8_t groupCommandArg(MiLightStatus status, uint8_t groupId);
- /*
- * Some protocols have scales which have the following characteristics:
- * Start at some value X, goes down to 0, then up to Y.
- * eg:
- * 0x8F, 0x8D, ..., 0, 0x2, ..., 0x20
- * This is a parameterized method to convert from [0, 100] TO this scale
- */
- static uint8_t tov2scale(uint8_t value, uint8_t endValue, uint8_t interval);
- static uint8_t fromv2scale(uint8_t value, uint8_t endValue, uint8_t interval);
- protected:
- const uint8_t protocolId;
- const uint8_t numGroups;
- void switchMode(GroupState currentState, BulbMode desiredMode);
- };
- #endif
|