| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #include <MiLightClient.h>
- #include <MiLightRadioConfig.h>
- #ifndef _V6_COMMAND_HANDLER_H
- #define _V6_COMMAND_HANDLER_H
- enum V6CommandTypes {
- V6_PAIR = 0x3D,
- V6_UNPAIR = 0x3E,
- V6_PRESET = 0x3F,
- V6_COMMAND = 0x31
- };
- class V6CommandHandler {
- public:
- static V6CommandHandler* ALL_HANDLERS[];
- static const size_t NUM_HANDLERS;
- V6CommandHandler(uint16_t commandId, MiLightRadioConfig& radioConfig)
- : commandId(commandId),
- radioConfig(radioConfig)
- { }
- virtual bool handleCommand(
- MiLightClient* client,
- uint16_t deviceId,
- uint8_t group,
- uint8_t commandType,
- uint32_t command,
- uint32_t commandArg
- );
- const uint16_t commandId;
- MiLightRadioConfig& radioConfig;
- protected:
- virtual bool handleCommand(
- MiLightClient* client,
- uint32_t command,
- uint32_t commandArg
- ) = 0;
- virtual bool handlePreset(
- MiLightClient* client,
- uint8_t commandLsb,
- uint32_t commandArg
- ) = 0;
- };
- class V6CommandDemuxer : public V6CommandHandler {
- public:
- V6CommandDemuxer(V6CommandHandler* handlers[], size_t numHandlers)
- : V6CommandHandler(0, MilightRgbwConfig),
- handlers(handlers),
- numHandlers(numHandlers)
- { }
- virtual bool handleCommand(
- MiLightClient* client,
- uint16_t deviceId,
- uint8_t group,
- uint8_t commandType,
- uint32_t command,
- uint32_t commandArg
- );
- protected:
- V6CommandHandler** handlers;
- size_t numHandlers;
- virtual bool handleCommand(
- MiLightClient* client,
- uint32_t command,
- uint32_t commandArg
- );
- virtual bool handlePreset(
- MiLightClient* client,
- uint8_t commandLsb,
- uint32_t commandArg
- );
- };
- #endif
|