CctPacketFormatter.cpp 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #include <CctPacketFormatter.h>
  2. #include <MiLightButtons.h>
  3. void CctPacketFormatter::initializePacket(uint8_t* packet) {
  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. pushPacket();
  15. currentPacket[CCT_COMMAND_INDEX] = command;
  16. }
  17. void CctPacketFormatter::updateStatus(MiLightStatus status, uint8_t groupId) {
  18. command(getCctStatusButton(groupId, status), 0);
  19. }
  20. void CctPacketFormatter::increaseTemperature() {
  21. command(CCT_TEMPERATURE_UP, 0);
  22. }
  23. void CctPacketFormatter::decreaseTemperature() {
  24. command(CCT_TEMPERATURE_DOWN, 0);
  25. }
  26. void CctPacketFormatter::increaseBrightness() {
  27. command(CCT_BRIGHTNESS_UP, 0);
  28. }
  29. void CctPacketFormatter::decreaseBrightness() {
  30. command(CCT_BRIGHTNESS_DOWN, 0);
  31. }
  32. uint8_t CctPacketFormatter::getCctStatusButton(uint8_t groupId, MiLightStatus status) {
  33. uint8_t button = 0;
  34. if (status == ON) {
  35. switch(groupId) {
  36. case 1:
  37. button = CCT_GROUP_1_ON;
  38. break;
  39. case 2:
  40. button = CCT_GROUP_2_ON;
  41. break;
  42. case 3:
  43. button = CCT_GROUP_3_ON;
  44. break;
  45. case 4:
  46. button = CCT_GROUP_4_ON;
  47. break;
  48. }
  49. } else {
  50. switch(groupId) {
  51. case 1:
  52. button = CCT_GROUP_1_OFF;
  53. break;
  54. case 2:
  55. button = CCT_GROUP_2_OFF;
  56. break;
  57. case 3:
  58. button = CCT_GROUP_3_OFF;
  59. break;
  60. case 4:
  61. button = CCT_GROUP_4_OFF;
  62. break;
  63. }
  64. }
  65. return button;
  66. }
  67. void CctPacketFormatter::format(uint8_t const* packet, char* buffer) {
  68. PacketFormatter::formatV1Packet(packet, buffer);
  69. }