From a002a07ed52897dfd1082100b0af24f9b247916e Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Mon, 8 Feb 2021 09:07:03 +0100 Subject: [PATCH] sdcardCheck: minor refactor I was late for the review. --- .../PreFlightCheck/checks/sdcardCheck.cpp | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/modules/commander/Arming/PreFlightCheck/checks/sdcardCheck.cpp b/src/modules/commander/Arming/PreFlightCheck/checks/sdcardCheck.cpp index 7ff3097099..14ae7805c9 100644 --- a/src/modules/commander/Arming/PreFlightCheck/checks/sdcardCheck.cpp +++ b/src/modules/commander/Arming/PreFlightCheck/checks/sdcardCheck.cpp @@ -34,6 +34,7 @@ #include "../PreFlightCheck.hpp" #include #include + #ifdef __PX4_DARWIN #include #include @@ -43,30 +44,29 @@ bool PreFlightCheck::sdcardCheck(orb_advert_t *mavlink_log_pub, const bool report_fail) { - const char *microsd_dir = PX4_STORAGEDIR; bool success = true; - struct statfs statfs_buf; - uint64_t total_bytes = 0; - int32_t reporting_enabled = 0; - param_get(param_find("COM_ARM_SDCARD"), &reporting_enabled); + int32_t param_com_arm_sdcard{0}; + param_get(param_find("COM_ARM_SDCARD"), ¶m_com_arm_sdcard); - if (reporting_enabled == 0) { - return success; - } + if (param_com_arm_sdcard > 0) { + bool sdcard_present{false}; + struct statfs statfs_buf; - if (statfs(microsd_dir, &statfs_buf) == 0) { - total_bytes = (uint64_t)statfs_buf.f_blocks * statfs_buf.f_bsize; - } - - if (total_bytes == 0) { // on NuttX we get 0 total bytes if no SD card is inserted - - if (reporting_enabled == 2) { - success = false; + if (statfs(PX4_STORAGEDIR, &statfs_buf) == 0) { + // on NuttX we get a data block count f_blocks and byte count per block f_bsize if an SD card is inserted + sdcard_present = (statfs_buf.f_blocks > 0) && (statfs_buf.f_bsize > 0); } - if (report_fail && reporting_enabled > 0) { - mavlink_log_critical(mavlink_log_pub, "Warning! Missing FMU SD Card."); + if (!sdcard_present) { + if (report_fail) { + mavlink_log_critical(mavlink_log_pub, "Warning! Missing FMU SD Card."); + } + + if (param_com_arm_sdcard == 2) { + // disallow arming without sd card + success = false; + } } }