mirror of
https://github.com/meshtastic/firmware.git
synced 2025-12-17 08:12:32 +00:00
Fix iOS bluetooth crash: Ensure UINT32_MAX is not used (#7147)
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user