mirror of
https://github.com/meshtastic/firmware.git
synced 2025-08-31 00:50:32 +00:00
While connected to MQTT server, veto light-sleep (to keep wifi working)
This commit is contained in:
parent
39df7108a8
commit
99d529be51
@ -28,6 +28,21 @@ bool APStartupComplete = 0;
|
|||||||
|
|
||||||
static bool needReconnect = true; // If we create our reconnector, run it once at the beginning
|
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()
|
static int32_t reconnectWiFi()
|
||||||
{
|
{
|
||||||
if (radioConfig.has_preferences && needReconnect) {
|
if (radioConfig.has_preferences && needReconnect) {
|
||||||
@ -218,10 +233,10 @@ static void WiFiEvent(WiFiEvent_t event)
|
|||||||
DEBUG_MSG("Completed scan for access points\n");
|
DEBUG_MSG("Completed scan for access points\n");
|
||||||
break;
|
break;
|
||||||
case SYSTEM_EVENT_STA_START:
|
case SYSTEM_EVENT_STA_START:
|
||||||
DEBUG_MSG("WiFi client started\n");
|
DEBUG_MSG("WiFi station started\n");
|
||||||
break;
|
break;
|
||||||
case SYSTEM_EVENT_STA_STOP:
|
case SYSTEM_EVENT_STA_STOP:
|
||||||
DEBUG_MSG("WiFi clients stopped\n");
|
DEBUG_MSG("WiFi station stopped\n");
|
||||||
break;
|
break;
|
||||||
case SYSTEM_EVENT_STA_CONNECTED:
|
case SYSTEM_EVENT_STA_CONNECTED:
|
||||||
DEBUG_MSG("Connected to access point\n");
|
DEBUG_MSG("Connected to access point\n");
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include "mesh/Channels.h"
|
#include "mesh/Channels.h"
|
||||||
#include "mesh/Router.h"
|
#include "mesh/Router.h"
|
||||||
#include "mesh/generated/mqtt.pb.h"
|
#include "mesh/generated/mqtt.pb.h"
|
||||||
|
#include "sleep.h"
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
@ -57,11 +58,12 @@ MQTT::MQTT() : concurrency::OSThread("mqtt"), pubSub(mqttClient)
|
|||||||
mqtt = this;
|
mqtt = this;
|
||||||
|
|
||||||
pubSub.setCallback(mqttCallback);
|
pubSub.setCallback(mqttCallback);
|
||||||
|
|
||||||
|
preflightSleepObserver.observe(&preflightSleep);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MQTT::reconnect()
|
void MQTT::reconnect()
|
||||||
{
|
{
|
||||||
// pubSub.setServer("devsrv.ezdevice.net", 1883); or 192.168.10.188
|
|
||||||
const char *serverAddr = "mqtt.meshtastic.org"; // default hostname
|
const char *serverAddr = "mqtt.meshtastic.org"; // default hostname
|
||||||
int serverPort = 1883; // default server port
|
int serverPort = 1883; // default server port
|
||||||
|
|
||||||
@ -78,7 +80,7 @@ void MQTT::reconnect()
|
|||||||
}
|
}
|
||||||
pubSub.setServer(serverAddr, serverPort);
|
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);
|
auto myStatus = (statusTopic + owner.id);
|
||||||
bool connected = pubSub.connect(owner.id, "meshdev", "large4cats", myStatus.c_str(), 1, true, "offline");
|
bool connected = pubSub.connect(owner.id, "meshdev", "large4cats", myStatus.c_str(), 1, true, "offline");
|
||||||
if (connected) {
|
if (connected) {
|
||||||
|
@ -19,6 +19,9 @@ class MQTT : private concurrency::OSThread
|
|||||||
WiFiClient mqttClient;
|
WiFiClient mqttClient;
|
||||||
PubSubClient pubSub;
|
PubSubClient pubSub;
|
||||||
|
|
||||||
|
CallbackObserver<MQTT, void *> preflightSleepObserver =
|
||||||
|
CallbackObserver<MQTT, void *>(this, &MQTT::preflightSleepCb);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MQTT();
|
MQTT();
|
||||||
|
|
||||||
@ -53,6 +56,9 @@ class MQTT : private concurrency::OSThread
|
|||||||
|
|
||||||
/// Called when a new publish arrives from the MQTT server
|
/// Called when a new publish arrives from the MQTT server
|
||||||
void onPublish(char *topic, byte *payload, unsigned int length);
|
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();
|
void mqttInit();
|
||||||
|
Loading…
Reference in New Issue
Block a user