feat(logger): add warning for ineffective SDLOG params

This commit is contained in:
ttechnick
2026-03-11 19:37:01 -07:00
committed by Ramon Roche
parent 7c1dee0b41
commit 3502205661
2 changed files with 46 additions and 0 deletions
@@ -178,5 +178,44 @@ void SdCardChecks::checkAndReport(const Context &context, Report &reporter)
#endif /* CONFIG_MODULES_TASK_WATCHDOG */
#endif /* __PX4_NUTTX */
// Check if SDLOG parameters are set to non-default values while SD card logging is disabled
int32_t sdlog_backend = 0;
param_get(_param_sdlog_backend, &sdlog_backend);
const bool sdcard_logging_enabled = (sdlog_backend & 1) != 0;
if (!sdcard_logging_enabled) {
// Check if any SDLOG parameter differs from its default
auto param_changed = [](param_t p) {
int32_t val, def;
return (param_get(p, &val) == 0 && param_get_default_value(p, &def) == 0 && val != def);
};
const bool sdlog_params_changed = (param_changed(_param_sdlog_mode) ||
param_changed(_param_sdlog_profile) ||
param_changed(_param_sdlog_mission) ||
param_changed(_param_sdlog_dirs_max));
if (sdlog_params_changed) {
/* EVENT
* @description
* SD logging parameters (SDLOG_*) have been modified, but SD card logging
* is not enabled in <param>SDLOG_BACKEND</param>. These parameters will have no effect.
*
* <profile name="dev">
* Either enable SD card logging in <param>SDLOG_BACKEND</param>,
* or reset the SDLOG parameters to their default values.
* </profile>
*/
reporter.healthFailure(NavModes::None, health_component_t::logging,
events::ID("check_sdlog_params_no_sdcard"),
events::Log::Warning, "SDLOG parameters ineffective without SD card logging");
if (reporter.mavlink_log_pub()) {
mavlink_log_warning(reporter.mavlink_log_pub(), "SDLOG parameters set but SD card logging disabled");
}
}
}
#endif /* PX4_STORAGEDIR */
}
@@ -55,6 +55,13 @@ private:
#endif
#endif
// SDLOG parameters are from logger module, access via param_find
param_t _param_sdlog_backend{param_find("SDLOG_BACKEND")};
param_t _param_sdlog_mode{param_find("SDLOG_MODE")};
param_t _param_sdlog_profile{param_find("SDLOG_PROFILE")};
param_t _param_sdlog_mission{param_find("SDLOG_MISSION")};
param_t _param_sdlog_dirs_max{param_find("SDLOG_DIRS_MAX")};
DEFINE_PARAMETERS_CUSTOM_PARENT(HealthAndArmingCheckBase,
(ParamInt<px4::params::COM_ARM_SDCARD>) _param_com_arm_sdcard,
(ParamBool<px4::params::COM_ARM_HFLT_CHK>) _param_com_arm_hardfault_check