From 0146761850b6a6f1274a0beb827416ff4c4e55a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Wed, 15 Jun 2022 19:42:16 +0200 Subject: [PATCH] TEST - Push of LocalConfig --- src/mesh/PhoneAPI.cpp | 19 +++++++++++++++---- src/mesh/PhoneAPI.h | 9 +++------ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/mesh/PhoneAPI.cpp b/src/mesh/PhoneAPI.cpp index 033ef4906..f93c35895 100644 --- a/src/mesh/PhoneAPI.cpp +++ b/src/mesh/PhoneAPI.cpp @@ -112,7 +112,8 @@ bool PhoneAPI::handleToRadio(const uint8_t *buf, size_t bufLength) * * Our sending states progress in the following sequence (the client app ASSUMES THIS SEQUENCE, DO NOT CHANGE IT): * STATE_SEND_MY_INFO, // send our my info record - STATE_SEND_RADIO, + * STATE_SEND_GROUPS + STATE_SEND_CONFIG, STATE_SEND_NODEINFO, // states progress in this order as the device sends to to the client STATE_SEND_COMPLETE_ID, STATE_SEND_PACKETS // send packets or debug strings @@ -140,12 +141,23 @@ size_t PhoneAPI::getFromRadio(uint8_t *buf) myNodeInfo.has_gps = gps && gps->isConnected(); // Update with latest GPS connect info fromRadioScratch.which_payloadVariant = FromRadio_my_info_tag; fromRadioScratch.my_info = myNodeInfo; - state = STATE_SEND_NODEINFO; + state = STATE_SEND_CONFIG; service.refreshMyNodeInfo(); // Update my NodeInfo because the client will be asking for it soon. break; - case STATE_SEND_NODEINFO: { + case STATE_SEND_CONFIG: + fromRadioScratch.which_payloadVariant = FromRadio_config_tag; + fromRadioScratch.config = config; + + // NOTE: The phone app needs to know the ls_secs value so it can properly expect sleep behavior. + // So even if we internally use 0 to represent 'use default' we still need to send the value we are + // using to the app (so that even old phone apps work with new device loads). + fromRadioScratch.config.power.ls_secs = default_ls_secs; + state = STATE_SEND_NODEINFO; + break; + + case STATE_SEND_NODEINFO: const NodeInfo *info = nodeInfoForPhone; nodeInfoForPhone = NULL; // We just consumed a nodeinfo, will need a new one next time @@ -162,7 +174,6 @@ size_t PhoneAPI::getFromRadio(uint8_t *buf) return getFromRadio(buf); } break; - } case STATE_SEND_COMPLETE_ID: fromRadioScratch.which_payloadVariant = FromRadio_config_complete_id_tag; diff --git a/src/mesh/PhoneAPI.h b/src/mesh/PhoneAPI.h index ca926b096..f17ed26c0 100644 --- a/src/mesh/PhoneAPI.h +++ b/src/mesh/PhoneAPI.h @@ -20,13 +20,10 @@ class PhoneAPI : public Observer // FIXME, we shouldn't be inheriting from Observer, instead use CallbackObserver as a member { enum State { - STATE_UNUSED, // (no longer used) old default state - until Android apps are all updated, uses the old BLE API - STATE_SEND_NOTHING, // (Eventual) Initial state, don't send anything until the client starts asking for config - // (disconnected) + STATE_SEND_NOTHING, // Initial state, don't send anything until the client starts asking for config STATE_SEND_MY_INFO, // send our my info record - STATE_SEND_GROUPS, - // STATE_SEND_RADIO, // in 1.2 we now send this as a regular mesh packet - // STATE_SEND_OWNER, no need to send Owner specially, it is just part of the nodedb + STATE_SEND_GROUPS, // new in 1.3? + STATE_SEND_CONFIG, // Replacement for the old Radioconfig STATE_SEND_NODEINFO, // states progress in this order as the device sends to to the client STATE_SEND_COMPLETE_ID, STATE_SEND_PACKETS // send packets or debug strings