V6RgbCommandHandler.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include <V6RgbCommandHandler.h>
  2. bool V6RgbCommandHandler::handleCommand(
  3. MiLightClient* client,
  4. uint16_t deviceId,
  5. uint8_t group,
  6. uint32_t command,
  7. uint32_t commandArg)
  8. {
  9. const uint8_t cmd = command & 0xFF;
  10. const uint8_t arg = commandArg >> 24;
  11. client->prepare(MilightRgbConfig, deviceId, 0);
  12. if (cmd == V2_RGB_COMMAND_PREFIX) {
  13. switch (arg) {
  14. case V2_RGB_ON:
  15. client->updateStatus(ON);
  16. break;
  17. case V2_RGB_OFF:
  18. client->updateStatus(OFF);
  19. break;
  20. case V2_RGB_BRIGHTNESS_DOWN:
  21. client->decreaseBrightness();
  22. break;
  23. case V2_RGB_BRIGHTNESS_UP:
  24. client->increaseBrightness();
  25. break;
  26. case V2_RGB_MODE_DOWN:
  27. client->previousMode();
  28. break;
  29. case V2_RGB_MODE_UP:
  30. client->nextMode();
  31. break;
  32. case V2_RGB_SPEED_DOWN:
  33. client->modeSpeedDown();
  34. break;
  35. case V2_RGB_SPEED_UP:
  36. client->modeSpeedUp();
  37. break;
  38. default:
  39. return false;
  40. }
  41. return true;
  42. } else if (cmd == V2_RGB_COLOR_PREFIX) {
  43. client->updateColorRaw(arg);
  44. return true;
  45. }
  46. return false;
  47. }