mirror of
https://github.com/meshtastic/firmware.git
synced 2025-07-31 02:45:41 +00:00
Fix iOS bluetooth crash: Ensure UINT32_MAX is not used (#7147)
This commit is contained in:
parent
50424d1035
commit
18fbc2149d
@ -8,6 +8,7 @@
|
||||
#define TWO_SECONDS_MS 2 * 1000
|
||||
#define FIVE_SECONDS_MS 5 * 1000
|
||||
#define TEN_SECONDS_MS 10 * 1000
|
||||
#define MAX_INTERVAL INT32_MAX // FIXME: INT32_MAX to avoid overflow issues with Apple clients but should be UINT32_MAX
|
||||
|
||||
#define min_default_telemetry_interval_secs 30 * 60
|
||||
#define default_gps_update_interval IF_ROUTER(ONE_DAY, 2 * 60)
|
||||
|
@ -339,6 +339,22 @@ NodeDB::NodeDB()
|
||||
moduleConfig.telemetry.health_update_interval = Default::getConfiguredOrMinimumValue(
|
||||
moduleConfig.telemetry.health_update_interval, min_default_telemetry_interval_secs);
|
||||
}
|
||||
// FIXME: UINT32_MAX intervals overflows Apple clients until they are fully patched
|
||||
if (config.device.node_info_broadcast_secs > MAX_INTERVAL)
|
||||
config.device.node_info_broadcast_secs = MAX_INTERVAL;
|
||||
if (config.position.position_broadcast_secs > MAX_INTERVAL)
|
||||
config.position.position_broadcast_secs = MAX_INTERVAL;
|
||||
if (moduleConfig.neighbor_info.update_interval > MAX_INTERVAL)
|
||||
moduleConfig.neighbor_info.update_interval = MAX_INTERVAL;
|
||||
if (moduleConfig.telemetry.device_update_interval > MAX_INTERVAL)
|
||||
moduleConfig.telemetry.device_update_interval = MAX_INTERVAL;
|
||||
if (moduleConfig.telemetry.environment_update_interval > MAX_INTERVAL)
|
||||
moduleConfig.telemetry.environment_update_interval = MAX_INTERVAL;
|
||||
if (moduleConfig.telemetry.air_quality_interval > MAX_INTERVAL)
|
||||
moduleConfig.telemetry.air_quality_interval = MAX_INTERVAL;
|
||||
if (moduleConfig.telemetry.health_update_interval > MAX_INTERVAL)
|
||||
moduleConfig.telemetry.health_update_interval = MAX_INTERVAL;
|
||||
|
||||
if (moduleConfig.mqtt.has_map_report_settings &&
|
||||
moduleConfig.mqtt.map_report_settings.publish_interval_secs < default_map_publish_interval_secs) {
|
||||
moduleConfig.mqtt.map_report_settings.publish_interval_secs = default_map_publish_interval_secs;
|
||||
@ -900,14 +916,14 @@ void NodeDB::installRoleDefaults(meshtastic_Config_DeviceConfig_Role role)
|
||||
moduleConfig.telemetry.device_update_interval = ONE_DAY;
|
||||
} else if (role == meshtastic_Config_DeviceConfig_Role_CLIENT_HIDDEN) {
|
||||
config.device.rebroadcast_mode = meshtastic_Config_DeviceConfig_RebroadcastMode_LOCAL_ONLY;
|
||||
config.device.node_info_broadcast_secs = UINT32_MAX;
|
||||
config.device.node_info_broadcast_secs = MAX_INTERVAL;
|
||||
config.position.position_broadcast_smart_enabled = false;
|
||||
config.position.position_broadcast_secs = UINT32_MAX;
|
||||
moduleConfig.neighbor_info.update_interval = UINT32_MAX;
|
||||
moduleConfig.telemetry.device_update_interval = UINT32_MAX;
|
||||
moduleConfig.telemetry.environment_update_interval = UINT32_MAX;
|
||||
moduleConfig.telemetry.air_quality_interval = UINT32_MAX;
|
||||
moduleConfig.telemetry.health_update_interval = UINT32_MAX;
|
||||
config.position.position_broadcast_secs = MAX_INTERVAL;
|
||||
moduleConfig.neighbor_info.update_interval = MAX_INTERVAL;
|
||||
moduleConfig.telemetry.device_update_interval = MAX_INTERVAL;
|
||||
moduleConfig.telemetry.environment_update_interval = MAX_INTERVAL;
|
||||
moduleConfig.telemetry.air_quality_interval = MAX_INTERVAL;
|
||||
moduleConfig.telemetry.health_update_interval = MAX_INTERVAL;
|
||||
}
|
||||
}
|
||||
|
||||
@ -917,7 +933,7 @@ void NodeDB::initModuleConfigIntervals()
|
||||
#ifdef USERPREFS_CONFIG_DEVICE_TELEM_UPDATE_INTERVAL
|
||||
moduleConfig.telemetry.device_update_interval = USERPREFS_CONFIG_DEVICE_TELEM_UPDATE_INTERVAL;
|
||||
#else
|
||||
moduleConfig.telemetry.device_update_interval = UINT32_MAX;
|
||||
moduleConfig.telemetry.device_update_interval = MAX_INTERVAL;
|
||||
#endif
|
||||
moduleConfig.telemetry.environment_update_interval = 0;
|
||||
moduleConfig.telemetry.air_quality_interval = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user