MiLightUdpServer.h 1009 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include <Arduino.h>
  2. #include <MiLightClient.h>
  3. #include <WiFiUdp.h>
  4. #include <memory>
  5. // This protocol is documented here:
  6. // http://www.limitlessled.com/dev/
  7. #define MILIGHT_PACKET_BUFFER_SIZE 30
  8. // Uncomment to enable Serial printing of packets
  9. // #define MILIGHT_UDP_DEBUG
  10. #ifndef _MILIGHT_UDP_SERVER
  11. #define _MILIGHT_UDP_SERVER
  12. class MiLightUdpServer {
  13. public:
  14. MiLightUdpServer(MiLightClient*& client, uint16_t port, uint16_t deviceId);
  15. virtual ~MiLightUdpServer();
  16. void stop();
  17. void begin();
  18. void handleClient();
  19. static std::shared_ptr<MiLightUdpServer> fromVersion(uint8_t version, MiLightClient*&, uint16_t port, uint16_t deviceId);
  20. protected:
  21. WiFiUDP socket;
  22. MiLightClient*& client;
  23. uint16_t port;
  24. uint16_t deviceId;
  25. uint8_t lastGroup;
  26. uint8_t packetBuffer[MILIGHT_PACKET_BUFFER_SIZE];
  27. uint8_t responseBuffer[MILIGHT_PACKET_BUFFER_SIZE];
  28. // Should return size of the response packet
  29. virtual void handlePacket(uint8_t* packet, size_t packetSize) = 0;
  30. };
  31. #endif