Merge pull request #313 from DmitriyTychina/FixLog

Fix Log over AP
This commit is contained in:
2023-10-03 22:27:00 +03:00
committed by GitHub
5 changed files with 37 additions and 27 deletions

View File

@@ -20,4 +20,5 @@ void periodicWsSend();
void sendFileToWsByFrames(const String& filename, const String& header, const String& json, int client_id, size_t frameSize);
void sendStringToWs(const String& header, String& payload, int client_id);
void sendDeviceList(uint8_t num);
void sendDeviceList(uint8_t num);
int getNumWSClients();

View File

@@ -2,9 +2,8 @@
#include "Global.h"
#include "MqttClient.h"
#include <vector>
// boolean isNetworkActive();
inline boolean isNetworkActive() {return WiFi.status() == WL_CONNECTED;};
boolean isNetworkActive();
uint8_t getNumAPClients();
void routerConnect();
bool startAPMode();
boolean RouterFind(std::vector<String> jArray);

View File

@@ -450,25 +450,27 @@ void sendFileToWsByFrames(const String& filename, const String& header,
}
void sendStringToWs(const String& header, String& payload, int client_id) {
if (!(WiFi.softAPgetStationNum() || isNetworkActive())) {
return;
}
if ((!getNumAPClients() && !isNetworkActive()) || !getNumWSClients()) {
// standWebSocket.disconnect(); // это и ниже надо сделать при -
// standWebSocket.close(); // - отключении AP И WiFi(STA), надо менять ядро WiFi. Сейчас не закрывается сессия клиента при пропаже AP И WiFi(STA)
return;
}
if (header.length() != 6) {
SerialPrint("E", "FS", F("wrong header size"));
return;
}
if (header.length() != 6) {
SerialPrint("E", "FS", F("wrong header size"));
return;
}
String msg = header + "|0012|" + payload;
size_t totalSize = msg.length();
String msg = header + "|0012|" + payload;
size_t totalSize = msg.length();
char dataArray[totalSize];
msg.toCharArray(dataArray, totalSize + 1);
if (client_id == -1) {
standWebSocket.broadcastBIN((uint8_t*)dataArray, totalSize);
} else {
standWebSocket.sendBIN(client_id, (uint8_t*)dataArray, totalSize);
}
char dataArray[totalSize];
msg.toCharArray(dataArray, totalSize + 1);
if (client_id == -1) {
standWebSocket.broadcastBIN((uint8_t*)dataArray, totalSize);
} else {
standWebSocket.sendBIN(client_id, (uint8_t*)dataArray, totalSize);
}
}
void sendDeviceList(uint8_t num) {
@@ -483,3 +485,7 @@ void sendDeviceList(uint8_t num) {
SerialPrint("i", "FS", "flash list");
}
}
int getNumWSClients() {
return standWebSocket.connectedClients(false);
}

View File

@@ -11,11 +11,11 @@ void SerialPrint(const String& errorLevel, const String& module, const String& m
tosend += msg;
Serial.println(tosend);
if (isNetworkActive()) {
if (jsonReadInt(settingsFlashJson, F("log")) != 0) {
sendStringToWs(F("corelg"), tosend, -1);
}
// if (isNetworkActive()) { // все проверки происходят в sendStringToWs()
if (jsonReadInt(settingsFlashJson, F("log")) != 0) {
sendStringToWs(F("corelg"), tosend, -1);
}
// }
if (errorLevel == "E") {
cleanString(tosend);

View File

@@ -171,9 +171,13 @@ boolean RouterFind(std::vector<String> jArray)
return res;
}
// boolean isNetworkActive() {
// return WiFi.status() == WL_CONNECTED;
// }
boolean isNetworkActive() {
return WiFi.status() == WL_CONNECTED;
}
uint8_t getNumAPClients() {
return WiFi.softAPgetStationNum();
}
uint8_t RSSIquality() {
uint8_t res = 0;