V6RgbCommandHandler.cpp 1.2 KB

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