mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-15 12:25:20 +03:00
Fixed reporting of SD card when not configured.
This commit is contained in:
parent
08e6ae39ab
commit
14994afad5
1 changed files with 45 additions and 44 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue