Skip to content

Commit

Permalink
Fixed reporting of SD card when not configured. (#8656)
Browse files Browse the repository at this point in the history
Fixed reporting of SD card when not configured.
  • Loading branch information
mikeller committed Aug 5, 2019
1 parent b5e2711 commit 84163b4
Showing 1 changed file with 43 additions and 42 deletions.
85 changes: 43 additions & 42 deletions src/main/msp/msp.c
Expand Up @@ -157,7 +157,7 @@ typedef enum {
} mspSDCardState_e;

typedef enum {
MSP_SDCARD_FLAG_SUPPORTTED = 1
MSP_SDCARD_FLAG_SUPPORTED = 1
} mspSDCardFlags_e;

typedef enum {
Expand Down Expand Up @@ -279,56 +279,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;

#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;

sbufWriteU8(dst, flags);

// 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_INITIALIZATION:
if (sdcard_isInitialized()) {
state = MSP_SDCARD_STATE_FS_INIT;
} else {
state = MSP_SDCARD_STATE_CARD_INIT;
case AFATFS_FILESYSTEM_STATE_FATAL:
case AFATFS_FILESYSTEM_STATE_UNKNOWN:
default:
state = MSP_SDCARD_STATE_FATAL;
break;
}
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;
}
}
#endif

sbufWriteU8(dst, flags);
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, lastError);
sbufWriteU32(dst, freeSpace);
sbufWriteU32(dst, totalSpace);
}

static void serializeDataflashSummaryReply(sbuf_t *dst)
Expand Down

0 comments on commit 84163b4

Please sign in to comment.