Hi all!
I try to catch packets from broadcast adress (255.255.255.255, port 6454). But don't recive anything. Broadcast from 192.168.1.255 works well. What I can do to recieve udp packets from 255.255.255.255? Any help, please!
My whorking code, that recieves broadcast from 192.168.1.255:
Спойлер
#include <ETH.h> // quote to use ETH
#include <WiFiUdp.h>
#define BUFFER_LENGTH 64
#define ETH_ADDR 1
#define ETH_POWER_PIN -1 // Do not use it, it can cause conflict during the software reset.
#define ETH_POWER_PIN_ALTERNATIVE 17
#define ETH_MDC_PIN 23
#define ETH_MDIO_PIN 18
#define ETH_TYPE ETH_PHY_LAN8720
//#define ETH_CLK_MODE ETH_CLOCK_GPIO17_OUT
#define ETH_CLK_MODE ETH_CLOCK_GPIO0_IN
WiFiUDP Udp; // create UDP object
char incomingPacket[BUFFER_LENGTH];
void setup()
{
pinMode(ETH_POWER_PIN_ALTERNATIVE, OUTPUT);
digitalWrite(ETH_POWER_PIN_ALTERNATIVE, HIGH);
Serial.begin(115200);
Serial.println();
ETH.begin(ETH_ADDR, ETH_POWER_PIN, ETH_MDC_PIN, ETH_MDIO_PIN, ETH_TYPE, ETH_CLK_MODE); // Enable ETH
ETH.config(IPAddress(192, 168, 1, 90),IPAddress(192, 168, 1, 1),IPAddress(255, 255, 255, 0));
delay(1000);
Serial.println("Connected");
Serial.print("IP Address:");
Serial.println(ETH.localIP());
IPAddress broadcastip;
broadcastip = ~ETH.subnetMask()|ETH.gatewayIP();
Serial.println(broadcastip);
Udp.begin(6454); // Enable UDP listening to receive data
}
void loop()
{
int packetLength = Udp.parsePacket();
if(packetLength){
int len = Udp.read(incomingPacket, BUFFER_LENGTH);
if (len > 0){
incomingPacket[len] = 0;
Serial.printf("%s\n", incomingPacket);
}
}
}