From 7e0a30c08fc302608d45b63813fab67507eb2639 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 20 Feb 2014 16:21:04 +0100 Subject: [PATCH] Reduces the duration of SD search for automatic model files --- radio/src/audio_arm.cpp | 115 +++++++++++++++++++++++----------------- 1 file changed, 67 insertions(+), 48 deletions(-) diff --git a/radio/src/audio_arm.cpp b/radio/src/audio_arm.cpp index 0dc92a1e3..4161778d8 100644 --- a/radio/src/audio_arm.cpp +++ b/radio/src/audio_arm.cpp @@ -163,12 +163,18 @@ void referenceSystemAudioFiles() const char * suffixes[] = { "-off", "-on" }; +char * getModelPath(char * path) +{ + strcpy(path, SOUNDS_PATH "/"); + strncpy(path+SOUNDS_PATH_LNG_OFS, currentLanguagePack->id, 2); + char * result = strcat_modelname(path+sizeof(SOUNDS_PATH), g_eeGeneral.currModel); + *result++ = '/'; + return result; +} + void getPhaseAudioFile(char * filename, int index, unsigned int event) { - strcpy(filename, SOUNDS_PATH "/"); - strncpy(filename+SOUNDS_PATH_LNG_OFS, currentLanguagePack->id, 2); - char *str = strcat_modelname(filename+sizeof(SOUNDS_PATH), g_eeGeneral.currModel); - *str++ = '/'; + char * str = getModelPath(filename); char * tmp = strcat_phasename(str, index); strcpy(tmp, suffixes[event]); strcat(tmp, SOUNDS_EXT); @@ -176,10 +182,7 @@ void getPhaseAudioFile(char * filename, int index, unsigned int event) void getSwitchAudioFile(char * filename, int index) { - strcpy(filename, SOUNDS_PATH "/"); - strncpy(filename+SOUNDS_PATH_LNG_OFS, currentLanguagePack->id, 2); - char *str = strcat_modelname(filename+sizeof(SOUNDS_PATH), g_eeGeneral.currModel); - *str++ = '/'; + char * str = getModelPath(filename); int len = STR_VSWITCHES[0]; strncpy(str, &STR_VSWITCHES[1+len*index], len); str += len-1; @@ -203,10 +206,7 @@ void getSwitchAudioFile(char * filename, int index) void getLogicalSwitchAudioFile(char * filename, int index, unsigned int event) { - strcpy(filename, SOUNDS_PATH "/"); - strncpy(filename+SOUNDS_PATH_LNG_OFS, currentLanguagePack->id, 2); - char *str = strcat_modelname(filename+sizeof(SOUNDS_PATH), g_eeGeneral.currModel); - *str++ = '/'; + char * str = getModelPath(filename); int len = STR_VSWITCHES[0]; strncpy(str, &STR_VSWITCHES[1+len*(index+SWSRC_FIRST_CSW-1)], len); str += len; @@ -216,46 +216,65 @@ void getLogicalSwitchAudioFile(char * filename, int index, unsigned int event) void referenceModelAudioFiles() { - char filename[AUDIO_FILENAME_MAXLEN+1]; + char path[AUDIO_FILENAME_MAXLEN+1]; + FILINFO fno; + DIR dir; + char *fn; /* This function is assuming non-Unicode cfg. */ + TCHAR lfn[_MAX_LFN + 1]; + fno.lfname = lfn; + fno.lfsize = sizeof(lfn); - { - // Phases Audio Files -[on|off].wav - uint32_t mask = 0; - for (int i=0; i-[on|off].wav + for (int i=0; i-[up|mid|down].wav + for (int i=0; i-[on|off].wav + for (int i=0; i-[up|mid|down].wav - uint32_t mask = 0; - for (int i=0; i-[on|off].wav - uint64_t mask = 0; - for (int i=0; i