diff --git a/src/main/msp/msp.c b/src/main/msp/msp.c index a78be526df..0d3b9af2e6 100644 --- a/src/main/msp/msp.c +++ b/src/main/msp/msp.c @@ -157,7 +157,7 @@ typedef enum { } mspSDCardState_e; typedef enum { - MSP_SDCARD_FLAG_SUPPORTTED = 1 + MSP_SDCARD_FLAG_SUPPORTED = 1 } mspSDCardFlags_e; typedef enum { @@ -296,56 +296,57 @@ static void mspRebootFn(serialPort_t *serialPort) static void serializeSDCardSummaryReply(sbuf_t *dst) { -#ifdef USE_SDCARD - uint8_t flags = MSP_SDCARD_FLAG_SUPPORTTED; + uint8_t flags = 0; uint8_t state = 0; + uint8_t lastError = 0; + uint32_t freeSpace = 0; + uint32_t totalSpace = 0; - sbufWriteU8(dst, flags); +#if defined(USE_SDCARD) + if (sdcardConfig()->mode) { + flags = MSP_SDCARD_FLAG_SUPPORTED; - // Merge the card and filesystem states together - if (!sdcard_isInserted()) { - state = MSP_SDCARD_STATE_NOT_PRESENT; - } else if (!sdcard_isFunctional()) { - state = MSP_SDCARD_STATE_FATAL; - } else { - switch (afatfs_getFilesystemState()) { - case AFATFS_FILESYSTEM_STATE_READY: - state = MSP_SDCARD_STATE_READY; - break; - - case AFATFS_FILESYSTEM_STATE_INITIALIZATION: - if (sdcard_isInitialized()) { - state = MSP_SDCARD_STATE_FS_INIT; - } else { - state = MSP_SDCARD_STATE_CARD_INIT; - } - break; - - case AFATFS_FILESYSTEM_STATE_FATAL: - case AFATFS_FILESYSTEM_STATE_UNKNOWN: - default: + // Merge the card and filesystem states together + if (!sdcard_isInserted()) { + state = MSP_SDCARD_STATE_NOT_PRESENT; + } else if (!sdcard_isFunctional()) { state = MSP_SDCARD_STATE_FATAL; - break; + } else { + switch (afatfs_getFilesystemState()) { + case AFATFS_FILESYSTEM_STATE_READY: + state = MSP_SDCARD_STATE_READY; + break; + + case AFATFS_FILESYSTEM_STATE_INITIALIZATION: + if (sdcard_isInitialized()) { + state = MSP_SDCARD_STATE_FS_INIT; + } else { + state = MSP_SDCARD_STATE_CARD_INIT; + } + break; + + case AFATFS_FILESYSTEM_STATE_FATAL: + case AFATFS_FILESYSTEM_STATE_UNKNOWN: + default: + state = MSP_SDCARD_STATE_FATAL; + break; + } + } + + lastError = afatfs_getLastError(); + // Write free space and total space in kilobytes + if (state == MSP_SDCARD_STATE_READY) { + freeSpace = afatfs_getContiguousFreeSpace() / 1024; + totalSpace = sdcard_getMetadata()->numBlocks / 2; } } - - sbufWriteU8(dst, state); - sbufWriteU8(dst, afatfs_getLastError()); - // Write free space and total space in kilobytes - if (state == MSP_SDCARD_STATE_READY) { - sbufWriteU32(dst, afatfs_getContiguousFreeSpace() / 1024); - sbufWriteU32(dst, sdcard_getMetadata()->numBlocks / 2); // Block size is half a kilobyte - } else { - sbufWriteU32(dst, 0); - sbufWriteU32(dst, 0); - } -#else - sbufWriteU8(dst, 0); - sbufWriteU8(dst, 0); - sbufWriteU8(dst, 0); - sbufWriteU32(dst, 0); - sbufWriteU32(dst, 0); #endif + + sbufWriteU8(dst, flags); + sbufWriteU8(dst, state); + sbufWriteU8(dst, lastError); + sbufWriteU32(dst, freeSpace); + sbufWriteU32(dst, totalSpace); } static void serializeDataflashSummaryReply(sbuf_t *dst)