diff --git a/src/main/drivers/usb_msc_f4xx.c b/src/main/drivers/usb_msc_f4xx.c index a98c017268..52e2b6043a 100644 --- a/src/main/drivers/usb_msc_f4xx.c +++ b/src/main/drivers/usb_msc_f4xx.c @@ -46,6 +46,7 @@ #include "drivers/accgyro/accgyro_mpu.h" +#include "pg/sdcard.h" #include "pg/usb.h" #include "usb_core.h" @@ -84,7 +85,20 @@ uint8_t mscStart(void) switch (blackboxConfig()->device) { #ifdef USE_SDCARD case BLACKBOX_DEVICE_SDCARD: - USBD_STORAGE_fops = &USBD_MSC_MICRO_SDIO_fops; + switch (sdcardConfig()->mode) { +#ifdef USE_SDCARD_SDIO + case SDCARD_MODE_SDIO: + USBD_STORAGE_fops = &USBD_MSC_MICRO_SDIO_fops; + break; +#endif +#ifdef USE_SDCARD_SPI + case SDCARD_MODE_SPI: + USBD_STORAGE_fops = &USBD_MSC_MICRO_SD_SPI_fops; + break; +#endif + default: + return 1; + } break; #endif diff --git a/src/main/drivers/usb_msc_f7xx.c b/src/main/drivers/usb_msc_f7xx.c index a0c47a586f..9e104f70f1 100644 --- a/src/main/drivers/usb_msc_f7xx.c +++ b/src/main/drivers/usb_msc_f7xx.c @@ -45,6 +45,7 @@ #include "drivers/accgyro/accgyro_mpu.h" +#include "pg/sdcard.h" #include "pg/usb.h" #include "vcp_hal/usbd_cdc_interface.h" @@ -88,7 +89,20 @@ uint8_t mscStart(void) switch (blackboxConfig()->device) { #ifdef USE_SDCARD case BLACKBOX_DEVICE_SDCARD: - USBD_MSC_RegisterStorage(&USBD_Device, &USBD_MSC_MICRO_SDIO_fops); + switch (sdcardConfig()->mode) { +#ifdef USE_SDCARD_SDIO + case SDCARD_MODE_SDIO: + USBD_MSC_RegisterStorage(&USBD_Device, &USBD_MSC_MICRO_SDIO_fops); + break; +#endif +#ifdef USE_SDCARD_SPI + case SDCARD_MODE_SPI: + USBD_MSC_RegisterStorage(&USBD_Device, &USBD_MSC_MICRO_SD_SPI_fops); + break; +#endif + default: + return 1; + } break; #endif diff --git a/src/main/msc/usbd_storage.h b/src/main/msc/usbd_storage.h index 3fb51e3e22..f77d326cde 100644 --- a/src/main/msc/usbd_storage.h +++ b/src/main/msc/usbd_storage.h @@ -29,18 +29,24 @@ #ifdef USE_HAL_DRIVER extern USBD_StorageTypeDef *USBD_STORAGE_fops; -#ifdef USE_SDCARD +#ifdef USE_SDCARD_SDIO extern USBD_StorageTypeDef USBD_MSC_MICRO_SDIO_fops; #endif +#ifdef USE_SDCARD_SPI +extern USBD_StorageTypeDef USBD_MSC_MICRO_SD_SPI_fops; +#endif #ifdef USE_FLASHFS extern USBD_StorageTypeDef USBD_MSC_EMFAT_fops; #endif -#else +#else // USE_HAL_DRIVER extern USBD_STORAGE_cb_TypeDef *USBD_STORAGE_fops; -#ifdef USE_SDCARD +#ifdef USE_SDCARD_SDIO extern USBD_STORAGE_cb_TypeDef USBD_MSC_MICRO_SDIO_fops; #endif +#ifdef USE_SDCARD_SPI +extern USBD_STORAGE_cb_TypeDef USBD_MSC_MICRO_SD_SPI_fops; +#endif #ifdef USE_FLASHFS extern USBD_STORAGE_cb_TypeDef USBD_MSC_EMFAT_fops; #endif -#endif +#endif // USE_HAL_DRIVER diff --git a/src/main/msc/usbd_storage_sd_spi.c b/src/main/msc/usbd_storage_sd_spi.c index 50827bdcc1..c514edfe8b 100644 --- a/src/main/msc/usbd_storage_sd_spi.c +++ b/src/main/msc/usbd_storage_sd_spi.c @@ -110,7 +110,7 @@ static uint8_t STORAGE_Inquirydata[] = {//36 }; #ifdef USE_HAL_DRIVER -USBD_StorageTypeDef USBD_MSC_MICRO_SDIO_fops = +USBD_StorageTypeDef USBD_MSC_MICRO_SD_SPI_fops = { STORAGE_Init, STORAGE_GetCapacity, @@ -122,7 +122,7 @@ USBD_StorageTypeDef USBD_MSC_MICRO_SDIO_fops = (int8_t*)STORAGE_Inquirydata, }; #else -USBD_STORAGE_cb_TypeDef USBD_MSC_MICRO_SDIO_fops = +USBD_STORAGE_cb_TypeDef USBD_MSC_MICRO_SD_SPI_fops = { STORAGE_Init, STORAGE_GetCapacity,