7#include "ArduinoLogger.h"
44 int size = p_udp->available();
47 size = p_udp->parsePacket();
54 remote_address_ext =
a;
55 remote_port_ext = port;
56 return p_udp->begin(port);
63 return p_udp->begin(port);
68 return p_udp->beginMulticast(address, port);
76 uint16_t result = p_udp->remotePort();
77 return result != 0 ? result : remote_port_ext;
83 if ((
uint32_t)remote_address_ext == 0) {
84 remote_address_ext = p_udp->remoteIP();
87 return remote_address_ext;
94 Logger.error(
"UDPStream",
"no remote address defined");
98 size_t result = p_udp->write(data, len);
114 void stop() { p_udp->stop(); }
116 int peek()
override {
return p_udp->peek(); }
118 int read()
override {
return p_udp->read(); }
120 size_t write(uint8_t data)
override {
121 if (write_buffer.capacity() < write_buffer_size) {
122 write_buffer.reserve(write_buffer_size);
124 write_buffer.push_back(data);
125 if (write_buffer.size() >= write_buffer_size) {
131 void flush()
override {
132 if (write_buffer.empty()) {
135 write(write_buffer.data(), write_buffer.size());
136 write_buffer.clear();
139 void setWriteBufferSize(
size_t size) { write_buffer_size = size; }
143 UDP* p_udp = &default_udp;
144 uint16_t remote_port_ext = 0;
145 IPAddress remote_address_ext;
146 int write_buffer_size = 256;
147 std::vector<uint8_t> write_buffer;
Definition IPAddress.h:43
A UDP class which makes sure that we can use UDP as simple Stream w/o additional complexity....
Definition UDPStream.h:22
uint16_t remotePort()
We use the same remote port as defined in begin for write.
Definition UDPStream.h:75
bool begin(uint16_t port, uint16_t port_ext=0)
Starts to receive data from/with the indicated port.
Definition UDPStream.h:60
int available() override
Definition UDPStream.h:43
void setUDP(UDP &udp)
Defines an alternative UDP object. By default we use WiFiUDP.
Definition UDPStream.h:33
size_t readBytes(uint8_t *data, size_t len)
Reads bytes using WiFi::readBytes.
Definition UDPStream.h:104
UDPStream()=default
Default Constructor.
IPAddress remoteIP()
We use the same remote ip as defined in begin for write.
Definition UDPStream.h:81
bool beginMulticast(IPAddress address, uint16_t port)
Starts to receive data in multicast from/with the indicated address / port.
Definition UDPStream.h:67
size_t write(const uint8_t *data, size_t len) override
Replys will be sent to the initial remote caller.
Definition UDPStream.h:91
bool begin(IPAddress a, uint16_t port)
Starts to send data to the indicated address / port.
Definition UDPStream.h:53
UDPStream(IPAddress a, uint16_t port)
Definition UDPStream.h:29
bool setTarget(IPAddress a, uint16_t port)
Alternative to begin(IPAddress a, uint16_t port)
Definition UDPStream.h:72
int availableForWrite() override
Definition UDPStream.h:37
We provide the WiFi class to simulate the Arduino WIFI. In in Linux we can expect that networking is ...
Definition CanMsg.cpp:31
EthernetUDP WiFiUDP
Alias for EthernetUDP to provide WiFiUDP compatibility.
Definition WiFiUdp.h:28