V6RgbwCommandHandler.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include <V6RgbwCommandHandler.h>
  2. bool V6RgbwCommandHandler::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(MilightRgbwConfig, deviceId, 0);
  12. if (cmd == V2_RGBW_COMMAND_PREFIX) {
  13. switch (arg) {
  14. case V2_RGBW_ON:
  15. client->updateStatus(ON);
  16. break;
  17. case V2_RGBW_OFF:
  18. client->updateStatus(OFF);
  19. break;
  20. case V2_RGBW_WHITE_ON:
  21. client->updateColorWhite();
  22. break;
  23. case V2_RGBW_NIGHT_LIGHT:
  24. client->updateColorWhite();
  25. client->updateBrightness(0);
  26. break;
  27. case V2_RGBW_SPEED_DOWN:
  28. client->modeSpeedDown();
  29. break;
  30. case V2_RGBW_SPEED_UP:
  31. client->modeSpeedUp();
  32. break;
  33. default:
  34. return false;
  35. }
  36. return true;
  37. } else if (cmd == V2_RGBW_COLOR_PREFIX) {
  38. client->updateColorRaw(arg);
  39. return true;
  40. } else if (cmd == V2_RGBW_BRIGHTNESS_PREFIX) {
  41. client->updateBrightness(arg);
  42. return true;
  43. } else if (cmd == V2_RGBW_MODE_PREFIX) {
  44. client->updateMode(arg);
  45. return true;
  46. }
  47. return false;
  48. }