diff --git a/src/main/drivers/sdcard.c b/src/main/drivers/sdcard.c index ef98230532..91d4fcd7bd 100644 --- a/src/main/drivers/sdcard.c +++ b/src/main/drivers/sdcard.c @@ -83,7 +83,7 @@ bool sdcard_isInserted(void) /** * Dispatch */ -sdcardVTable_t *sdcardVTable; +sdcardVTable_t *sdcardVTable = NULL; void sdcard_init(void) { @@ -100,17 +100,29 @@ void sdcard_init(void) bool sdcard_readBlock(uint32_t blockIndex, uint8_t *buffer, sdcard_operationCompleteCallback_c callback, uint32_t callbackData) { - return sdcardVTable->readBlock(blockIndex, buffer, callback, callbackData); + if (sdcardVTable) { + return sdcardVTable->readBlock(blockIndex, buffer, callback, callbackData); + } else { + return false; + } } sdcardOperationStatus_e sdcard_beginWriteBlocks(uint32_t blockIndex, uint32_t blockCount) { - return sdcardVTable->beginWriteBlocks(blockIndex, blockCount); + if (sdcardVTable) { + return sdcardVTable->beginWriteBlocks(blockIndex, blockCount); + } else { + return false; + } } sdcardOperationStatus_e sdcard_writeBlock(uint32_t blockIndex, uint8_t *buffer, sdcard_operationCompleteCallback_c callback, uint32_t callbackData) { - return sdcardVTable->writeBlock(blockIndex, buffer, callback, callbackData); + if (sdcardVTable) { + return sdcardVTable->writeBlock(blockIndex, buffer, callback, callbackData); + } else { + return false; + } } bool sdcard_poll(void) diff --git a/src/main/fc/fc_init.c b/src/main/fc/fc_init.c index d327d685a8..afbc605815 100644 --- a/src/main/fc/fc_init.c +++ b/src/main/fc/fc_init.c @@ -22,6 +22,7 @@ #include "platform.h" #include "blackbox/blackbox.h" +#include "blackbox/blackbox_io.h" #include "build/assert.h" #include "build/atomic.h" @@ -597,21 +598,30 @@ void init(void) } #endif +#ifdef USE_BLACKBOX + // SDCARD and FLASHFS are used only for blackbox + // Make sure we only init what's necessary for blackbox + switch (blackboxConfig()->device) { #ifdef USE_FLASHFS + case BLACKBOX_DEVICE_FLASH: #ifdef USE_FLASH_M25P16 - m25p16_init(0); + m25p16_init(0); #endif - - flashfsInit(); + flashfsInit(); + break; #endif #ifdef USE_SDCARD - sdcardInsertionDetectInit(); - sdcard_init(); - afatfs_init(); + case BLACKBOX_DEVICE_SDCARD: + sdcardInsertionDetectInit(); + sdcard_init(); + afatfs_init(); + break; #endif + default: + break; + } -#ifdef USE_BLACKBOX blackboxInit(); #endif