mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
Избавляемся от постоянной ошибки Udp packet invalid
Возникала по причине получения пакета из другой группы Плюс добавилась проверка формата Json и наличия поля wg
This commit is contained in:
@@ -13,6 +13,5 @@ extern const String getThisDevice();
|
|||||||
extern void addThisDeviceToList();
|
extern void addThisDeviceToList();
|
||||||
extern void asyncUdpInit();
|
extern void asyncUdpInit();
|
||||||
extern String uint8tToString(uint8_t* data, size_t len);
|
extern String uint8tToString(uint8_t* data, size_t len);
|
||||||
extern bool udpPacketValidation(String& data);
|
|
||||||
extern void udpPacketParse(String& data);
|
extern void udpPacketParse(String& data);
|
||||||
extern void jsonMergeArrays(String& existJson, String& incJson);
|
extern void jsonMergeArrays(String& existJson, String& incJson);
|
||||||
@@ -37,12 +37,16 @@ void asyncUdpInit() {
|
|||||||
// Serial.print(", Data: ");
|
// Serial.print(", Data: ");
|
||||||
// Serial.write(packet.data(), packet.length());
|
// Serial.write(packet.data(), packet.length());
|
||||||
String data = uint8tToString(packet.data(), packet.length());
|
String data = uint8tToString(packet.data(), packet.length());
|
||||||
// Serial.println(data);
|
String remoteWorkgroup = "";
|
||||||
if (udpPacketValidation(data)) {
|
data.replace("[", "");
|
||||||
SerialPrint("i", F("UDP"), "IP: " + packet.remoteIP().toString() + ":" + String(packet.remotePort()));
|
data.replace("]", "");
|
||||||
// Serial.println(data);
|
if (jsonRead(data, F("wg"), remoteWorkgroup)) { // проверяем чтоб полученный формат был Json и заодно вытягиваем имя группы
|
||||||
jsonMergeArrays(devListHeapJson, data);
|
String loacalWorkgroup = "";
|
||||||
// Serial.println(devListHeapJson);
|
jsonRead(settingsFlashJson, F("wg"), loacalWorkgroup);
|
||||||
|
if (remoteWorkgroup == loacalWorkgroup) {
|
||||||
|
SerialPrint("i", F("UDP"), "IP: " + packet.remoteIP().toString() + ":" + String(packet.remotePort()));
|
||||||
|
jsonMergeArrays(devListHeapJson, data);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
SerialPrint("E", F("UDP"), F("Udp packet invalid"));
|
SerialPrint("E", F("UDP"), F("Udp packet invalid"));
|
||||||
}
|
}
|
||||||
@@ -68,16 +72,6 @@ void asyncUdpInit() {
|
|||||||
SerialPrint("i", F("UDP"), F("Udp Init"));
|
SerialPrint("i", F("UDP"), F("Udp Init"));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool udpPacketValidation(String& data) {
|
|
||||||
// SerialPrint("i", F("UDP"), data);
|
|
||||||
String workgroup = jsonReadStr(settingsFlashJson, "wg");
|
|
||||||
if (workgroup != "" && data.indexOf(workgroup) != -1) {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void jsonMergeArrays(String& existJson, String& incJson) {
|
void jsonMergeArrays(String& existJson, String& incJson) {
|
||||||
DynamicJsonDocument incJsonDoc(1024);
|
DynamicJsonDocument incJsonDoc(1024);
|
||||||
DeserializationError incJsonError = deserializeJson(incJsonDoc, incJson);
|
DeserializationError incJsonError = deserializeJson(incJsonDoc, incJson);
|
||||||
|
|||||||
Reference in New Issue
Block a user