V6CommandHandler.h 921 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include <MiLightClient.h>
  2. #ifndef _V6_COMMAND_HANDLER_H
  3. #define _V6_COMMAND_HANDLER_H
  4. class V6CommandHandler {
  5. public:
  6. static V6CommandHandler* ALL_HANDLERS[];
  7. static const size_t NUM_HANDLERS;
  8. V6CommandHandler(uint16_t commandId)
  9. : commandId(commandId)
  10. { }
  11. virtual bool handleCommand(
  12. MiLightClient* client,
  13. uint16_t deviceId,
  14. uint8_t group,
  15. uint32_t command,
  16. uint32_t commandArg
  17. ) = 0;
  18. const uint16_t commandId;
  19. };
  20. class V6CommandDemuxer : public V6CommandHandler {
  21. public:
  22. V6CommandDemuxer(V6CommandHandler* handlers[], size_t numHandlers)
  23. : V6CommandHandler(0),
  24. handlers(handlers),
  25. numHandlers(numHandlers)
  26. { }
  27. virtual bool handleCommand(
  28. MiLightClient* client,
  29. uint16_t deviceId,
  30. uint8_t group,
  31. uint32_t command,
  32. uint32_t commandArg
  33. );
  34. protected:
  35. V6CommandHandler** handlers;
  36. size_t numHandlers;
  37. };
  38. #endif