mirror of
https://github.com/opentx/opentx.git
synced 2025-07-26 01:35:21 +03:00
Audio fixes (#3818)
* * Switches audio filenames were wrong [Horus] * sdAvailableLogicalSwitchAudioFiles was too small (we now have 64 LSW), fixed with BitFiled class * Enabled Travis Gtests on Horus * SD card version mismatch trace * Re #3815: Audio debug timers added
This commit is contained in:
parent
9a40902c9d
commit
91cea45a43
9 changed files with 96 additions and 38 deletions
|
@ -24,4 +24,4 @@ install:
|
||||||
- sudo dpkg --install gcc-avr_1%3a4.8-2.1_amd64.deb avr-libc_1%3a1.8.0-4.1_all.deb libmpfr4_3.1.2-1_amd64.deb binutils-avr_2.23.1-2.1_amd64.deb libmpc3_1.0.1-1ubuntu1_amd64.deb
|
- sudo dpkg --install gcc-avr_1%3a4.8-2.1_amd64.deb avr-libc_1%3a1.8.0-4.1_all.deb libmpfr4_3.1.2-1_amd64.deb binutils-avr_2.23.1-2.1_amd64.deb libmpc3_1.0.1-1ubuntu1_amd64.deb
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- ./tools/commit-tests.sh .
|
- ./tools/commit-tests.sh
|
||||||
|
|
|
@ -217,15 +217,10 @@ const char * const audioFilenames[] = {
|
||||||
"timovr3"
|
"timovr3"
|
||||||
};
|
};
|
||||||
|
|
||||||
uint64_t sdAvailableSystemAudioFiles = 0;
|
BitField<(AU_SPECIAL_SOUND_FIRST)> sdAvailableSystemAudioFiles;
|
||||||
uint32_t sdAvailablePhaseAudioFiles = 0;
|
BitField<(MAX_FLIGHT_MODES * 2/*on, off*/)> sdAvailablePhaseAudioFiles;
|
||||||
uint64_t sdAvailableSwitchAudioFiles = 0;
|
BitField<(SWSRC_LAST_SWITCH+NUM_XPOTS*XPOTS_MULTIPOS_COUNT)> sdAvailableSwitchAudioFiles;
|
||||||
uint64_t sdAvailableLogicalSwitchAudioFiles = 0;
|
BitField<(MAX_LOGICAL_SWITCHES * 2/*on, off*/)> sdAvailableLogicalSwitchAudioFiles;
|
||||||
|
|
||||||
#define MASK_SYSTEM_AUDIO_FILE(index) ((uint64_t)1 << (index))
|
|
||||||
#define MASK_PHASE_AUDIO_FILE(index, event) ((uint32_t)1 << (2*(index)+(event)))
|
|
||||||
#define MASK_SWITCH_AUDIO_FILE(index) ((uint64_t)1 << (index))
|
|
||||||
#define MASK_LOGICAL_SWITCH_AUDIO_FILE(index, event) ((uint64_t)1 << (2*(index)+(event)))
|
|
||||||
|
|
||||||
char * getAudioPath(char * path)
|
char * getAudioPath(char * path)
|
||||||
{
|
{
|
||||||
|
@ -258,10 +253,9 @@ void referenceSystemAudioFiles()
|
||||||
fno.lfname = lfn;
|
fno.lfname = lfn;
|
||||||
fno.lfsize = sizeof(lfn);
|
fno.lfsize = sizeof(lfn);
|
||||||
|
|
||||||
uint64_t availableAudioFiles = 0;
|
sdAvailableSystemAudioFiles.reset();
|
||||||
|
|
||||||
assert(sizeof(audioFilenames)==AU_SPECIAL_SOUND_FIRST*sizeof(char *));
|
assert(sizeof(audioFilenames)==AU_SPECIAL_SOUND_FIRST*sizeof(char *));
|
||||||
assert(sizeof(sdAvailableSystemAudioFiles)*8 >= AU_SPECIAL_SOUND_FIRST);
|
|
||||||
|
|
||||||
char * filename = strAppendSystemAudioPath(path);
|
char * filename = strAppendSystemAudioPath(path);
|
||||||
*(filename-1) = '\0';
|
*(filename-1) = '\0';
|
||||||
|
@ -280,15 +274,13 @@ void referenceSystemAudioFiles()
|
||||||
for (int i=0; i<AU_SPECIAL_SOUND_FIRST; i++) {
|
for (int i=0; i<AU_SPECIAL_SOUND_FIRST; i++) {
|
||||||
getSystemAudioFile(path, i);
|
getSystemAudioFile(path, i);
|
||||||
if (!strcasecmp(filename, fn)) {
|
if (!strcasecmp(filename, fn)) {
|
||||||
availableAudioFiles |= MASK_SYSTEM_AUDIO_FILE(i);
|
sdAvailableSystemAudioFiles.setBit(i);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
f_closedir(&dir);
|
f_closedir(&dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
sdAvailableSystemAudioFiles = availableAudioFiles;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char * const suffixes[] = { "-off", "-on" };
|
const char * const suffixes[] = { "-off", "-on" };
|
||||||
|
@ -315,7 +307,7 @@ void getSwitchAudioFile(char * filename, swsrc_t index)
|
||||||
{
|
{
|
||||||
char * str = getModelAudioPath(filename);
|
char * str = getModelAudioPath(filename);
|
||||||
|
|
||||||
#if defined(PCBTARANIS)
|
#if defined(PCBTARANIS) || defined(PCBHORUS)
|
||||||
if (index <= SWSRC_LAST_SWITCH) {
|
if (index <= SWSRC_LAST_SWITCH) {
|
||||||
div_t swinfo = switchInfo(index);
|
div_t swinfo = switchInfo(index);
|
||||||
*str++ = 'S';
|
*str++ = 'S';
|
||||||
|
@ -373,9 +365,9 @@ void referenceModelAudioFiles()
|
||||||
fno.lfname = lfn;
|
fno.lfname = lfn;
|
||||||
fno.lfsize = sizeof(lfn);
|
fno.lfsize = sizeof(lfn);
|
||||||
|
|
||||||
sdAvailablePhaseAudioFiles = 0;
|
sdAvailablePhaseAudioFiles.reset();
|
||||||
sdAvailableSwitchAudioFiles = 0;
|
sdAvailableSwitchAudioFiles.reset();
|
||||||
sdAvailableLogicalSwitchAudioFiles = 0;
|
sdAvailableLogicalSwitchAudioFiles.reset();
|
||||||
|
|
||||||
char * filename = getModelAudioPath(path);
|
char * filename = getModelAudioPath(path);
|
||||||
*(filename-1) = '\0';
|
*(filename-1) = '\0';
|
||||||
|
@ -399,7 +391,7 @@ void referenceModelAudioFiles()
|
||||||
getPhaseAudioFile(path, i, event);
|
getPhaseAudioFile(path, i, event);
|
||||||
// TRACE("referenceModelAudioFiles(): searching for %s in %s", filename, fn);
|
// TRACE("referenceModelAudioFiles(): searching for %s in %s", filename, fn);
|
||||||
if (!strcasecmp(filename, fn)) {
|
if (!strcasecmp(filename, fn)) {
|
||||||
sdAvailablePhaseAudioFiles |= MASK_PHASE_AUDIO_FILE(i, event);
|
sdAvailablePhaseAudioFiles.setBit(INDEX_PHASE_AUDIO_FILE(i, event));
|
||||||
found = true;
|
found = true;
|
||||||
TRACE("\tfound: %s", filename);
|
TRACE("\tfound: %s", filename);
|
||||||
break;
|
break;
|
||||||
|
@ -410,9 +402,9 @@ void referenceModelAudioFiles()
|
||||||
// Switches Audio Files <switchname>-[up|mid|down].wav
|
// Switches Audio Files <switchname>-[up|mid|down].wav
|
||||||
for (int i=SWSRC_FIRST_SWITCH; i<=SWSRC_LAST_SWITCH+NUM_XPOTS*XPOTS_MULTIPOS_COUNT && !found; i++) {
|
for (int i=SWSRC_FIRST_SWITCH; i<=SWSRC_LAST_SWITCH+NUM_XPOTS*XPOTS_MULTIPOS_COUNT && !found; i++) {
|
||||||
getSwitchAudioFile(path, i);
|
getSwitchAudioFile(path, i);
|
||||||
// TRACE("referenceModelAudioFiles(): searching for %s in %s", filename, fn);
|
// TRACE("referenceModelAudioFiles(): searching for %s in %s (%d)", path, fn, i);
|
||||||
if (!strcasecmp(filename, fn)) {
|
if (!strcasecmp(filename, fn)) {
|
||||||
sdAvailableSwitchAudioFiles |= MASK_SWITCH_AUDIO_FILE(i-SWSRC_FIRST_SWITCH);
|
sdAvailableSwitchAudioFiles.setBit(i-SWSRC_FIRST_SWITCH);
|
||||||
found = true;
|
found = true;
|
||||||
TRACE("\tfound: %s", filename);
|
TRACE("\tfound: %s", filename);
|
||||||
}
|
}
|
||||||
|
@ -424,7 +416,7 @@ void referenceModelAudioFiles()
|
||||||
getLogicalSwitchAudioFile(path, i, event);
|
getLogicalSwitchAudioFile(path, i, event);
|
||||||
// TRACE("referenceModelAudioFiles(): searching for %s in %s", filename, fn);
|
// TRACE("referenceModelAudioFiles(): searching for %s in %s", filename, fn);
|
||||||
if (!strcasecmp(filename, fn)) {
|
if (!strcasecmp(filename, fn)) {
|
||||||
sdAvailableLogicalSwitchAudioFiles |= MASK_LOGICAL_SWITCH_AUDIO_FILE(i, event);
|
sdAvailableLogicalSwitchAudioFiles.setBit(INDEX_LOGICAL_SWITCH_AUDIO_FILE(i, event));
|
||||||
found = true;
|
found = true;
|
||||||
TRACE("\tfound: %s", filename);
|
TRACE("\tfound: %s", filename);
|
||||||
break;
|
break;
|
||||||
|
@ -445,25 +437,25 @@ bool isAudioFileReferenced(uint32_t i, char * filename)
|
||||||
// TRACE("isAudioFileReferenced(%08x)", i);
|
// TRACE("isAudioFileReferenced(%08x)", i);
|
||||||
|
|
||||||
if (category == SYSTEM_AUDIO_CATEGORY) {
|
if (category == SYSTEM_AUDIO_CATEGORY) {
|
||||||
if (sdAvailableSystemAudioFiles & MASK_SYSTEM_AUDIO_FILE(event)) {
|
if (sdAvailableSystemAudioFiles.getBit(event)) {
|
||||||
getSystemAudioFile(filename, event);
|
getSystemAudioFile(filename, event);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (category == PHASE_AUDIO_CATEGORY) {
|
else if (category == PHASE_AUDIO_CATEGORY) {
|
||||||
if (sdAvailablePhaseAudioFiles & MASK_PHASE_AUDIO_FILE(index, event)) {
|
if (sdAvailablePhaseAudioFiles.getBit(INDEX_PHASE_AUDIO_FILE(index, event))) {
|
||||||
getPhaseAudioFile(filename, index, event);
|
getPhaseAudioFile(filename, index, event);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (category == SWITCH_AUDIO_CATEGORY) {
|
else if (category == SWITCH_AUDIO_CATEGORY) {
|
||||||
if (sdAvailableSwitchAudioFiles & MASK_SWITCH_AUDIO_FILE(index)) {
|
if (sdAvailableSwitchAudioFiles.getBit(index)) {
|
||||||
getSwitchAudioFile(filename, SWSRC_FIRST_SWITCH+index);
|
getSwitchAudioFile(filename, SWSRC_FIRST_SWITCH+index);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (category == LOGICAL_SWITCH_AUDIO_CATEGORY) {
|
else if (category == LOGICAL_SWITCH_AUDIO_CATEGORY) {
|
||||||
if (sdAvailableLogicalSwitchAudioFiles & MASK_LOGICAL_SWITCH_AUDIO_FILE(index, event)) {
|
if (sdAvailableLogicalSwitchAudioFiles.getBit(INDEX_LOGICAL_SWITCH_AUDIO_FILE(index, event))) {
|
||||||
getLogicalSwitchAudioFile(filename, index, event);
|
getLogicalSwitchAudioFile(filename, index, event);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -527,13 +519,16 @@ void audioTask(void * pdata)
|
||||||
}
|
}
|
||||||
|
|
||||||
setSampleRate(AUDIO_SAMPLE_RATE);
|
setSampleRate(AUDIO_SAMPLE_RATE);
|
||||||
|
|
||||||
if (!unexpectedShutdown) {
|
if (!unexpectedShutdown) {
|
||||||
AUDIO_HELLO();
|
AUDIO_HELLO();
|
||||||
}
|
}
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
|
DEBUG_TIMER_SAMPLE(debugTimerAudioIterval);
|
||||||
|
DEBUG_TIMER_START(debugTimerAudioDuration);
|
||||||
audioQueue.wakeup();
|
audioQueue.wakeup();
|
||||||
|
DEBUG_TIMER_STOP(debugTimerAudioDuration);
|
||||||
CoTickDelay(2/*4ms*/);
|
CoTickDelay(2/*4ms*/);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -743,7 +738,9 @@ int ToneContext::mixBuffer(AudioBuffer * buffer, int volume, unsigned int fade)
|
||||||
|
|
||||||
void AudioQueue::wakeup()
|
void AudioQueue::wakeup()
|
||||||
{
|
{
|
||||||
|
DEBUG_TIMER_START(debugTimerAudioConsume);
|
||||||
audioConsumeCurrentBuffer();
|
audioConsumeCurrentBuffer();
|
||||||
|
DEBUG_TIMER_STOP(debugTimerAudioConsume);
|
||||||
|
|
||||||
AudioBuffer * buffer = getEmptyBuffer();
|
AudioBuffer * buffer = getEmptyBuffer();
|
||||||
if (buffer) {
|
if (buffer) {
|
||||||
|
@ -818,7 +815,9 @@ void AudioQueue::wakeup()
|
||||||
buffer->data[i] = (int16_t) (((tmpSample * currentSpeakerVolume) / VOLUME_LEVEL_MAX) + AUDIO_DATA_SILENCE);
|
buffer->data[i] = (int16_t) (((tmpSample * currentSpeakerVolume) / VOLUME_LEVEL_MAX) + AUDIO_DATA_SILENCE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
DEBUG_TIMER_START(debugTimerAudioPush);
|
||||||
audioPushBuffer(buffer);
|
audioPushBuffer(buffer);
|
||||||
|
DEBUG_TIMER_STOP(debugTimerAudioPush);
|
||||||
audioEnableIrq();
|
audioEnableIrq();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -981,7 +980,7 @@ void AudioQueue::stopPlay(uint8_t id)
|
||||||
|
|
||||||
void AudioQueue::stopSD()
|
void AudioQueue::stopSD()
|
||||||
{
|
{
|
||||||
sdAvailableSystemAudioFiles = 0;
|
sdAvailableSystemAudioFiles.reset();
|
||||||
stopAll();
|
stopAll();
|
||||||
playTone(0, 0, 100, PLAY_NOW); // insert a 100ms pause
|
playTone(0, 0, 100, PLAY_NOW); // insert a 100ms pause
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,47 @@
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include "ff.h"
|
#include "ff.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
Implements a bit field, number of bits is set by the template,
|
||||||
|
each bit can be modified and read by the provided methods.
|
||||||
|
*/
|
||||||
|
template <unsigned int NUM_BITS> class BitField {
|
||||||
|
private:
|
||||||
|
uint8_t bits[(NUM_BITS+7)/8];
|
||||||
|
public:
|
||||||
|
BitField()
|
||||||
|
{
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset()
|
||||||
|
{
|
||||||
|
memset(bits, 0, sizeof(bits));
|
||||||
|
}
|
||||||
|
|
||||||
|
void setBit(unsigned int bitNo)
|
||||||
|
{
|
||||||
|
if (bitNo >= NUM_BITS) return;
|
||||||
|
bits[bitNo >> 3] = bits[bitNo >> 3] | (1 << (bitNo & 0x07));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool getBit(unsigned int bitNo) const
|
||||||
|
{
|
||||||
|
// assert(bitNo < NUM_BITS);
|
||||||
|
if (bitNo >= NUM_BITS) return false;
|
||||||
|
return bits[bitNo >> 3] & (1 << (bitNo & 0x07));
|
||||||
|
}
|
||||||
|
|
||||||
|
void getSize() const
|
||||||
|
{
|
||||||
|
return NUM_BITS;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#define INDEX_LOGICAL_SWITCH_AUDIO_FILE(index, event) (2*(index)+(event))
|
||||||
|
#define INDEX_PHASE_AUDIO_FILE(index, event) (2*(index)+(event))
|
||||||
|
|
||||||
|
|
||||||
#define AUDIO_FILENAME_MAXLEN (42) // max length (example: /SOUNDS/fr/123456789012/1234567890-off.wav)
|
#define AUDIO_FILENAME_MAXLEN (42) // max length (example: /SOUNDS/fr/123456789012/1234567890-off.wav)
|
||||||
#define AUDIO_QUEUE_LENGTH (20)
|
#define AUDIO_QUEUE_LENGTH (20)
|
||||||
|
|
||||||
|
|
|
@ -224,6 +224,11 @@ const char * debugTimerNames[DEBUG_TIMERS_COUNT] = {
|
||||||
,"ADC read " // debugTimerAdcRead,
|
,"ADC read " // debugTimerAdcRead,
|
||||||
,"mix-pulses " // debugTimerMixerCalcToUsage
|
,"mix-pulses " // debugTimerMixerCalcToUsage
|
||||||
,"mix-int. " // debugTimerMixerIterval
|
,"mix-int. " // debugTimerMixerIterval
|
||||||
|
,"Audio int. " // debugTimerAudioIterval
|
||||||
|
,"Audio dur. " // debugTimerAudioDuration
|
||||||
|
," A. consume" // debugTimerAudioConsume,
|
||||||
|
," A push " // debugTimerAudioPush,
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -335,6 +335,11 @@ enum DebugTimers {
|
||||||
debugTimerMixerCalcToUsage,
|
debugTimerMixerCalcToUsage,
|
||||||
debugTimerMixerIterval,
|
debugTimerMixerIterval,
|
||||||
|
|
||||||
|
debugTimerAudioIterval,
|
||||||
|
debugTimerAudioDuration,
|
||||||
|
debugTimerAudioConsume,
|
||||||
|
debugTimerAudioPush,
|
||||||
|
|
||||||
DEBUG_TIMERS_COUNT
|
DEBUG_TIMERS_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -993,6 +993,7 @@ void checkSDVersion()
|
||||||
if (f_read(&versionFile, &version, sizeof(version), &read) != FR_OK ||
|
if (f_read(&versionFile, &version, sizeof(version), &read) != FR_OK ||
|
||||||
read != sizeof(version) ||
|
read != sizeof(version) ||
|
||||||
strncmp(version, REQUIRED_SDCARD_VERSION, sizeof(version)) != 0) {
|
strncmp(version, REQUIRED_SDCARD_VERSION, sizeof(version)) != 0) {
|
||||||
|
TRACE("SD card version mismatch: %.*s, %s", sizeof(REQUIRED_SDCARD_VERSION)-1, version, REQUIRED_SDCARD_VERSION);
|
||||||
ALERT(STR_SD_CARD, STR_WRONG_SDCARDVERSION, AU_ERROR);
|
ALERT(STR_SD_CARD, STR_WRONG_SDCARDVERSION, AU_ERROR);
|
||||||
}
|
}
|
||||||
f_close(&versionFile);
|
f_close(&versionFile);
|
||||||
|
|
|
@ -787,7 +787,7 @@ TEST(Mixer, DelayOnSwitch)
|
||||||
g_model.mixData[0].mltpx = MLTPX_ADD;
|
g_model.mixData[0].mltpx = MLTPX_ADD;
|
||||||
g_model.mixData[0].srcRaw = MIXSRC_MAX;
|
g_model.mixData[0].srcRaw = MIXSRC_MAX;
|
||||||
g_model.mixData[0].weight = 100;
|
g_model.mixData[0].weight = 100;
|
||||||
#if defined(PCBTARANIS)
|
#if defined(PCBTARANIS) || defined(PCBHORUS)
|
||||||
g_model.mixData[0].swtch = SWSRC_SA2;
|
g_model.mixData[0].swtch = SWSRC_SA2;
|
||||||
#else
|
#else
|
||||||
g_model.mixData[0].swtch = SWSRC_THR;
|
g_model.mixData[0].swtch = SWSRC_THR;
|
||||||
|
|
|
@ -150,7 +150,7 @@ TEST(getSwitch, inputWithTrim)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(PCBTARANIS)
|
#if defined(PCBTARANIS) || defined(PCBHORUS)
|
||||||
TEST(evalLogicalSwitches, playFile)
|
TEST(evalLogicalSwitches, playFile)
|
||||||
{
|
{
|
||||||
SYSTEM_RESET();
|
SYSTEM_RESET();
|
||||||
|
@ -158,8 +158,7 @@ TEST(evalLogicalSwitches, playFile)
|
||||||
modelDefault(0);
|
modelDefault(0);
|
||||||
MIXER_RESET();
|
MIXER_RESET();
|
||||||
|
|
||||||
extern uint64_t sdAvailableLogicalSwitchAudioFiles;
|
extern BitField<(MAX_LOGICAL_SWITCHES * 2/*on, off*/)> sdAvailableLogicalSwitchAudioFiles;
|
||||||
sdAvailableLogicalSwitchAudioFiles = 0xffffffffffffffff;
|
|
||||||
char filename[AUDIO_FILENAME_MAXLEN+1];
|
char filename[AUDIO_FILENAME_MAXLEN+1];
|
||||||
|
|
||||||
#if defined(EEPROM)
|
#if defined(EEPROM)
|
||||||
|
@ -168,6 +167,11 @@ TEST(evalLogicalSwitches, playFile)
|
||||||
#define MODELNAME "Model00"
|
#define MODELNAME "Model00"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
sdAvailableLogicalSwitchAudioFiles.setBit(INDEX_LOGICAL_SWITCH_AUDIO_FILE(0,AUDIO_EVENT_OFF));
|
||||||
|
sdAvailableLogicalSwitchAudioFiles.setBit(INDEX_LOGICAL_SWITCH_AUDIO_FILE(0,AUDIO_EVENT_ON));
|
||||||
|
sdAvailableLogicalSwitchAudioFiles.setBit(INDEX_LOGICAL_SWITCH_AUDIO_FILE(31,AUDIO_EVENT_OFF));
|
||||||
|
sdAvailableLogicalSwitchAudioFiles.setBit(INDEX_LOGICAL_SWITCH_AUDIO_FILE(31,AUDIO_EVENT_ON));
|
||||||
|
|
||||||
isAudioFileReferenced((LOGICAL_SWITCH_AUDIO_CATEGORY << 24) + (0 << 16) + AUDIO_EVENT_OFF, filename);
|
isAudioFileReferenced((LOGICAL_SWITCH_AUDIO_CATEGORY << 24) + (0 << 16) + AUDIO_EVENT_OFF, filename);
|
||||||
EXPECT_EQ(strcmp(filename, "/SOUNDS/en/" MODELNAME "/L1-off.wav"), 0);
|
EXPECT_EQ(strcmp(filename, "/SOUNDS/en/" MODELNAME "/L1-off.wav"), 0);
|
||||||
isAudioFileReferenced((LOGICAL_SWITCH_AUDIO_CATEGORY << 24) + (0 << 16) + AUDIO_EVENT_ON, filename);
|
isAudioFileReferenced((LOGICAL_SWITCH_AUDIO_CATEGORY << 24) + (0 << 16) + AUDIO_EVENT_ON, filename);
|
||||||
|
@ -177,6 +181,9 @@ TEST(evalLogicalSwitches, playFile)
|
||||||
isAudioFileReferenced((LOGICAL_SWITCH_AUDIO_CATEGORY << 24) + (31 << 16) + AUDIO_EVENT_ON, filename);
|
isAudioFileReferenced((LOGICAL_SWITCH_AUDIO_CATEGORY << 24) + (31 << 16) + AUDIO_EVENT_ON, filename);
|
||||||
EXPECT_EQ(strcmp(filename, "/SOUNDS/en/" MODELNAME "/L32-on.wav"), 0);
|
EXPECT_EQ(strcmp(filename, "/SOUNDS/en/" MODELNAME "/L32-on.wav"), 0);
|
||||||
|
|
||||||
|
EXPECT_EQ(isAudioFileReferenced((LOGICAL_SWITCH_AUDIO_CATEGORY << 24) + (31 << 16) + AUDIO_EVENT_ON, filename), true);
|
||||||
|
EXPECT_EQ(isAudioFileReferenced((LOGICAL_SWITCH_AUDIO_CATEGORY << 24) + (32 << 16) + AUDIO_EVENT_ON, filename), false);
|
||||||
|
|
||||||
#undef MODELNAME
|
#undef MODELNAME
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -102,24 +102,24 @@ make -j${CORES} gtests ; ./gtests
|
||||||
|
|
||||||
# OpenTX on Taranis X9E
|
# OpenTX on Taranis X9E
|
||||||
rm -rf *
|
rm -rf *
|
||||||
cmake ${COMMON_OPTIONS} -DPCB=X9E -DHELI=YES -DLUA=YES -DWARNINGS_AS_ERRORS=YES -DPPM_UNIT=PERCENT_PREC1 ${SRCDIR}
|
cmake ${COMMON_OPTIONS} -DPCB=X9E -DHELI=YES -DLUA=YES -DGVARS=YES -DWARNINGS_AS_ERRORS=YES -DPPM_UNIT=PERCENT_PREC1 ${SRCDIR}
|
||||||
make -j${CORES} firmware
|
make -j${CORES} firmware
|
||||||
make -j${CORES} simu
|
make -j${CORES} simu
|
||||||
make -j${CORES} gtests ; ./gtests
|
make -j${CORES} gtests ; ./gtests
|
||||||
|
|
||||||
# OpenTX on Horus beta boards
|
# OpenTX on Horus beta boards
|
||||||
rm -rf *
|
rm -rf *
|
||||||
cmake ${COMMON_OPTIONS} -DPCB=HORUS -DPCBREV=10 -DHELI=NO -DUSB=SERIAL -DCLI=YES -DDEBUG=YES -DGVARS=YES ${SRCDIR}
|
cmake ${COMMON_OPTIONS} -DPCB=HORUS -DPCBREV=10 -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR}
|
||||||
make -j${CORES} firmware
|
make -j${CORES} firmware
|
||||||
make -j${CORES} simu
|
make -j${CORES} simu
|
||||||
# make -j${CORES} gtests ; ./gtests
|
make -j${CORES} gtests ; ./gtests
|
||||||
|
|
||||||
# OpenTX on Horus
|
# OpenTX on Horus
|
||||||
rm -rf *
|
rm -rf *
|
||||||
cmake ${COMMON_OPTIONS} -DPCB=HORUS -DHELI=NO -DUSB=SERIAL -DCLI=YES -DDEBUG=YES -DGVARS=YES ${SRCDIR}
|
cmake ${COMMON_OPTIONS} -DPCB=HORUS -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR}
|
||||||
make -j${CORES} firmware
|
make -j${CORES} firmware
|
||||||
make -j${CORES} simu
|
make -j${CORES} simu
|
||||||
# make -j${CORES} gtests ; ./gtests
|
make -j${CORES} gtests ; ./gtests
|
||||||
|
|
||||||
# Companion
|
# Companion
|
||||||
rm -rf *
|
rm -rf *
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue