mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-04 18:03:20 +03:00
Add virtual beginMulticast(...) stub to UDP class (#8969)
* - Same UDP API of ESP32 core * - PR review
This commit is contained in:
parent
f2da54d3a2
commit
1a4663fbe8
@ -43,6 +43,7 @@ class UDP: public Stream {
|
||||
public:
|
||||
virtual ~UDP() {};
|
||||
virtual uint8_t begin(uint16_t) =0; // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use
|
||||
virtual uint8_t beginMulticast(IPAddress, uint16_t) { return 0; } // initialize, start listening on specified multicast IP address and port. Returns 1 if successful, 0 on failure
|
||||
virtual void stop() =0; // Finish with the UDP socket
|
||||
|
||||
// Sending UDP packets
|
||||
|
@ -26,11 +26,11 @@ Multicast UDP
|
||||
|
||||
.. code:: cpp
|
||||
|
||||
uint8_t beginMulticast (IPAddress interfaceAddr, IPAddress multicast, uint16_t port)
|
||||
uint8_t beginMulticast (IPAddress multicast, uint16_t port)
|
||||
virtual int beginPacketMulticast (IPAddress multicastAddress, uint16_t port, IPAddress interfaceAddress, int ttl=1)
|
||||
IPAddress destinationIP ()
|
||||
uint16_t localPort ()
|
||||
|
||||
The ``WiFiUDP`` class supports sending and receiving multicast packets on STA interface. When sending a multicast packet, replace ``udp.beginPacket(addr, port)`` with ``udp.beginPacketMulticast(addr, port, WiFi.localIP())``. When listening to multicast packets, replace ``udp.begin(port)`` with ``udp.beginMulticast(WiFi.localIP(), multicast_ip_addr, port)``. You can use ``udp.destinationIP()`` to tell whether the packet received was sent to the multicast or unicast address.
|
||||
The ``WiFiUDP`` class supports sending and receiving multicast packets on STA interface. When sending a multicast packet, replace ``udp.beginPacket(addr, port)`` with ``udp.beginPacketMulticast(addr, port, WiFi.localIP())``. When listening to multicast packets, replace ``udp.begin(port)`` with ``udp.beginMulticast(multicast_ip_addr, port)``. You can use ``udp.destinationIP()`` to tell whether the packet received was sent to the multicast or unicast address.
|
||||
|
||||
For code samples please refer to separate section with `examples <udp-examples.rst>`__ dedicated specifically to the UDP Class.
|
||||
|
@ -84,6 +84,11 @@ uint8_t WiFiUDP::begin(uint16_t port)
|
||||
return (_ctx->listen(IPAddress(), port)) ? 1 : 0;
|
||||
}
|
||||
|
||||
uint8_t WiFiUDP::beginMulticast(IPAddress multicast, uint16_t port)
|
||||
{
|
||||
return beginMulticast(IP_ADDR_ANY, multicast, port);
|
||||
}
|
||||
|
||||
uint8_t WiFiUDP::beginMulticast(IPAddress interfaceAddr, IPAddress multicast, uint16_t port)
|
||||
{
|
||||
if (_ctx) {
|
||||
|
@ -47,6 +47,8 @@ public:
|
||||
// Finish with the UDP connection
|
||||
void stop() override;
|
||||
// join a multicast group and listen on the given port
|
||||
virtual uint8_t beginMulticast(IPAddress interfaceAddr, uint16_t port);
|
||||
// join a multicast group and listen on the given port, using a specific interface address
|
||||
uint8_t beginMulticast(IPAddress interfaceAddr, IPAddress multicast, uint16_t port);
|
||||
|
||||
// Sending UDP packets
|
||||
|
Loading…
x
Reference in New Issue
Block a user