V6CommandHandler.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #include <MiLightClient.h>
  2. #include <MiLightRadioConfig.h>
  3. #ifndef _V6_COMMAND_HANDLER_H
  4. #define _V6_COMMAND_HANDLER_H
  5. enum V6CommandTypes {
  6. V6_PAIR = 0x3D,
  7. V6_UNPAIR = 0x3E,
  8. V6_COMMAND = 0x31
  9. };
  10. class V6CommandHandler {
  11. public:
  12. static V6CommandHandler* ALL_HANDLERS[];
  13. static const size_t NUM_HANDLERS;
  14. V6CommandHandler(uint16_t commandId, MiLightRadioConfig& radioConfig)
  15. : commandId(commandId),
  16. radioConfig(radioConfig)
  17. { }
  18. virtual bool handleCommand(
  19. MiLightClient* client,
  20. uint16_t deviceId,
  21. uint8_t group,
  22. uint8_t commandType,
  23. uint32_t command,
  24. uint32_t commandArg
  25. );
  26. const uint16_t commandId;
  27. MiLightRadioConfig& radioConfig;
  28. protected:
  29. virtual bool handleCommand(
  30. MiLightClient* client,
  31. uint16_t deviceId,
  32. uint8_t group,
  33. uint32_t command,
  34. uint32_t commandArg
  35. ) = 0;
  36. };
  37. class V6CommandDemuxer : public V6CommandHandler {
  38. public:
  39. V6CommandDemuxer(V6CommandHandler* handlers[], size_t numHandlers)
  40. : V6CommandHandler(0, MilightRgbwConfig),
  41. handlers(handlers),
  42. numHandlers(numHandlers)
  43. { }
  44. virtual bool handleCommand(
  45. MiLightClient* client,
  46. uint16_t deviceId,
  47. uint8_t group,
  48. uint8_t commandType,
  49. uint32_t command,
  50. uint32_t commandArg
  51. );
  52. protected:
  53. V6CommandHandler** handlers;
  54. size_t numHandlers;
  55. virtual bool handleCommand(
  56. MiLightClient* client,
  57. uint16_t deviceId,
  58. uint8_t group,
  59. uint32_t command,
  60. uint32_t commandArg
  61. );
  62. };
  63. #endif