mirror of
https://github.com/meshtastic/firmware.git
synced 2025-02-02 10:50:40 +00:00
move more of is_router out of python and into the device code
This commit is contained in:
parent
412916ba7c
commit
a8d7700295
@ -4,6 +4,8 @@ You probably don't care about this section - skip to the next one.
|
|||||||
|
|
||||||
For app cleanup:
|
For app cleanup:
|
||||||
|
|
||||||
|
* DONE writeup nice python options docs (common cases, link to protobuf docs)
|
||||||
|
* have android app link to user manual
|
||||||
* DONE only do wantReplies once per packet type, if we change network settings force it again
|
* DONE only do wantReplies once per packet type, if we change network settings force it again
|
||||||
* update positions and nodeinfos based on packets we just merely witness on the mesh. via isPromsciousPort bool, remove sniffing
|
* update positions and nodeinfos based on packets we just merely witness on the mesh. via isPromsciousPort bool, remove sniffing
|
||||||
* DONE make device build always have a valid version
|
* DONE make device build always have a valid version
|
||||||
|
2
proto
2
proto
@ -1 +1 @@
|
|||||||
Subproject commit 75078afe43934f4ce15ef86ebc6950658a170145
|
Subproject commit 020ef9eea8129756a0b45be5a3900b0355be4451
|
@ -173,9 +173,10 @@ void PowerFSM_setup()
|
|||||||
{
|
{
|
||||||
// If we are not a router and we already have AC power go to POWER state after init, otherwise go to ON
|
// If we are not a router and we already have AC power go to POWER state after init, otherwise go to ON
|
||||||
// We assume routers might be powered all the time, but from a low current (solar) source
|
// We assume routers might be powered all the time, but from a low current (solar) source
|
||||||
bool isLowPower = radioConfig.preferences.is_low_power;
|
|
||||||
bool hasPower = !isLowPower && powerStatus && powerStatus->getHasUSB();
|
|
||||||
bool isRouter = radioConfig.preferences.is_router;
|
bool isRouter = radioConfig.preferences.is_router;
|
||||||
|
bool isLowPower = radioConfig.preferences.is_low_power || isRouter;
|
||||||
|
bool hasPower = !isLowPower && powerStatus && powerStatus->getHasUSB();
|
||||||
|
|
||||||
DEBUG_MSG("PowerFSM init, USB power=%d\n", hasPower);
|
DEBUG_MSG("PowerFSM init, USB power=%d\n", hasPower);
|
||||||
powerFSM.add_timed_transition(&stateBOOT, hasPower ? &statePOWER : &stateON, 3 * 1000, NULL, "boot timeout");
|
powerFSM.add_timed_transition(&stateBOOT, hasPower ? &statePOWER : &stateON, 3 * 1000, NULL, "boot timeout");
|
||||||
|
|
||||||
|
@ -158,7 +158,7 @@ uint32_t GPS::getWakeTime() const
|
|||||||
return t; // already maxint
|
return t; // already maxint
|
||||||
|
|
||||||
if (t == 0)
|
if (t == 0)
|
||||||
t = 15 * 60; // Allow up to 5 mins for each attempt (probably will be much less if we can find sats)
|
t = radioConfig.preferences.is_router ? 5 * 60 : 15 * 60; // Allow up to 15 mins for each attempt (probably will be much less if we can find sats) or less if a router
|
||||||
|
|
||||||
t *= 1000; // msecs
|
t *= 1000; // msecs
|
||||||
|
|
||||||
@ -179,8 +179,8 @@ uint32_t GPS::getSleepTime() const
|
|||||||
if (t == UINT32_MAX)
|
if (t == UINT32_MAX)
|
||||||
return t; // already maxint
|
return t; // already maxint
|
||||||
|
|
||||||
if (t == 0)
|
if (t == 0) // default - unset in preferences
|
||||||
t = 2 * 60; // 2 mins
|
t = radioConfig.preferences.is_router ? 24 * 60 * 60 : 2 * 60; // 2 mins or once per day for routers
|
||||||
|
|
||||||
t *= 1000;
|
t *= 1000;
|
||||||
|
|
||||||
|
@ -147,23 +147,53 @@ their nodes
|
|||||||
*/
|
*/
|
||||||
const char *getChannelName();
|
const char *getChannelName();
|
||||||
|
|
||||||
|
/*
|
||||||
|
If is_router is set, we use a number of different default values
|
||||||
|
|
||||||
|
# FIXME - after tuning, move these params into the on-device defaults based on is_router and is_low_power
|
||||||
|
|
||||||
|
# prefs.position_broadcast_secs = FIXME possibly broadcast only once an hr
|
||||||
|
prefs.wait_bluetooth_secs = 1 # Don't stay in bluetooth mode
|
||||||
|
prefs.mesh_sds_timeout_secs = never
|
||||||
|
prefs.phone_sds_timeout_sec = never
|
||||||
|
# try to stay in light sleep one full day, then briefly wake and sleep again
|
||||||
|
|
||||||
|
prefs.ls_secs = oneday
|
||||||
|
|
||||||
|
prefs.send_owner_interval = 2 # Send an owner packet every other network ping
|
||||||
|
prefs.position_broadcast_secs = 12 hours # send either position or owner every 12hrs
|
||||||
|
|
||||||
|
# get a new GPS position once per day
|
||||||
|
prefs.gps_update_interval = oneday
|
||||||
|
|
||||||
|
prefs.is_low_power = True
|
||||||
|
|
||||||
|
# allow up to five minutes for each new GPS lock attempt
|
||||||
|
prefs.gps_attempt_time = 300
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Our delay functions check for this for times that should never expire
|
||||||
|
#define DELAY_FOREVER 0xffffffff
|
||||||
|
|
||||||
|
#define IF_ROUTER(routerVal, normalVal) (radioConfig.preferences.is_router ? (routerVal) : (normalVal))
|
||||||
|
|
||||||
#define PREF_GET(name, defaultVal) \
|
#define PREF_GET(name, defaultVal) \
|
||||||
inline uint32_t getPref_##name() { return radioConfig.preferences.name ? radioConfig.preferences.name : (defaultVal); }
|
inline uint32_t getPref_##name() { return radioConfig.preferences.name ? radioConfig.preferences.name : (defaultVal); }
|
||||||
|
|
||||||
PREF_GET(send_owner_interval, 4)
|
PREF_GET(send_owner_interval, IF_ROUTER(2, 4))
|
||||||
PREF_GET(position_broadcast_secs, 15 * 60)
|
PREF_GET(position_broadcast_secs, IF_ROUTER(12 * 60 * 60, 15 * 60))
|
||||||
|
|
||||||
// Each time we wake into the DARK state allow 1 minute to send and receive BLE packets to the phone
|
// Each time we wake into the DARK state allow 1 minute to send and receive BLE packets to the phone
|
||||||
PREF_GET(wait_bluetooth_secs, 60)
|
PREF_GET(wait_bluetooth_secs, IF_ROUTER(1, 60))
|
||||||
|
|
||||||
PREF_GET(screen_on_secs, 60)
|
PREF_GET(screen_on_secs, 60)
|
||||||
PREF_GET(mesh_sds_timeout_secs, 2 * 60 * 60)
|
PREF_GET(mesh_sds_timeout_secs, IF_ROUTER(DELAY_FOREVER, 2 * 60 * 60))
|
||||||
PREF_GET(phone_sds_timeout_sec, 2 * 60 * 60)
|
PREF_GET(phone_sds_timeout_sec, IF_ROUTER(DELAY_FOREVER, 2 * 60 * 60))
|
||||||
PREF_GET(sds_secs, 365 * 24 * 60 * 60)
|
PREF_GET(sds_secs, 365 * 24 * 60 * 60)
|
||||||
|
|
||||||
// We default to sleeping (with bluetooth off for 5 minutes at a time). This seems to be a good tradeoff between
|
// We default to sleeping (with bluetooth off for 5 minutes at a time). This seems to be a good tradeoff between
|
||||||
// latency for the user sending messages and power savings because of not having to run (expensive) ESP32 bluetooth
|
// latency for the user sending messages and power savings because of not having to run (expensive) ESP32 bluetooth
|
||||||
PREF_GET(ls_secs, 5 * 60)
|
PREF_GET(ls_secs, IF_ROUTER(24 * 60 * 60, 5 * 60))
|
||||||
|
|
||||||
PREF_GET(phone_timeout_secs, 15 * 60)
|
PREF_GET(phone_timeout_secs, 15 * 60)
|
||||||
PREF_GET(min_wake_secs, 10)
|
PREF_GET(min_wake_secs, 10)
|
||||||
|
@ -106,7 +106,6 @@ typedef struct _Position {
|
|||||||
typedef struct _RadioConfig_UserPreferences {
|
typedef struct _RadioConfig_UserPreferences {
|
||||||
uint32_t position_broadcast_secs;
|
uint32_t position_broadcast_secs;
|
||||||
uint32_t send_owner_interval;
|
uint32_t send_owner_interval;
|
||||||
uint32_t num_missed_to_fail;
|
|
||||||
uint32_t wait_bluetooth_secs;
|
uint32_t wait_bluetooth_secs;
|
||||||
uint32_t screen_on_secs;
|
uint32_t screen_on_secs;
|
||||||
uint32_t phone_timeout_secs;
|
uint32_t phone_timeout_secs;
|
||||||
@ -284,7 +283,7 @@ extern "C" {
|
|||||||
#define MeshPacket_init_default {0, 0, 0, {SubPacket_init_default}, 0, 0, 0, 0, 0, 0}
|
#define MeshPacket_init_default {0, 0, 0, {SubPacket_init_default}, 0, 0, 0, 0, 0, 0}
|
||||||
#define ChannelSettings_init_default {0, _ChannelSettings_ModemConfig_MIN, {0, {0}}, "", 0, 0, 0, 0}
|
#define ChannelSettings_init_default {0, _ChannelSettings_ModemConfig_MIN, {0, {0}}, "", 0, 0, 0, 0}
|
||||||
#define RadioConfig_init_default {false, RadioConfig_UserPreferences_init_default, false, ChannelSettings_init_default}
|
#define RadioConfig_init_default {false, RadioConfig_UserPreferences_init_default, false, ChannelSettings_init_default}
|
||||||
#define RadioConfig_UserPreferences_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", "", 0, _RegionCode_MIN, _LocationSharing_MIN, _GpsOperation_MIN, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0}}
|
#define RadioConfig_UserPreferences_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", "", 0, _RegionCode_MIN, _LocationSharing_MIN, _GpsOperation_MIN, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0}}
|
||||||
#define NodeInfo_init_default {0, false, User_init_default, false, Position_init_default, 0, 0}
|
#define NodeInfo_init_default {0, false, User_init_default, false, Position_init_default, 0, 0}
|
||||||
#define MyNodeInfo_init_default {0, 0, 0, "", "", "", 0, 0, 0, 0, 0, 0, 0, 0}
|
#define MyNodeInfo_init_default {0, 0, 0, "", "", "", 0, 0, 0, 0, 0, 0, 0, 0}
|
||||||
#define DeviceState_init_default {false, RadioConfig_init_default, false, MyNodeInfo_init_default, false, User_init_default, 0, {NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default}, 0, {MeshPacket_init_default}, false, MeshPacket_init_default, 0, 0, 0, 0, {ChannelSettings_init_default, ChannelSettings_init_default, ChannelSettings_init_default, ChannelSettings_init_default}}
|
#define DeviceState_init_default {false, RadioConfig_init_default, false, MyNodeInfo_init_default, false, User_init_default, 0, {NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default}, 0, {MeshPacket_init_default}, false, MeshPacket_init_default, 0, 0, 0, 0, {ChannelSettings_init_default, ChannelSettings_init_default, ChannelSettings_init_default, ChannelSettings_init_default}}
|
||||||
@ -299,7 +298,7 @@ extern "C" {
|
|||||||
#define MeshPacket_init_zero {0, 0, 0, {SubPacket_init_zero}, 0, 0, 0, 0, 0, 0}
|
#define MeshPacket_init_zero {0, 0, 0, {SubPacket_init_zero}, 0, 0, 0, 0, 0, 0}
|
||||||
#define ChannelSettings_init_zero {0, _ChannelSettings_ModemConfig_MIN, {0, {0}}, "", 0, 0, 0, 0}
|
#define ChannelSettings_init_zero {0, _ChannelSettings_ModemConfig_MIN, {0, {0}}, "", 0, 0, 0, 0}
|
||||||
#define RadioConfig_init_zero {false, RadioConfig_UserPreferences_init_zero, false, ChannelSettings_init_zero}
|
#define RadioConfig_init_zero {false, RadioConfig_UserPreferences_init_zero, false, ChannelSettings_init_zero}
|
||||||
#define RadioConfig_UserPreferences_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", "", 0, _RegionCode_MIN, _LocationSharing_MIN, _GpsOperation_MIN, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0}}
|
#define RadioConfig_UserPreferences_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", "", 0, _RegionCode_MIN, _LocationSharing_MIN, _GpsOperation_MIN, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0}}
|
||||||
#define NodeInfo_init_zero {0, false, User_init_zero, false, Position_init_zero, 0, 0}
|
#define NodeInfo_init_zero {0, false, User_init_zero, false, Position_init_zero, 0, 0}
|
||||||
#define MyNodeInfo_init_zero {0, 0, 0, "", "", "", 0, 0, 0, 0, 0, 0, 0, 0}
|
#define MyNodeInfo_init_zero {0, 0, 0, "", "", "", 0, 0, 0, 0, 0, 0, 0, 0}
|
||||||
#define DeviceState_init_zero {false, RadioConfig_init_zero, false, MyNodeInfo_init_zero, false, User_init_zero, 0, {NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero}, 0, {MeshPacket_init_zero}, false, MeshPacket_init_zero, 0, 0, 0, 0, {ChannelSettings_init_zero, ChannelSettings_init_zero, ChannelSettings_init_zero, ChannelSettings_init_zero}}
|
#define DeviceState_init_zero {false, RadioConfig_init_zero, false, MyNodeInfo_init_zero, false, User_init_zero, 0, {NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero}, 0, {MeshPacket_init_zero}, false, MeshPacket_init_zero, 0, 0, 0, 0, {ChannelSettings_init_zero, ChannelSettings_init_zero, ChannelSettings_init_zero, ChannelSettings_init_zero}}
|
||||||
@ -340,7 +339,6 @@ extern "C" {
|
|||||||
#define Position_time_tag 9
|
#define Position_time_tag 9
|
||||||
#define RadioConfig_UserPreferences_position_broadcast_secs_tag 1
|
#define RadioConfig_UserPreferences_position_broadcast_secs_tag 1
|
||||||
#define RadioConfig_UserPreferences_send_owner_interval_tag 2
|
#define RadioConfig_UserPreferences_send_owner_interval_tag 2
|
||||||
#define RadioConfig_UserPreferences_num_missed_to_fail_tag 3
|
|
||||||
#define RadioConfig_UserPreferences_wait_bluetooth_secs_tag 4
|
#define RadioConfig_UserPreferences_wait_bluetooth_secs_tag 4
|
||||||
#define RadioConfig_UserPreferences_screen_on_secs_tag 5
|
#define RadioConfig_UserPreferences_screen_on_secs_tag 5
|
||||||
#define RadioConfig_UserPreferences_phone_timeout_secs_tag 6
|
#define RadioConfig_UserPreferences_phone_timeout_secs_tag 6
|
||||||
@ -509,7 +507,6 @@ X(a, STATIC, OPTIONAL, MESSAGE, channel_settings, 2)
|
|||||||
#define RadioConfig_UserPreferences_FIELDLIST(X, a) \
|
#define RadioConfig_UserPreferences_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, position_broadcast_secs, 1) \
|
X(a, STATIC, SINGULAR, UINT32, position_broadcast_secs, 1) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, send_owner_interval, 2) \
|
X(a, STATIC, SINGULAR, UINT32, send_owner_interval, 2) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, num_missed_to_fail, 3) \
|
|
||||||
X(a, STATIC, SINGULAR, UINT32, wait_bluetooth_secs, 4) \
|
X(a, STATIC, SINGULAR, UINT32, wait_bluetooth_secs, 4) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, screen_on_secs, 5) \
|
X(a, STATIC, SINGULAR, UINT32, screen_on_secs, 5) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, phone_timeout_secs, 6) \
|
X(a, STATIC, SINGULAR, UINT32, phone_timeout_secs, 6) \
|
||||||
@ -661,11 +658,11 @@ extern const pb_msgdesc_t ToRadio_msg;
|
|||||||
#define SubPacket_size 275
|
#define SubPacket_size 275
|
||||||
#define MeshPacket_size 320
|
#define MeshPacket_size 320
|
||||||
#define ChannelSettings_size 84
|
#define ChannelSettings_size 84
|
||||||
#define RadioConfig_size 314
|
#define RadioConfig_size 308
|
||||||
#define RadioConfig_UserPreferences_size 225
|
#define RadioConfig_UserPreferences_size 219
|
||||||
#define NodeInfo_size 132
|
#define NodeInfo_size 132
|
||||||
#define MyNodeInfo_size 110
|
#define MyNodeInfo_size 110
|
||||||
#define DeviceState_size 5824
|
#define DeviceState_size 5818
|
||||||
#define DebugString_size 258
|
#define DebugString_size 258
|
||||||
#define FromRadio_size 329
|
#define FromRadio_size 329
|
||||||
#define ToRadio_size 323
|
#define ToRadio_size 323
|
||||||
|
Loading…
Reference in New Issue
Block a user