2020-11-01 02:52:57 +03:00
|
|
|
#include "RemoteOrdersUdp.h"
|
|
|
|
|
#include <Arduino.h>
|
|
|
|
|
#include "Global.h"
|
|
|
|
|
|
|
|
|
|
#ifdef UDP_ENABLED
|
|
|
|
|
AsyncUDP asyncUdp;
|
|
|
|
|
|
|
|
|
|
void asyncUdpInit() {
|
|
|
|
|
//if (asyncUdp.listen(1234)) {
|
|
|
|
|
if (asyncUdp.listenMulticast(IPAddress(239, 255, 255, 255), 1234)) {
|
|
|
|
|
asyncUdp.onPacket([](AsyncUDPPacket packet) {
|
|
|
|
|
//Serial.print("UDP Packet Type: ");
|
|
|
|
|
//Serial.print(packet.isBroadcast() ? "Broadcast" : packet.isMulticast() ? "Multicast" : "Unicast");
|
|
|
|
|
//
|
|
|
|
|
//Serial.print(", From: ");
|
|
|
|
|
//Serial.print(packet.remoteIP());
|
|
|
|
|
//Serial.print(":");
|
|
|
|
|
//Serial.print(packet.remotePort());
|
|
|
|
|
//
|
|
|
|
|
//Serial.print(", To: ");
|
|
|
|
|
//Serial.print(packet.localIP());
|
|
|
|
|
//Serial.print(":");
|
|
|
|
|
//Serial.print(packet.localPort());
|
|
|
|
|
//
|
|
|
|
|
//Serial.print(", Length: ");
|
|
|
|
|
//Serial.print(packet.length());
|
|
|
|
|
//
|
|
|
|
|
//Serial.print(", Data: ");
|
|
|
|
|
//Serial.write(packet.data(), packet.length());
|
|
|
|
|
|
|
|
|
|
String data = uint8tToString(packet.data(), packet.length());
|
|
|
|
|
Serial.print("[i] [udp] Packet received: '");
|
|
|
|
|
Serial.print(data);
|
|
|
|
|
if (udpPacketValidation(data)) {
|
|
|
|
|
udpPacketParse(data);
|
|
|
|
|
//Serial.println("', Packet valid");
|
|
|
|
|
} else {
|
|
|
|
|
//Serial.println("', Packet invalid");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//reply to the client
|
|
|
|
|
|
|
|
|
|
packet.printf("Got %u bytes of data", packet.length());
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String uint8tToString(uint8_t* data, size_t len) {
|
|
|
|
|
String ret;
|
|
|
|
|
while (len--) {
|
|
|
|
|
ret += (char)*data++;
|
|
|
|
|
}
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool udpPacketValidation(String& data) {
|
|
|
|
|
if (data.indexOf("iotm;") != -1 && data.indexOf(getChipId()) != -1) {
|
|
|
|
|
return true;
|
|
|
|
|
} else {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//iotm;chipid;button-out-1_1
|
|
|
|
|
void udpPacketParse(String& data) {
|
|
|
|
|
data = selectFromMarkerToMarker(data, ";", 2);
|
|
|
|
|
data.replace("_", " ");
|
|
|
|
|
orderBuf += data + ",";
|
|
|
|
|
}
|
|
|
|
|
#endif
|