MiLightUdpServer.cpp 1.2 KB

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