MiLightUdpServer.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include <MiLightUdpServer.h>
  2. #include <V5MiLightUdpServer.h>
  3. MiLightUdpServer::MiLightUdpServer(MiLightClient*& client, uint16_t port, uint16_t deviceId)
  4. : client(client),
  5. port(port),
  6. deviceId(deviceId),
  7. lastGroup(0)
  8. { }
  9. MiLightUdpServer::~MiLightUdpServer() {
  10. stop();
  11. }
  12. void MiLightUdpServer::begin() {
  13. socket.begin(this->port);
  14. }
  15. void MiLightUdpServer::stop() {
  16. socket.stop();
  17. }
  18. void MiLightUdpServer::handleClient() {
  19. const size_t packetSize = socket.parsePacket();
  20. if (packetSize) {
  21. socket.read(packetBuffer, packetSize);
  22. #ifdef MILIGHT_UDP_DEBUG
  23. Serial.print("Handling packet: ");
  24. for (size_t i = 0; i < packetSize; i++) {
  25. Serial.printf("%02X ", packetBuffer[0])
  26. }
  27. Serial.println();
  28. #endif
  29. size_t responseSize = handlePacket(packetBuffer, packetSize, responseBuffer);
  30. if (responseSize > 0) {
  31. socket.write(responseBuffer, responseSize);
  32. }
  33. }
  34. }
  35. MiLightUdpServer* MiLightUdpServer::fromVersion(uint8_t version, MiLightClient*& client, uint16_t port, uint16_t deviceId) {
  36. if (version == 0 || version == 5) {
  37. return new V5MiLightUdpServer(client, port, deviceId);
  38. }
  39. return NULL;
  40. }