Arduino DLNA Server
Loading...
Searching...
No Matches
UDPService.h
Go to the documentation of this file.
1#pragma once
2
3#include "assert.h"
5
6namespace tiny_dlna {
7
28template <typename UDPType>
29class UDPService : public IUDPService {
30 public:
31 UDPService() = default;
32
33 bool begin(int port) override {
34 DlnaLogger.log(DlnaLogLevel::Info, "begin: %d", port);
35 is_multicast = false;
36 return udp.begin(port);
37 }
38
39 bool begin(IPAddressAndPort addr) override {
40 peer = addr;
41 is_multicast = true;
42 DlnaLogger.log(DlnaLogLevel::Info, "beginMulticast: %s", addr.toString());
43 return udp.beginMulticast(addr.address, addr.port);
44 }
45
46 bool send(uint8_t* data, int len) override { return send(peer, data, len); }
47
48 bool send(IPAddressAndPort addr, uint8_t* data, int len) override {
49 DlnaLogger.log(DlnaLogLevel::Debug, "sending %d bytes", len);
50 udp.beginPacket(addr.address, addr.port);
51 int sent = udp.write(data, len);
52 assert(sent == len);
53 bool result = udp.endPacket();
54 if (!result) {
55 DlnaLogger.log(DlnaLogLevel::Error, "Sending failed");
56 }
57 return result;
58 }
59
60 RequestData receive() override {
61 RequestData result;
62 // udp.flush();
63 int packetSize = udp.parsePacket();
64 if (packetSize > 0) {
65 result.peer.address = udp.remoteIP();
66 result.peer.port = udp.remotePort();
67 char tmp[packetSize + 1] = {0};
68 int len = udp.readBytes(tmp, packetSize);
69 result.data = tmp;
70 DlnaLogger.log(DlnaLogLevel::Debug, "Receive (%s [%d])->: %s",
71 result.peer.toString(), packetSize, tmp);
72 }
73 return result;
74 }
75
76 protected:
77 UDPType udp;
79 bool is_multicast = false;
80};
81
82} // namespace tiny_dlna
Abstract Interface for UDP API.
Definition: IUDPService.h:33
Access to UDP functionality: sending and receiving of data.
Definition: UDPService.h:29
RequestData receive() override
Receive incoming UDP data and peer information.
Definition: UDPService.h:60
bool send(IPAddressAndPort addr, uint8_t *data, int len) override
Send data to specified address and port.
Definition: UDPService.h:48
bool is_multicast
Definition: UDPService.h:79
bool send(uint8_t *data, int len) override
Send data to the default destination.
Definition: UDPService.h:46
IPAddressAndPort peer
Definition: UDPService.h:78
bool begin(int port) override
Initialize UDP service on specified port.
Definition: UDPService.h:33
UDPType udp
Definition: UDPService.h:77
bool begin(IPAddressAndPort addr) override
Initialize UDP service on specified address and port.
Definition: UDPService.h:39
Definition: Allocator.h:13
IP Adress including Port information.
Definition: IPAddressAndPort.h:20
const char * toString()
Definition: IPAddressAndPort.h:26
int port
Definition: IPAddressAndPort.h:24
IPAddress address
Definition: IPAddressAndPort.h:23
Provides information of the received UDP which consists of the (xml) data and the peer address and po...
Definition: IUDPService.h:22
IPAddressAndPort peer
Definition: IUDPService.h:24
Str data
Definition: IUDPService.h:23