diff --git a/src/gps/NMEAWPL.cpp b/src/gps/NMEAWPL.cpp index bc0ff6ec7..cc7c51694 100644 --- a/src/gps/NMEAWPL.cpp +++ b/src/gps/NMEAWPL.cpp @@ -14,7 +14,7 @@ * 6 Checksum */ -uint printWPL(char *buf, Position &pos, const char *name) +uint printWPL(char *buf, const Position &pos, const char *name) { uint len = sprintf(buf, "$GNWPL,%07.2f,%c,%08.2f,%c,%s", pos.latitude_i * 1e-5, pos.latitude_i < 0 ? 'S' : 'N', pos.longitude_i * 1e-5, pos.longitude_i < 0 ? 'W' : 'E', name); uint chk = 0; diff --git a/src/mesh/MeshService.cpp b/src/mesh/MeshService.cpp index 31d26b625..d5c7c4a19 100644 --- a/src/mesh/MeshService.cpp +++ b/src/mesh/MeshService.cpp @@ -283,3 +283,8 @@ int MeshService::onGPSChanged(const meshtastic::GPSStatus *newStatus) return 0; } + +bool MeshService::isToPhoneQueueEmpty() +{ + return toPhoneQueue.isEmpty(); +} \ No newline at end of file diff --git a/src/mesh/MeshService.h b/src/mesh/MeshService.h index ffa8c06ec..24ec1c0bc 100644 --- a/src/mesh/MeshService.h +++ b/src/mesh/MeshService.h @@ -89,6 +89,8 @@ class MeshService /// Send a packet to the phone void sendToPhone(MeshPacket *p); + bool isToPhoneQueueEmpty(); + private: /// Called when our gps position has changed - updates nodedb and sends Location message out into the mesh /// returns 0 to allow futher processing diff --git a/src/modules/Telemetry/DeviceTelemetry.cpp b/src/modules/Telemetry/DeviceTelemetry.cpp index fd5670d83..ee370692e 100644 --- a/src/modules/Telemetry/DeviceTelemetry.cpp +++ b/src/modules/Telemetry/DeviceTelemetry.cpp @@ -9,6 +9,7 @@ #include "main.h" #include #include +#include "MeshService.h" int32_t DeviceTelemetryModule::runOnce() { @@ -18,8 +19,9 @@ int32_t DeviceTelemetryModule::runOnce() && airTime->channelUtilizationPercent() < max_channel_util_percent) { sendTelemetry(); lastSentToMesh = now; - } else { + } else if (service.isToPhoneQueueEmpty()) { // Just send to phone when it's not our time to send to mesh yet + // Only send while queue is empty (phone assumed connected) sendTelemetry(NODENUM_BROADCAST, true); } return sendToPhoneIntervalMs; diff --git a/src/modules/Telemetry/DeviceTelemetry.h b/src/modules/Telemetry/DeviceTelemetry.h index a59e9c000..0fb33ceee 100644 --- a/src/modules/Telemetry/DeviceTelemetry.h +++ b/src/modules/Telemetry/DeviceTelemetry.h @@ -11,7 +11,8 @@ class DeviceTelemetryModule : private concurrency::OSThread, public ProtobufModu DeviceTelemetryModule() : concurrency::OSThread("DeviceTelemetryModule"), ProtobufModule("DeviceTelemetry", PortNum_TELEMETRY_APP, &Telemetry_msg) { - lastMeasurementPacket = nullptr; + lastMeasurementPacket = nullptr; + setIntervalFromNow(10 * 1000); } virtual bool wantUIFrame() { return false; } diff --git a/src/modules/Telemetry/EnvironmentTelemetry.h b/src/modules/Telemetry/EnvironmentTelemetry.h index e1a612288..2166a006a 100644 --- a/src/modules/Telemetry/EnvironmentTelemetry.h +++ b/src/modules/Telemetry/EnvironmentTelemetry.h @@ -12,7 +12,8 @@ class EnvironmentTelemetryModule : private concurrency::OSThread, public Protobu : concurrency::OSThread("EnvironmentTelemetryModule"), ProtobufModule("EnvironmentTelemetry", PortNum_TELEMETRY_APP, &Telemetry_msg) { - lastMeasurementPacket = nullptr; + lastMeasurementPacket = nullptr; + setIntervalFromNow(10 * 1000); } virtual bool wantUIFrame() override; #if !HAS_SCREEN