diff --git a/src/FatFs/diskio.h b/src/FatFs/diskio.h index 2fa4b280f..29a5cf88d 100644 --- a/src/FatFs/diskio.h +++ b/src/FatFs/diskio.h @@ -26,6 +26,10 @@ typedef enum { /*---------------------------------------*/ /* Prototypes for disk control functions */ +#ifdef __cplusplus +extern "C" { +#endif + int assign_drives (int, int); DSTATUS disk_initialize (BYTE); DSTATUS disk_status (BYTE); @@ -35,6 +39,9 @@ DRESULT disk_write (BYTE, const BYTE*, DWORD, BYTE); #endif DRESULT disk_ioctl (BYTE, BYTE, void*); +#ifdef __cplusplus +} +#endif /* Disk Status Bits (DSTATUS) */ diff --git a/src/Makefile b/src/Makefile index fc9b0499f..5df555df0 100644 --- a/src/Makefile +++ b/src/Makefile @@ -441,8 +441,9 @@ ifeq ($(PCB), X9D) CPPSRC += sky9x/sound_driver.cpp sky9x/haptic_driver.cpp sky9x/sdcard_driver.cpp ifeq ($(SDCARD), YES) - SRC += FatFs/ff.c FatFs/fattime.c FatFs/option/ccsbcs.c sky9x/diskio.c + EXTRABOARDSRC += FatFs/ff.c FatFs/fattime.c FatFs/option/ccsbcs.c sky9x/diskio.cpp CPPDEFS += -DVOICE + EXTRAINCDIRS += FatFs FatFs/option endif ifeq ($(BLUETOOTH), YES) @@ -476,7 +477,8 @@ ifeq ($(PCB), SKY9X) CPPSRC += sky9x/sound_driver.cpp sky9x/haptic_driver.cpp sky9x/sdcard_driver.cpp sky9x/massstorage.cpp ifeq ($(SDCARD), YES) - SRC += FatFs/ff.c FatFs/fattime.c FatFs/option/ccsbcs.c sky9x/diskio.c + EXTRAINCDIRS += FatFs FatFs/option + EXTRABOARDSRC += FatFs/ff.c FatFs/fattime.c FatFs/option/ccsbcs.c sky9x/diskio.cpp CPPDEFS += -DVOICE endif diff --git a/src/sky9x/audio.cpp b/src/sky9x/audio.cpp index 9c3c3949b..ddc2500c2 100644 --- a/src/sky9x/audio.cpp +++ b/src/sky9x/audio.cpp @@ -34,7 +34,6 @@ #include "../open9x.h" #if defined(SDCARD) - const char * audioFilenames[] = { "inactiv", "lowbatt", @@ -67,8 +66,6 @@ const char * audioFilenames[] = { uint32_t sdAvailableAudioFiles = 0; -// TODO enable the assert when it's C++ -extern "C" { void retrieveAvailableAudioFiles() { FILINFO info; @@ -80,10 +77,8 @@ void retrieveAvailableAudioFiles() char filename[32] = SYSTEM_SOUNDS_PATH "/"; -#if !defined WIN32 && defined __GNUC__ assert(sizeof(audioFilenames)==AU_FRSKY_FIRST*sizeof(char *)); assert(sizeof(sdAvailableAudioFiles)*8 > AU_FRSKY_FIRST); -#endif uint32_t availableAudioFiles = 0; @@ -96,7 +91,6 @@ void retrieveAvailableAudioFiles() sdAvailableAudioFiles = availableAudioFiles; } -} inline bool isAudioFileAvailable(uint8_t i, char * filename) { diff --git a/src/sky9x/diskio.c b/src/sky9x/diskio.cpp similarity index 96% rename from src/sky9x/diskio.c rename to src/sky9x/diskio.cpp index 429f9703f..c4bbb96ba 100644 --- a/src/sky9x/diskio.c +++ b/src/sky9x/diskio.cpp @@ -615,7 +615,6 @@ static const char * sdCmd52(uint8_t wrFlag, *status = HSMCI->HSMCI_RSPR[0]; return 0; } -#endif const char * sdSwReset(uint32_t retry) { @@ -629,6 +628,7 @@ const char * sdSwReset(uint32_t retry) } return result; } +#endif /** * \brief Run the SD/MMC/SDIO Mode initialization sequence. @@ -954,8 +954,9 @@ void sdInit() #endif uint8_t sdErrorCount = 0; -static FATFS g_FATFS_Obj = { 0 }; -void retrieveAvailableAudioFiles(); +FATFS g_FATFS_Obj = { 0 }; + +extern void retrieveAvailableAudioFiles(); void sdPoll10mS() {