diff --git a/firmware/controllers/algo/obd_error_codes.h b/firmware/controllers/algo/obd_error_codes.h index 0603a12cd2..1c611c552d 100644 --- a/firmware/controllers/algo/obd_error_codes.h +++ b/firmware/controllers/algo/obd_error_codes.h @@ -1754,8 +1754,8 @@ typedef enum { CUSTOM_OBD_58 = 6058, CUSTOM_OBD_59 = 6059, - CUSTOM_OBD_60 = 6060, - CUSTOM_OBD_61 = 6061, + CUSTOM_OBD_MMC_START1 = 6060, + CUSTOM_OBD_MMC_START2 = 6061, CUSTOM_OBD_62 = 6062, CUSTOM_OBD_63 = 6063, CUSTOM_OBD_64 = 6064, diff --git a/firmware/hw_layer/mmc_card.cpp b/firmware/hw_layer/mmc_card.cpp index d40e2f3ffb..7618504f98 100644 --- a/firmware/hw_layer/mmc_card.cpp +++ b/firmware/hw_layer/mmc_card.cpp @@ -344,6 +344,10 @@ static void MMCmount(void) { scheduleMsg(&logger, "Error: Already mounted. \"umountsd\" first"); return; } + if ((MMCD1.state != BLK_STOP) && (MMCD1.state != BLK_ACTIVE)) { + firmwareError(CUSTOM_OBD_MMC_START1, "mmc_state1 %d", MMCD1.state); + return; + } // start to initialize MMC/SD mmcStart(&MMCD1, &mmccfg); // Configures and activates the MMC peripheral. @@ -430,6 +434,11 @@ void initMmcCard(void) { // start to initialize MMC/SD mmcObjectInit(&MMCD1); // Initializes an instance. + if ((MMCD1.state != BLK_STOP) && (MMCD1.state != BLK_ACTIVE)) { + firmwareError(CUSTOM_OBD_MMC_START2, "mmc_state2 %d", MMCD1.state); + return; + } + mmcStart(&MMCD1, &mmccfg); chThdCreateStatic(mmcThreadStack, sizeof(mmcThreadStack), LOWPRIO, (tfunc_t) MMCmonThread, NULL);