While connected to MQTT server, veto light-sleep (to keep wifi working)

1.2-legacy
Kevin Hester 2021-08-02 17:42:44 -07:00
rodzic 39df7108a8
commit 99d529be51
3 zmienionych plików z 27 dodań i 4 usunięć

Wyświetl plik

@ -28,6 +28,21 @@ bool APStartupComplete = 0;
static bool needReconnect = true; // If we create our reconnector, run it once at the beginning
// FIXME, veto light sleep if we have a TCP server running
#if 0
class WifiSleepObserver : public Observer<uint32_t> {
protected:
/// Return 0 if sleep is okay
virtual int onNotify(uint32_t newValue) {
}
};
static WifiSleepObserver wifiSleepObserver;
//preflightSleepObserver.observe(&preflightSleep);
#endif
static int32_t reconnectWiFi()
{
if (radioConfig.has_preferences && needReconnect) {
@ -218,10 +233,10 @@ static void WiFiEvent(WiFiEvent_t event)
DEBUG_MSG("Completed scan for access points\n");
break;
case SYSTEM_EVENT_STA_START:
DEBUG_MSG("WiFi client started\n");
DEBUG_MSG("WiFi station started\n");
break;
case SYSTEM_EVENT_STA_STOP:
DEBUG_MSG("WiFi clients stopped\n");
DEBUG_MSG("WiFi station stopped\n");
break;
case SYSTEM_EVENT_STA_CONNECTED:
DEBUG_MSG("Connected to access point\n");

Wyświetl plik

@ -4,6 +4,7 @@
#include "mesh/Channels.h"
#include "mesh/Router.h"
#include "mesh/generated/mqtt.pb.h"
#include "sleep.h"
#include <WiFi.h>
#include <assert.h>
@ -57,11 +58,12 @@ MQTT::MQTT() : concurrency::OSThread("mqtt"), pubSub(mqttClient)
mqtt = this;
pubSub.setCallback(mqttCallback);
preflightSleepObserver.observe(&preflightSleep);
}
void MQTT::reconnect()
{
// pubSub.setServer("devsrv.ezdevice.net", 1883); or 192.168.10.188
const char *serverAddr = "mqtt.meshtastic.org"; // default hostname
int serverPort = 1883; // default server port
@ -78,7 +80,7 @@ void MQTT::reconnect()
}
pubSub.setServer(serverAddr, serverPort);
DEBUG_MSG("Connecting to MQTT server %s, port: %d\n", server.c_str(), serverPort);
DEBUG_MSG("Connecting to MQTT server %s, port: %d\n", serverAddr, serverPort);
auto myStatus = (statusTopic + owner.id);
bool connected = pubSub.connect(owner.id, "meshdev", "large4cats", myStatus.c_str(), 1, true, "offline");
if (connected) {

Wyświetl plik

@ -19,6 +19,9 @@ class MQTT : private concurrency::OSThread
WiFiClient mqttClient;
PubSubClient pubSub;
CallbackObserver<MQTT, void *> preflightSleepObserver =
CallbackObserver<MQTT, void *>(this, &MQTT::preflightSleepCb);
public:
MQTT();
@ -53,6 +56,9 @@ class MQTT : private concurrency::OSThread
/// Called when a new publish arrives from the MQTT server
void onPublish(char *topic, byte *payload, unsigned int length);
/// Return 0 if sleep is okay, veto sleep if we are connected to pubsub server
int preflightSleepCb(void *unused = NULL) { return pubSub.connected() ? 1 : 0; }
};
void mqttInit();