V6RgbCommandHandler.cpp 1.2 KB

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