MiLightUdpServer.h 1005 B

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