CctPacketFormatter.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #include <CctPacketFormatter.h>
  2. #include <MiLightButtons.h>
  3. void CctPacketFormatter::reset() {
  4. size_t packetPtr = 0;
  5. packet[packetPtr++] = CCT;
  6. packet[packetPtr++] = deviceId >> 8;
  7. packet[packetPtr++] = deviceId & 0xFF;
  8. packet[packetPtr++] = groupId;
  9. packet[packetPtr++] = 0;
  10. packet[packetPtr++] = sequenceNum;
  11. packet[packetPtr++] = sequenceNum++;
  12. }
  13. void CctPacketFormatter::command(uint8_t command, uint8_t arg) {
  14. packet[CCT_COMMAND_INDEX] = command;
  15. }
  16. void CctPacketFormatter::updateStatus(MiLightStatus status, uint8_t groupId) {
  17. command(getCctStatusButton(groupId, status), 0);
  18. }
  19. void CctPacketFormatter::increaseTemperature() {
  20. command(CCT_TEMPERATURE_UP, 0);
  21. }
  22. void CctPacketFormatter::decreaseTemperature() {
  23. command(CCT_TEMPERATURE_DOWN, 0);
  24. }
  25. void CctPacketFormatter::increaseBrightness() {
  26. command(CCT_BRIGHTNESS_UP, 0);
  27. }
  28. void CctPacketFormatter::decreaseBrightness() {
  29. command(CCT_BRIGHTNESS_DOWN, 0);
  30. }
  31. uint8_t CctPacketFormatter::getCctStatusButton(uint8_t groupId, MiLightStatus status) {
  32. uint8_t button = 0;
  33. if (status == ON) {
  34. switch(groupId) {
  35. case 1:
  36. button = CCT_GROUP_1_ON;
  37. break;
  38. case 2:
  39. button = CCT_GROUP_2_ON;
  40. break;
  41. case 3:
  42. button = CCT_GROUP_3_ON;
  43. break;
  44. case 4:
  45. button = CCT_GROUP_4_ON;
  46. break;
  47. }
  48. } else {
  49. switch(groupId) {
  50. case 1:
  51. button = CCT_GROUP_1_OFF;
  52. break;
  53. case 2:
  54. button = CCT_GROUP_2_OFF;
  55. break;
  56. case 3:
  57. button = CCT_GROUP_3_OFF;
  58. break;
  59. case 4:
  60. button = CCT_GROUP_4_OFF;
  61. break;
  62. }
  63. }
  64. return button;
  65. }
  66. void CctPacketFormatter::format(uint8_t const* packet, char* buffer) {
  67. PacketFormatter::formatV1Packet(packet, buffer);
  68. }