mirror of
https://github.com/meshtastic/firmware.git
synced 2025-08-03 04:15:53 +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 TWO_SECONDS_MS 2 * 1000
|
||||||
#define FIVE_SECONDS_MS 5 * 1000
|
#define FIVE_SECONDS_MS 5 * 1000
|
||||||
#define TEN_SECONDS_MS 10 * 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 min_default_telemetry_interval_secs 30 * 60
|
||||||
#define default_gps_update_interval IF_ROUTER(ONE_DAY, 2 * 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 = Default::getConfiguredOrMinimumValue(
|
||||||
moduleConfig.telemetry.health_update_interval, min_default_telemetry_interval_secs);
|
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 &&
|
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) {
|
||||||
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;
|
moduleConfig.telemetry.device_update_interval = ONE_DAY;
|
||||||
} else if (role == meshtastic_Config_DeviceConfig_Role_CLIENT_HIDDEN) {
|
} else if (role == meshtastic_Config_DeviceConfig_Role_CLIENT_HIDDEN) {
|
||||||
config.device.rebroadcast_mode = meshtastic_Config_DeviceConfig_RebroadcastMode_LOCAL_ONLY;
|
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_smart_enabled = false;
|
||||||
config.position.position_broadcast_secs = UINT32_MAX;
|
config.position.position_broadcast_secs = MAX_INTERVAL;
|
||||||
moduleConfig.neighbor_info.update_interval = UINT32_MAX;
|
moduleConfig.neighbor_info.update_interval = MAX_INTERVAL;
|
||||||
moduleConfig.telemetry.device_update_interval = UINT32_MAX;
|
moduleConfig.telemetry.device_update_interval = MAX_INTERVAL;
|
||||||
moduleConfig.telemetry.environment_update_interval = UINT32_MAX;
|
moduleConfig.telemetry.environment_update_interval = MAX_INTERVAL;
|
||||||
moduleConfig.telemetry.air_quality_interval = UINT32_MAX;
|
moduleConfig.telemetry.air_quality_interval = MAX_INTERVAL;
|
||||||
moduleConfig.telemetry.health_update_interval = UINT32_MAX;
|
moduleConfig.telemetry.health_update_interval = MAX_INTERVAL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -917,7 +933,7 @@ void NodeDB::initModuleConfigIntervals()
|
|||||||
#ifdef USERPREFS_CONFIG_DEVICE_TELEM_UPDATE_INTERVAL
|
#ifdef USERPREFS_CONFIG_DEVICE_TELEM_UPDATE_INTERVAL
|
||||||
moduleConfig.telemetry.device_update_interval = USERPREFS_CONFIG_DEVICE_TELEM_UPDATE_INTERVAL;
|
moduleConfig.telemetry.device_update_interval = USERPREFS_CONFIG_DEVICE_TELEM_UPDATE_INTERVAL;
|
||||||
#else
|
#else
|
||||||
moduleConfig.telemetry.device_update_interval = UINT32_MAX;
|
moduleConfig.telemetry.device_update_interval = MAX_INTERVAL;
|
||||||
#endif
|
#endif
|
||||||
moduleConfig.telemetry.environment_update_interval = 0;
|
moduleConfig.telemetry.environment_update_interval = 0;
|
||||||
moduleConfig.telemetry.air_quality_interval = 0;
|
moduleConfig.telemetry.air_quality_interval = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user