10#if __has_include("BindUserConfig.h")
11#include "BindUserConfig.h"
14#if defined(ARDUINO_ARCH_ESP8266) && !defined(BIND_DISABLE_WIFI)
25#if LWIP_VERSION_MAJOR == 1
27typedef struct ip_addr ip_addr_t;
30typedef struct ip4_addr ip_addr_t;
33class AsyncUDPMessage :
public Print
40 AsyncUDPMessage(
size_t size=1460);
41 virtual ~AsyncUDPMessage();
42 size_t write(
const uint8_t *data,
size_t len);
43 size_t write(uint8_t data);
50 return _buffer != NULL;
54class AsyncUDPPacket :
public Print
65 AsyncUDPPacket(AsyncUDP *udp, ip_addr_t *localIp, uint16_t localPort, ip_addr_t *remoteIp, uint16_t remotePort, uint8_t *data,
size_t len);
66 virtual ~AsyncUDPPacket();
76 uint16_t remotePort();
78 size_t send(AsyncUDPMessage &message);
80 size_t write(
const uint8_t *data,
size_t len);
81 size_t write(uint8_t data);
84typedef std::function<void(AsyncUDPPacket& packet)> AuPacketHandlerFunction;
85typedef std::function<void(
void * arg, AsyncUDPPacket& packet)> AuPacketHandlerFunctionWithArg;
87class AsyncUDP :
public Print
92 AuPacketHandlerFunction _handler;
94 void _recv(udp_pcb *upcb, pbuf *pb, ip_addr_t *addr, uint16_t port);
95#if LWIP_VERSION_MAJOR == 1
96 static void _s_recv(
void *arg, udp_pcb *upcb, pbuf *p, ip_addr_t *addr, uint16_t port);
98 static void _s_recv(
void *arg, udp_pcb *upcb, pbuf *p,
const ip_addr_t *addr, uint16_t port);
105 void onPacket(AuPacketHandlerFunctionWithArg cb,
void * arg=NULL);
106 void onPacket(AuPacketHandlerFunction cb);
108 bool listen(ip_addr_t *addr, uint16_t port);
109 bool listen(
const IPAddress addr, uint16_t port);
110 bool listen(uint16_t port);
112 bool listenMulticast(ip_addr_t *addr, uint16_t port, uint8_t ttl=1);
113 bool listenMulticast(
const IPAddress addr, uint16_t port, uint8_t ttl=1);
115 bool connect(ip_addr_t *addr, uint16_t port);
116 bool connect(
const IPAddress addr, uint16_t port);
120 size_t writeTo(
const uint8_t *data,
size_t len, ip_addr_t *addr, uint16_t port);
121 size_t writeTo(
const uint8_t *data,
size_t len,
const IPAddress addr, uint16_t port);
122 size_t write(
const uint8_t *data,
size_t len);
123 size_t write(uint8_t data);
125 size_t broadcastTo(uint8_t *data,
size_t len, uint16_t port);
126 size_t broadcastTo(
const char * data, uint16_t port);
127 size_t broadcast(uint8_t *data,
size_t len);
128 size_t broadcast(
const char * data);
130 size_t sendTo(AsyncUDPMessage &message, ip_addr_t *addr, uint16_t port);
131 size_t sendTo(AsyncUDPMessage &message,
const IPAddress addr, uint16_t port);
132 size_t send(AsyncUDPMessage &message);
134 size_t broadcastTo(AsyncUDPMessage &message, uint16_t port);
135 size_t broadcast(AsyncUDPMessage &message);