diff --git a/radio/src/audio_arm.cpp b/radio/src/audio_arm.cpp index ff5d3d7cf..a9b409425 100644 --- a/radio/src/audio_arm.cpp +++ b/radio/src/audio_arm.cpp @@ -155,15 +155,16 @@ const char * const audioFilenames[] = { "trainko", "trainok", "sensorko", + "servoko", #if defined(PCBSKY9X) "highmah", "hightemp", #endif "error", - "keyup", - "keydown", - "menus", - "trim", + "keyup", // TODO remove this one + "keydown", // TODO remove this one + "menus", // TODO remove this one + "trim", // TODO remove this one "warning1", "warning2", "warning3", @@ -235,8 +236,8 @@ void referenceSystemAudioFiles() uint64_t availableAudioFiles = 0; - assert(sizeof(audioFilenames)==AU_FRSKY_FIRST*sizeof(char *)); - assert(sizeof(sdAvailableSystemAudioFiles)*8 >= AU_FRSKY_FIRST); + assert(sizeof(audioFilenames)==AU_SPECIAL_SOUND_FIRST*sizeof(char *)); + assert(sizeof(sdAvailableSystemAudioFiles)*8 >= AU_SPECIAL_SOUND_FIRST); char * filename = getSystemAudioPath(path); *(filename-1) = '\0'; @@ -252,7 +253,7 @@ void referenceSystemAudioFiles() // Eliminates directories / non wav files if (len < 5 || strcasecmp(fn+len-4, SOUNDS_EXT) || (fno.fattrib & AM_DIR)) continue; - for (int i=0; i= AU_WARNING1 && index < AU_FRSKY_FIRST)) { - if (g_eeGeneral.alarmsFlash) { - flashCounter = FLASH_DURATION; - } + if (index <= AU_ERROR || (index >= AU_WARNING1 && index < AU_SPECIAL_SOUND_FIRST)) { + if (g_eeGeneral.alarmsFlash) { + flashCounter = FLASH_DURATION; + } } - if (g_eeGeneral.beepMode>0 || (g_eeGeneral.beepMode==0 && index>=AU_TRIM_MOVE) || (g_eeGeneral.beepMode>=-1 && index<=AU_ERROR)) { + if (g_eeGeneral.beepMode > 0 || (g_eeGeneral.beepMode == 0 && index >= AU_TRIM_MOVE) || + (g_eeGeneral.beepMode >= -1 && index <= AU_ERROR)) { #if defined(SDCARD) - char filename[AUDIO_FILENAME_MAXLEN+1]; - if (index < AU_FRSKY_FIRST && isAudioFileReferenced(index, filename)) { + char filename[AUDIO_FILENAME_MAXLEN + 1]; + if (index < AU_SPECIAL_SOUND_FIRST && isAudioFileReferenced(index, filename)) { audioQueue.playFile(filename); } else #endif - if (index < AU_FRSKY_FIRST || audioQueue.empty()) { + if (index < AU_SPECIAL_SOUND_FIRST) { switch (index) { - // inactivity timer alert case AU_INACTIVITY: audioQueue.playTone(2250, 80, 20, PLAY_REPEAT(2)); break; - // low battery in tx case AU_TX_BATTERY_LOW: #if defined(PCBSKY9X) case AU_TX_MAH_HIGH: @@ -1020,50 +1020,39 @@ void audioEvent(unsigned int index, unsigned int freq) audioQueue.playTone(1950, 160, 20, PLAY_REPEAT(2), 1); audioQueue.playTone(2550, 160, 20, PLAY_REPEAT(2), -1); break; -#if defined(VOICE) case AU_THROTTLE_ALERT: case AU_SWITCH_ALERT: -#endif case AU_ERROR: audioQueue.playTone(BEEP_DEFAULT_FREQ, 200, 20, PLAY_NOW); break; - // keypad up (seems to be used when going left/right through system menu options. 0-100 scales etc) case AU_KEYPAD_UP: audioQueue.playTone(BEEP_KEY_UP_FREQ, 80, 20, PLAY_NOW); break; - // keypad down (seems to be used when going left/right through system menu options. 0-100 scales etc) case AU_KEYPAD_DOWN: audioQueue.playTone(BEEP_KEY_DOWN_FREQ, 80, 20, PLAY_NOW); break; - // menu display (also used by a few generic beeps) case AU_MENUS: audioQueue.playTone(BEEP_DEFAULT_FREQ, 80, 20, PLAY_NOW); break; - // trim move case AU_TRIM_MOVE: audioQueue.playTone(freq, 40, 20, PLAY_NOW); break; - // trim center case AU_TRIM_MIDDLE: audioQueue.playTone(freq, 80, 20, PLAY_NOW); break; - // trim center case AU_TRIM_END: audioQueue.playTone(freq, 80, 20, PLAY_NOW); break; - // warning one case AU_WARNING1: audioQueue.playTone(BEEP_DEFAULT_FREQ, 80, 20, PLAY_NOW); break; - // warning two case AU_WARNING2: audioQueue.playTone(BEEP_DEFAULT_FREQ, 160, 20, PLAY_NOW); break; - // warning three case AU_WARNING3: audioQueue.playTone(BEEP_DEFAULT_FREQ, 200, 20, PLAY_NOW); break; - // pot/stick center + // TODO remove all these ones case AU_STICK1_MIDDLE: case AU_STICK2_MIDDLE: case AU_STICK3_MIDDLE: @@ -1076,118 +1065,111 @@ void audioEvent(unsigned int index, unsigned int freq) #else case AU_POT3_MIDDLE: #endif - audioQueue.playTone(BEEP_DEFAULT_FREQ+1500, 80, 20, PLAY_NOW); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 80, 20, PLAY_NOW); break; - // mix warning 1 case AU_MIX_WARNING_1: - audioQueue.playTone(BEEP_DEFAULT_FREQ+1440, 48, 32); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1440, 48, 32); break; - // mix warning 2 case AU_MIX_WARNING_2: - audioQueue.playTone(BEEP_DEFAULT_FREQ+1560, 48, 32, PLAY_REPEAT(1)); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1560, 48, 32, PLAY_REPEAT(1)); break; - // mix warning 3 case AU_MIX_WARNING_3: - audioQueue.playTone(BEEP_DEFAULT_FREQ+1680, 48, 32, PLAY_REPEAT(2)); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1680, 48, 32, PLAY_REPEAT(2)); break; - // timer == 0 case AU_TIMER_00: - audioQueue.playTone(BEEP_DEFAULT_FREQ+150, 300, 20, PLAY_NOW); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 300, 20, PLAY_NOW); break; - // timer <= 10 seconds left case AU_TIMER_LT10: - audioQueue.playTone(BEEP_DEFAULT_FREQ+150, 120, 20, PLAY_NOW); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 120, 20, PLAY_NOW); break; - // timer 20 seconds left case AU_TIMER_20: - audioQueue.playTone(BEEP_DEFAULT_FREQ+150, 120, 20, PLAY_REPEAT(1)|PLAY_NOW); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 120, 20, PLAY_REPEAT(1) | PLAY_NOW); break; - // timer 30 seconds left case AU_TIMER_30: - audioQueue.playTone(BEEP_DEFAULT_FREQ+150, 120, 20, PLAY_REPEAT(2)|PLAY_NOW); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 120, 20, PLAY_REPEAT(2) | PLAY_NOW); break; case AU_A1_ORANGE: case AU_A2_ORANGE: case AU_A3_ORANGE: case AU_A4_ORANGE: - audioQueue.playTone(BEEP_DEFAULT_FREQ+600, 200, 20, PLAY_NOW); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 600, 200, 20, PLAY_NOW); break; case AU_A1_RED: case AU_A2_RED: case AU_A3_RED: case AU_A4_RED: - audioQueue.playTone(BEEP_DEFAULT_FREQ+600, 200, 20, PLAY_REPEAT(1)|PLAY_NOW); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 600, 200, 20, PLAY_REPEAT(1) | PLAY_NOW); break; case AU_RSSI_ORANGE: - audioQueue.playTone(BEEP_DEFAULT_FREQ+1500, 800, 20, PLAY_NOW); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 800, 20, PLAY_NOW); break; case AU_RSSI_RED: - audioQueue.playTone(BEEP_DEFAULT_FREQ+1800, 800, 20, PLAY_REPEAT(1)|PLAY_NOW); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1800, 800, 20, PLAY_REPEAT(1) | PLAY_NOW); break; case AU_SWR_RED: audioQueue.playTone(450, 160, 40, PLAY_REPEAT(2), 1); break; - case AU_FRSKY_BEEP1: + case AU_SPECIAL_SOUND_BEEP1: audioQueue.playTone(BEEP_DEFAULT_FREQ, 60, 20); break; - case AU_FRSKY_BEEP2: + case AU_SPECIAL_SOUND_BEEP2: audioQueue.playTone(BEEP_DEFAULT_FREQ, 120, 20); break; - case AU_FRSKY_BEEP3: + case AU_SPECIAL_SOUND_BEEP3: audioQueue.playTone(BEEP_DEFAULT_FREQ, 200, 20); break; - case AU_FRSKY_WARN1: - audioQueue.playTone(BEEP_DEFAULT_FREQ+600, 120, 40, PLAY_REPEAT(2)); + case AU_SPECIAL_SOUND_WARN1: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 600, 120, 40, PLAY_REPEAT(2)); break; - case AU_FRSKY_WARN2: - audioQueue.playTone(BEEP_DEFAULT_FREQ+900, 120, 40, PLAY_REPEAT(2)); + case AU_SPECIAL_SOUND_WARN2: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 900, 120, 40, PLAY_REPEAT(2)); break; - case AU_FRSKY_CHEEP: - audioQueue.playTone(BEEP_DEFAULT_FREQ+900, 80, 20, PLAY_REPEAT(2), 2); + case AU_SPECIAL_SOUND_CHEEP: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 900, 80, 20, PLAY_REPEAT(2), 2); break; - case AU_FRSKY_RING: - audioQueue.playTone(BEEP_DEFAULT_FREQ+750, 40, 20, PLAY_REPEAT(10)); - audioQueue.playTone(BEEP_DEFAULT_FREQ+750, 40, 80, PLAY_REPEAT(1)); - audioQueue.playTone(BEEP_DEFAULT_FREQ+750, 40, 20, PLAY_REPEAT(10)); + case AU_SPECIAL_SOUND_RING: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 750, 40, 20, PLAY_REPEAT(10)); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 750, 40, 80, PLAY_REPEAT(1)); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 750, 40, 20, PLAY_REPEAT(10)); break; - case AU_FRSKY_SCIFI: + case AU_SPECIAL_SOUND_SCIFI: audioQueue.playTone(2550, 80, 20, PLAY_REPEAT(2), -1); audioQueue.playTone(1950, 80, 20, PLAY_REPEAT(2), 1); audioQueue.playTone(2250, 80, 20, 0); break; - case AU_FRSKY_ROBOT: - audioQueue.playTone(2250, 40, 20, PLAY_REPEAT(1)); + case AU_SPECIAL_SOUND_ROBOT: + audioQueue.playTone(2250, 40, 20, PLAY_REPEAT(1)); audioQueue.playTone(1650, 120, 20, PLAY_REPEAT(1)); audioQueue.playTone(2550, 120, 20, PLAY_REPEAT(1)); break; - case AU_FRSKY_CHIRP: - audioQueue.playTone(BEEP_DEFAULT_FREQ+1200, 40, 20, PLAY_REPEAT(2)); - audioQueue.playTone(BEEP_DEFAULT_FREQ+1620, 40, 20, PLAY_REPEAT(3)); + case AU_SPECIAL_SOUND_CHIRP: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1200, 40, 20, PLAY_REPEAT(2)); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1620, 40, 20, PLAY_REPEAT(3)); break; - case AU_FRSKY_TADA: + case AU_SPECIAL_SOUND_TADA: audioQueue.playTone(1650, 80, 40); audioQueue.playTone(2850, 80, 40); audioQueue.playTone(3450, 64, 36, PLAY_REPEAT(2)); break; - case AU_FRSKY_CRICKET: - audioQueue.playTone(2550, 40, 80, PLAY_REPEAT(3)); + case AU_SPECIAL_SOUND_CRICKET: + audioQueue.playTone(2550, 40, 80, PLAY_REPEAT(3)); audioQueue.playTone(2550, 40, 160, PLAY_REPEAT(1)); - audioQueue.playTone(2550, 40, 80, PLAY_REPEAT(3)); + audioQueue.playTone(2550, 40, 80, PLAY_REPEAT(3)); break; - case AU_FRSKY_SIREN: + case AU_SPECIAL_SOUND_SIREN: audioQueue.playTone(450, 160, 40, PLAY_REPEAT(2), 2); break; - case AU_FRSKY_ALARMC: - audioQueue.playTone(1650, 32, 68, PLAY_REPEAT(2)); + case AU_SPECIAL_SOUND_ALARMC: + audioQueue.playTone(1650, 32, 68, PLAY_REPEAT(2)); audioQueue.playTone(2250, 64, 156, PLAY_REPEAT(1)); - audioQueue.playTone(1650, 64, 76, PLAY_REPEAT(2)); + audioQueue.playTone(1650, 64, 76, PLAY_REPEAT(2)); audioQueue.playTone(2250, 32, 168, PLAY_REPEAT(1)); break; - case AU_FRSKY_RATATA: - audioQueue.playTone(BEEP_DEFAULT_FREQ+1500, 40, 80, PLAY_REPEAT(10)); + case AU_SPECIAL_SOUND_RATATA: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 40, 80, PLAY_REPEAT(10)); break; - case AU_FRSKY_TICK: - audioQueue.playTone(BEEP_DEFAULT_FREQ+1500, 40, 400, PLAY_REPEAT(2)); + case AU_SPECIAL_SOUND_TICK: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 40, 400, PLAY_REPEAT(2)); break; default: break; diff --git a/radio/src/audio_arm.h b/radio/src/audio_arm.h index 799747673..b48cead34 100644 --- a/radio/src/audio_arm.h +++ b/radio/src/audio_arm.h @@ -2,7 +2,7 @@ * Copyright (C) OpenTX * * Based on code named - * th9x - http://code.google.com/p/th9x + * th9x - http://code.google.com/p/th9x * er9x - http://code.google.com/p/er9x * gruvin9x - http://code.google.com/p/gruvin9x * @@ -344,8 +344,6 @@ void audioStart(); #define AUDIO_RSSI_ORANGE() audioEvent(AU_RSSI_ORANGE) #define AUDIO_RSSI_RED() audioEvent(AU_RSSI_RED) #define AUDIO_SWR_RED() audioEvent(AU_SWR_RED) -#define AUDIO_RXBATT_ORANGE() audioEvent(AU_RXBATT_ORANGE) -#define AUDIO_RXBATT_RED() audioEvent(AU_RXBATT_RED) #define AUDIO_TELEMETRY_LOST() audioEvent(AU_TELEMETRY_LOST) #define AUDIO_TELEMETRY_BACK() audioEvent(AU_TELEMETRY_BACK) #define AUDIO_TRAINER_LOST() audioEvent(AU_TRAINER_LOST) diff --git a/radio/src/audio_avr.cpp b/radio/src/audio_avr.cpp index 89ee43986..08ac2ed7b 100644 --- a/radio/src/audio_avr.cpp +++ b/radio/src/audio_avr.cpp @@ -150,14 +150,14 @@ void audioQueue::event(uint8_t e, uint8_t f) haptic.event(e); //do this before audio to help sync timings #endif - if (e <= AU_ERROR || (e >= AU_WARNING1 && e < AU_FRSKY_FIRST)) { + if (e <= AU_ERROR || (e >= AU_WARNING1 && e < AU_SPECIAL_SOUND_FIRST)) { if (g_eeGeneral.alarmsFlash) { flashCounter = FLASH_DURATION; } } if (g_eeGeneral.beepMode>0 || (g_eeGeneral.beepMode==0 && e>=AU_TRIM_MOVE) || (g_eeGeneral.beepMode>=-1 && e<=AU_ERROR)) { - if (e < AU_FRSKY_FIRST || empty()) { + if (e < AU_SPECIAL_SOUND_FIRST || empty()) { // TODO when VOICE enable some cases here are not needed! switch (e) { #if !defined(VOICE) @@ -174,36 +174,36 @@ void audioQueue::event(uint8_t e, uint8_t f) case AU_TRIM_MIDDLE: play(f, 10, 2, PLAY_NOW); break; - case AU_FRSKY_RING: + case AU_SPECIAL_SOUND_RING: play(BEEP_DEFAULT_FREQ+25, 5, 2, PLAY_REPEAT(10)); play(BEEP_DEFAULT_FREQ+25, 5, 10, PLAY_REPEAT(1)); play(BEEP_DEFAULT_FREQ+25, 5, 2, PLAY_REPEAT(10)); break; - case AU_FRSKY_SCIFI: + case AU_SPECIAL_SOUND_SCIFI: play(80, 10, 3, PLAY_REPEAT(2)|PLAY_INCREMENT(-1)); play(60, 10, 3, PLAY_REPEAT(2)|PLAY_INCREMENT(1)); play(70, 10, 1); break; - case AU_FRSKY_ROBOT: + case AU_SPECIAL_SOUND_ROBOT: play(70, 5, 1, PLAY_REPEAT(1)); play(50, 15, 2, PLAY_REPEAT(1)); play(80, 15, 2, PLAY_REPEAT(1)); break; - case AU_FRSKY_CHIRP: + case AU_SPECIAL_SOUND_CHIRP: play(BEEP_DEFAULT_FREQ+40, 5, 1, PLAY_REPEAT(2)); play(BEEP_DEFAULT_FREQ+54, 5, 1, PLAY_REPEAT(3)); break; - case AU_FRSKY_TADA: + case AU_SPECIAL_SOUND_TADA: play(50, 5, 5); play(90, 5, 5); play(110, 3, 4, PLAY_REPEAT(2)); break; - case AU_FRSKY_CRICKET: + case AU_SPECIAL_SOUND_CRICKET: play(80, 5, 10, PLAY_REPEAT(3)); play(80, 5, 20, PLAY_REPEAT(1)); play(80, 5, 10, PLAY_REPEAT(3)); break; - case AU_FRSKY_ALARMC: + case AU_SPECIAL_SOUND_ALARMC: play(50, 4, 10, PLAY_REPEAT(2)); play(70, 8, 20, PLAY_REPEAT(1)); play(50, 8, 10, PLAY_REPEAT(2)); diff --git a/radio/src/functions.cpp b/radio/src/functions.cpp index 990fe64a8..85a632ebd 100644 --- a/radio/src/functions.cpp +++ b/radio/src/functions.cpp @@ -472,14 +472,16 @@ void evalFunctions() if (isRepeatDelayElapsed(functions, functionsContext, i)) { if (!IS_PLAYING(PLAY_INDEX)) { if (CFN_FUNC(cfn) == FUNC_PLAY_SOUND) { - AUDIO_PLAY(AU_FRSKY_FIRST+CFN_PARAM(cfn)); + if (audioQueue.empty()) { + AUDIO_PLAY(AU_SPECIAL_SOUND_FIRST + CFN_PARAM(cfn)); + } } else if (CFN_FUNC(cfn) == FUNC_PLAY_VALUE) { PLAY_VALUE(CFN_PARAM(cfn), PLAY_INDEX); } #if defined(HAPTIC) else if (CFN_FUNC(cfn) == FUNC_HAPTIC) { - haptic.event(AU_FRSKY_LAST+CFN_PARAM(cfn)); + haptic.event(AU_SPECIAL_SOUND_LAST+CFN_PARAM(cfn)); } #endif else { @@ -515,7 +517,7 @@ void evalFunctions() functionsContext.lastFunctionTime[i] = tmr10ms; uint8_t param = CFN_PARAM(cfn); if (CFN_FUNC(cfn) == FUNC_PLAY_SOUND) { - AUDIO_PLAY(AU_FRSKY_FIRST+param); + AUDIO_PLAY(AU_SPECIAL_SOUND_FIRST+param); } else if (CFN_FUNC(cfn) == FUNC_PLAY_VALUE) { PLAY_VALUE(param, PLAY_INDEX); @@ -541,7 +543,7 @@ void evalFunctions() uint8_t repeatParam = CFN_PLAY_REPEAT(cfn); if (!functionsContext.lastFunctionTime[i] || (repeatParam && (signed)(tmr10ms-functionsContext.lastFunctionTime[i])>=1000*repeatParam)) { functionsContext.lastFunctionTime[i] = tmr10ms; - AUDIO_PLAY(AU_FRSKY_FIRST+CFN_PARAM(cfn)); + AUDIO_PLAY(AU_SPECIAL_SOUND_FIRST+CFN_PARAM(cfn)); } break; } @@ -560,7 +562,7 @@ void evalFunctions() uint8_t repeatParam = CFN_PLAY_REPEAT(cfn); if (!functionsContext.lastFunctionTime[i] || (repeatParam && (signed)(tmr10ms-functionsContext.lastFunctionTime[i])>=1000*repeatParam)) { functionsContext.lastFunctionTime[i] = tmr10ms; - haptic.event(AU_FRSKY_LAST+CFN_PARAM(cfn)); + haptic.event(AU_SPECIAL_SOUND_LAST+CFN_PARAM(cfn)); } break; } diff --git a/radio/src/gui/9x/menu_model_custom_functions.cpp b/radio/src/gui/9x/menu_model_custom_functions.cpp index 455b9c124..efe7194eb 100644 --- a/radio/src/gui/9x/menu_model_custom_functions.cpp +++ b/radio/src/gui/9x/menu_model_custom_functions.cpp @@ -202,7 +202,7 @@ void menuCustomFunctions(uint8_t event, CustomFunctionData * functions, CustomFu #endif #if defined(AUDIO) else if (func == FUNC_PLAY_SOUND) { - val_max = AU_FRSKY_LAST-AU_FRSKY_FIRST-1; + val_max = AU_SPECIAL_SOUND_LAST-AU_SPECIAL_SOUND_FIRST-1; lcdDrawTextAtIndex(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_FUNCSOUNDS, val_displayed, attr); } #endif diff --git a/radio/src/gui/horus/menu_model_custom_functions.cpp b/radio/src/gui/horus/menu_model_custom_functions.cpp index 6b4e98920..2f7d90173 100644 --- a/radio/src/gui/horus/menu_model_custom_functions.cpp +++ b/radio/src/gui/horus/menu_model_custom_functions.cpp @@ -215,7 +215,7 @@ bool menuCustomFunctions(evt_t event, CustomFunctionData * functions, CustomFunc putsTimer(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr|LEFT); } else if (func == FUNC_PLAY_SOUND) { - val_max = AU_FRSKY_LAST-AU_FRSKY_FIRST-1; + val_max = AU_SPECIAL_SOUND_LAST-AU_SPECIAL_SOUND_FIRST-1; lcdDrawTextAtIndex(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_FUNCSOUNDS, val_displayed, attr); } #if defined(HAPTIC) diff --git a/radio/src/gui/taranis/menu_model_custom_functions.cpp b/radio/src/gui/taranis/menu_model_custom_functions.cpp index 66c57084d..f2d41fb4b 100644 --- a/radio/src/gui/taranis/menu_model_custom_functions.cpp +++ b/radio/src/gui/taranis/menu_model_custom_functions.cpp @@ -271,7 +271,7 @@ void menuCustomFunctions(uint8_t event, CustomFunctionData * functions, CustomFu putsTimer(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr|LEFT, attr); } else if (func == FUNC_PLAY_SOUND) { - val_max = AU_FRSKY_LAST-AU_FRSKY_FIRST-1; + val_max = AU_SPECIAL_SOUND_LAST-AU_SPECIAL_SOUND_FIRST-1; lcdDrawTextAtIndex(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_FUNCSOUNDS, val_displayed, attr); } #if defined(HAPTIC) diff --git a/radio/src/gui/taranis/view_channels.cpp b/radio/src/gui/taranis/view_channels.cpp index 3cbfb8331..8f28ec738 100644 --- a/radio/src/gui/taranis/view_channels.cpp +++ b/radio/src/gui/taranis/view_channels.cpp @@ -1,23 +1,23 @@ -/* - * Copyright (C) OpenTX - * - * Based on code named - * th9x - http://code.google.com/p/th9x - * er9x - http://code.google.com/p/er9x - * gruvin9x - http://code.google.com/p/gruvin9x - * - * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - +/* + * Copyright (C) OpenTX + * + * Based on code named + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + #include "../../opentx.h" void menuChannelsView(uint8_t event) diff --git a/radio/src/haptic.cpp b/radio/src/haptic.cpp index 306fe8b9a..a30bc2b0e 100644 --- a/radio/src/haptic.cpp +++ b/radio/src/haptic.cpp @@ -2,7 +2,7 @@ * Copyright (C) OpenTX * * Based on code named - * th9x - http://code.google.com/p/th9x + * th9x - http://code.google.com/p/th9x * er9x - http://code.google.com/p/er9x * gruvin9x - http://code.google.com/p/gruvin9x * @@ -101,12 +101,12 @@ void hapticQueue::event(uint8_t e) play(5, 0, PLAY_NOW); else if (e <= AU_TIMER_LT10) play(15, 3, PLAY_NOW); - else if (e < AU_FRSKY_FIRST) + else if (e < AU_SPECIAL_SOUND_FIRST) play(15, 3, (e-AU_TIMER_20+1)|PLAY_NOW); - else if (e >= AU_FRSKY_LAST && empty()) { + else if (e >= AU_SPECIAL_SOUND_LAST && empty()) { play(30, 10, 0); - play(10, 50-10*(e-AU_FRSKY_LAST), (e-AU_FRSKY_LAST)); - } + play(10, 50-10*(e-AU_SPECIAL_SOUND_LAST), (e-AU_SPECIAL_SOUND_LAST)); + } } } diff --git a/radio/src/haptic.h b/radio/src/haptic.h index 4de219240..cb2a7ee52 100644 --- a/radio/src/haptic.h +++ b/radio/src/haptic.h @@ -1,25 +1,25 @@ -/* - * Copyright (C) OpenTX - * - * Based on code named - * th9x - http://code.google.com/p/th9x - * er9x - http://code.google.com/p/er9x - * gruvin9x - http://code.google.com/p/gruvin9x - * - * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#ifndef _HAPTIC_H_ -#define _HAPTIC_H_ +/* + * Copyright (C) OpenTX + * + * Based on code named + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#ifndef _HAPTIC_H_ +#define _HAPTIC_H_ #define HAPTIC_QUEUE_LENGTH 4 @@ -67,11 +67,10 @@ class hapticQueue uint8_t queueHapticRepeat[HAPTIC_QUEUE_LENGTH]; }; -//wrapper function - dirty but results in a space saving!!! extern hapticQueue haptic; #define IS_HAPTIC_BUSY() haptic.busy() #define HAPTIC_HEARTBEAT() haptic.heartbeat() -#endif // _HAPTIC_H_ +#endif // _HAPTIC_H_ diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 2626a1bb5..13f6a6fc1 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -1933,7 +1933,7 @@ void doMixerCalculations() if (moduleFlag[i] != MODULE_NORMAL_MODE) { if (++countRangecheck >= 250) { countRangecheck = 0; - AUDIO_PLAY(AU_FRSKY_CHEEP); + AUDIO_PLAY(AU_SPECIAL_SOUND_CHEEP); } } } diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 26c4c6cb8..d648cecfd 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -1384,6 +1384,7 @@ enum AUDIO_SOUNDS { AU_TRAINER_LOST, AU_TRAINER_BACK, AU_SENSOR_LOST, + AU_SERVO_KO, #endif #if defined(PCBSKY9X) AU_TX_MAH_HIGH, @@ -1429,24 +1430,24 @@ enum AUDIO_SOUNDS { AU_TIMER_20, AU_TIMER_30, - AU_FRSKY_FIRST, - AU_FRSKY_BEEP1 = AU_FRSKY_FIRST, - AU_FRSKY_BEEP2, - AU_FRSKY_BEEP3, - AU_FRSKY_WARN1, - AU_FRSKY_WARN2, - AU_FRSKY_CHEEP, - AU_FRSKY_RATATA, - AU_FRSKY_TICK, - AU_FRSKY_SIREN, - AU_FRSKY_RING, - AU_FRSKY_SCIFI, - AU_FRSKY_ROBOT, - AU_FRSKY_CHIRP, - AU_FRSKY_TADA, - AU_FRSKY_CRICKET, - AU_FRSKY_ALARMC, - AU_FRSKY_LAST, + AU_SPECIAL_SOUND_FIRST, + AU_SPECIAL_SOUND_BEEP1 = AU_SPECIAL_SOUND_FIRST, + AU_SPECIAL_SOUND_BEEP2, + AU_SPECIAL_SOUND_BEEP3, + AU_SPECIAL_SOUND_WARN1, + AU_SPECIAL_SOUND_WARN2, + AU_SPECIAL_SOUND_CHEEP, + AU_SPECIAL_SOUND_RATATA, + AU_SPECIAL_SOUND_TICK, + AU_SPECIAL_SOUND_SIREN, + AU_SPECIAL_SOUND_RING, + AU_SPECIAL_SOUND_SCIFI, + AU_SPECIAL_SOUND_ROBOT, + AU_SPECIAL_SOUND_CHIRP, + AU_SPECIAL_SOUND_TADA, + AU_SPECIAL_SOUND_CRICKET, + AU_SPECIAL_SOUND_ALARMC, + AU_SPECIAL_SOUND_LAST, AU_NONE=0xff }; diff --git a/radio/src/telemetry/frsky.cpp b/radio/src/telemetry/frsky.cpp index 96c9b5593..96a1300c1 100644 --- a/radio/src/telemetry/frsky.cpp +++ b/radio/src/telemetry/frsky.cpp @@ -2,7 +2,7 @@ * Copyright (C) OpenTX * * Based on code named - * th9x - http://code.google.com/p/th9x + * th9x - http://code.google.com/p/th9x * er9x - http://code.google.com/p/er9x * gruvin9x - http://code.google.com/p/gruvin9x * @@ -316,7 +316,7 @@ void telemetryWakeup() } #endif -#if !defined(CPUARM) && !defined(PCBFLAMENCO) +#if !defined(CPUARM) if (IS_FRSKY_D_PROTOCOL()) { // Attempt to transmit any waiting Fr-Sky alarm set packets every 50ms (subject to packet buffer availability) static uint8_t frskyTxDelay = 5; @@ -358,10 +358,12 @@ void telemetryWakeup() SCHEDULE_NEXT_ALARMS_CHECK(1/*second*/); uint8_t now = TelemetryItem::now(); + bool sensor_lost = false; for (int i=0; i TELEMETRY_VALUE_OLD_THRESHOLD) { + sensor_lost = true; telemetryItems[i].lastReceived = TELEMETRY_VALUE_OLD; TelemetrySensor * sensor = & g_model.telemetrySensors[i]; if (sensor->unit == UNIT_DATETIME) { @@ -371,6 +373,9 @@ void telemetryWakeup() } } } + if (sensor_lost && TELEMETRY_STREAMING()) { + audioEvent(AU_SENSOR_LOST); + } #if defined(PCBTARANIS) if ((g_model.moduleData[INTERNAL_MODULE].rfProtocol != RF_PROTO_OFF || g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_XJT) && FRSKY_BAD_ANTENNA()) { diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index 6b941e532..a5187bbfe 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -131,14 +131,14 @@ #define A4_LAST_ID 0x091f #define AIR_SPEED_FIRST_ID 0x0a00 #define AIR_SPEED_LAST_ID 0x0a0f -#define POWERBOX_BATT1_FIRST_ID 0x0b00 -#define POWERBOX_BATT1_LAST_ID 0x0b0f -#define POWERBOX_BATT2_FIRST_ID 0x0b10 -#define POWERBOX_BATT2_LAST_ID 0x0b1f -#define POWERBOX_STATE_FIRST_ID 0x0b20 -#define POWERBOX_STATE_LAST_ID 0x0b2f -#define POWERBOX_CNSP_FIRST_ID 0x0b30 -#define POWERBOX_CNSP_LAST_ID 0x0b3f +#define RBOX_BATT1_FIRST_ID 0x0b00 +#define RBOX_BATT1_LAST_ID 0x0b0f +#define RBOX_BATT2_FIRST_ID 0x0b10 +#define RBOX_BATT2_LAST_ID 0x0b1f +#define RBOX_STATE_FIRST_ID 0x0b20 +#define RBOX_STATE_LAST_ID 0x0b2f +#define RBOX_CNSP_FIRST_ID 0x0b30 +#define RBOX_CNSP_LAST_ID 0x0b3f #define DIY_FIRST_ID 0x5000 #define DIY_LAST_ID 0x50ff #define RSSI_ID 0xf101 @@ -503,7 +503,7 @@ typedef enum { // FrSky D Protocol void processHubPacket(uint8_t id, int16_t value); -void frskyDSendNextAlarm(void); +void frskyDSendNextAlarm(); void frskyDProcessPacket(uint8_t *packet); // FrSky S.PORT Protocol @@ -511,7 +511,7 @@ void processSportPacket(uint8_t *packet); #if defined(PCBTARANIS) void sportFirmwareUpdate(ModuleIndex module, const char *filename); #endif -void telemetryWakeup(void); +void telemetryWakeup(); void telemetryReset(); #if defined(CPUARM) @@ -521,7 +521,7 @@ void telemetryInit(uint8_t protocol); void telemetryInit(void); #endif -void telemetryInterrupt10ms(void); +void telemetryInterrupt10ms(); #if defined(CPUARM) typedef uint16_t frskyCellVoltage_t; @@ -532,7 +532,7 @@ void telemetryInterrupt10ms(void); #if defined(CPUARM) || defined(FRSKY_HUB) void frskySetCellsCount(uint8_t cellscount); void frskySetCellVoltage(uint8_t battnumber, frskyCellVoltage_t cellVolts); -void frskyUpdateCells(void); +void frskyUpdateCells(); #endif void processSerialData(uint8_t data); diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 8050ac2cf..6347ea181 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -2,7 +2,7 @@ * Copyright (C) OpenTX * * Based on code named - * th9x - http://code.google.com/p/th9x + * th9x - http://code.google.com/p/th9x * er9x - http://code.google.com/p/er9x * gruvin9x - http://code.google.com/p/gruvin9x * @@ -18,7 +18,7 @@ * GNU General Public License for more details. */ -#include "../opentx.h" +#include "opentx.h" #define PRIM_REQ_POWERUP (0) #define PRIM_REQ_VERSION (1) @@ -47,7 +47,7 @@ const FrSkySportSensor sportSensors[] = { { ADC1_ID, ADC1_ID, 0, ZSTR_A1, UNIT_VOLTS, 1 }, { ADC2_ID, ADC2_ID, 0, ZSTR_A2, UNIT_VOLTS, 1 }, { A3_FIRST_ID, A3_LAST_ID, 0, ZSTR_A3, UNIT_VOLTS, 2 }, - { A4_FIRST_ID, A4_LAST_ID, 0, ZSTR_A4, UNIT_VOLTS, 2 }, + { A4_FIRST_ID, A4_LAST_ID, 0, ZSTR_A4, UNIT_VOLTS, 2 }, { BATT_ID, BATT_ID, 0, ZSTR_BATT, UNIT_VOLTS, 1 }, { T1_FIRST_ID, T1_LAST_ID, 0, ZSTR_TEMP1, UNIT_CELSIUS, 0 }, { T2_FIRST_ID, T2_LAST_ID, 0, ZSTR_TEMP2, UNIT_CELSIUS, 0 }, @@ -68,20 +68,14 @@ const FrSkySportSensor sportSensors[] = { { GPS_LONG_LATI_FIRST_ID, GPS_LONG_LATI_LAST_ID, 0, ZSTR_GPS, UNIT_GPS, 0 }, { FUEL_QTY_FIRST_ID, FUEL_QTY_LAST_ID, 0, ZSTR_FUEL, UNIT_MILLILITERS, 2 }, { GPS_COURS_FIRST_ID, GPS_COURS_LAST_ID, 0, ZSTR_HDG, UNIT_DEGREE, 2 }, - { POWERBOX_BATT1_FIRST_ID, POWERBOX_BATT1_LAST_ID, 0, ZSTR_BATT1_VOLTAGE, UNIT_VOLTS, 3 }, - { POWERBOX_BATT2_FIRST_ID, POWERBOX_BATT2_LAST_ID, 0, ZSTR_BATT2_VOLTAGE, UNIT_VOLTS, 3 }, - { POWERBOX_BATT1_FIRST_ID, POWERBOX_BATT1_LAST_ID, 1, ZSTR_BATT1_CURRENT, UNIT_AMPS, 2 }, - { POWERBOX_BATT2_FIRST_ID, POWERBOX_BATT2_LAST_ID, 1, ZSTR_BATT2_CURRENT, UNIT_AMPS, 2 }, - { POWERBOX_CNSP_FIRST_ID, POWERBOX_CNSP_LAST_ID, 0, ZSTR_BATT1_CONSUMPTION, UNIT_MAH, 0 }, - { POWERBOX_CNSP_FIRST_ID, POWERBOX_CNSP_LAST_ID, 1, ZSTR_BATT2_CONSUMPTION, UNIT_MAH, 0 }, - { POWERBOX_STATE_FIRST_ID, POWERBOX_STATE_LAST_ID, 0, ZSTR_RX1_FAILSAFE, UNIT_RAW, 0 }, - { POWERBOX_STATE_FIRST_ID, POWERBOX_STATE_LAST_ID, 1, ZSTR_RX1_LOSTFRAME, UNIT_RAW, 0 }, - { POWERBOX_STATE_FIRST_ID, POWERBOX_STATE_LAST_ID, 2, ZSTR_RX2_FAILSAFE, UNIT_RAW, 0 }, - { POWERBOX_STATE_FIRST_ID, POWERBOX_STATE_LAST_ID, 3, ZSTR_RX2_LOSTFRAME, UNIT_RAW, 0 }, - { POWERBOX_STATE_FIRST_ID, POWERBOX_STATE_LAST_ID, 4, ZSTR_RX1_CONN_LOST, UNIT_RAW, 0 }, - { POWERBOX_STATE_FIRST_ID, POWERBOX_STATE_LAST_ID, 5, ZSTR_RX2_CONN_LOST, UNIT_RAW, 0 }, - { POWERBOX_STATE_FIRST_ID, POWERBOX_STATE_LAST_ID, 6, ZSTR_RX1_NO_SIGNAL, UNIT_RAW, 0 }, - { POWERBOX_STATE_FIRST_ID, POWERBOX_STATE_LAST_ID, 7, ZSTR_RX2_NO_SIGNAL, UNIT_RAW, 0 }, + { RBOX_BATT1_FIRST_ID, RBOX_BATT1_LAST_ID, 0, ZSTR_BATT1_VOLTAGE, UNIT_VOLTS, 3 }, + { RBOX_BATT2_FIRST_ID, RBOX_BATT2_LAST_ID, 0, ZSTR_BATT2_VOLTAGE, UNIT_VOLTS, 3 }, + { RBOX_BATT1_FIRST_ID, RBOX_BATT1_LAST_ID, 1, ZSTR_BATT1_CURRENT, UNIT_AMPS, 2 }, + { RBOX_BATT2_FIRST_ID, RBOX_BATT2_LAST_ID, 1, ZSTR_BATT2_CURRENT, UNIT_AMPS, 2 }, + { RBOX_CNSP_FIRST_ID, RBOX_CNSP_LAST_ID, 0, ZSTR_BATT1_CONSUMPTION, UNIT_MAH, 0 }, + { RBOX_CNSP_FIRST_ID, RBOX_CNSP_LAST_ID, 1, ZSTR_BATT2_CONSUMPTION, UNIT_MAH, 0 }, + { RBOX_STATE_FIRST_ID, RBOX_STATE_LAST_ID, 0, ZSTR_CHANS_STATE, UNIT_RAW, 0 }, + { RBOX_STATE_FIRST_ID, RBOX_STATE_LAST_ID, 1, ZSTR_RB_STATE, UNIT_RAW, 0 }, { 0, 0, 0, NULL, UNIT_RAW, 0 } // sentinel }; @@ -129,6 +123,8 @@ enum SportUpdateState { uint8_t sportUpdateState = SPORT_IDLE; uint32_t sportUpdateAddr = 0; bool intPwr, extPwr; +uint16_t servosState; +uint16_t rboxState; void processSportUpdatePacket(uint8_t *packet) { @@ -161,7 +157,7 @@ void processSportUpdatePacket(uint8_t *packet) case PRIM_END_DOWNLOAD : sportUpdateState = SPORT_COMPLETE ; break; - + case PRIM_DATA_CRC_ERR : sportUpdateState = SPORT_FAIL ; break; @@ -218,7 +214,10 @@ void processSportPacket(uint8_t * packet) if (id == RSSI_ID) { frskyStreaming = FRSKY_TIMEOUT10ms; // reset counter only if valid frsky packets are being detected data = SPORT_DATA_U8(packet); - frskyData.rssi.set(data); + if (data == 0) + frskyData.rssi.reset(); + else + frskyData.rssi.set(data); } #if defined(PCBTARANIS) && defined(REVPLUS) else if (id == XJT_VERSION_ID) { @@ -251,23 +250,23 @@ void processSportPacket(uint8_t * packet) if (id == ADC1_ID || id == ADC2_ID || id == BATT_ID || id == SWR_ID) { data = SPORT_DATA_U8(packet); } - if (id >= POWERBOX_BATT1_FIRST_ID && id <= POWERBOX_BATT2_LAST_ID) { + if (id >= RBOX_BATT1_FIRST_ID && id <= RBOX_BATT2_LAST_ID) { processSportPacket(id, 0, instance, data & 0xffff); processSportPacket(id, 1, instance, data >> 16); } - else if (id >= POWERBOX_CNSP_FIRST_ID && id <= POWERBOX_CNSP_LAST_ID) { + else if (id >= RBOX_CNSP_FIRST_ID && id <= RBOX_CNSP_LAST_ID) { processSportPacket(id, 0, instance, data & 0xffff); processSportPacket(id, 1, instance, data >> 16); } - else if (id >= POWERBOX_STATE_FIRST_ID && id <= POWERBOX_STATE_LAST_ID) { - processSportPacket(id, 0, instance, bool(data & 0x0080000)); - processSportPacket(id, 1, instance, bool(data & 0x0100000)); - processSportPacket(id, 2, instance, bool(data & 0x0200000)); - processSportPacket(id, 3, instance, bool(data & 0x0400000)); - processSportPacket(id, 4, instance, bool(data & 0x0800000)); - processSportPacket(id, 5, instance, bool(data & 0x1000000)); - processSportPacket(id, 6, instance, bool(data & 0x2000000)); - processSportPacket(id, 7, instance, bool(data & 0x4000000)); + else if (id >= RBOX_STATE_FIRST_ID && id <= RBOX_STATE_LAST_ID) { + uint16_t newServosState = data & 0xffff; + if (servosState == 0 && newServosState != 0) { + audioEvent(AU_SERVO_KO); + } + servosState = newServosState; + rboxState = data >> 16; + processSportPacket(id, 0, instance, servosState); + processSportPacket(id, 1, instance, rboxState); } else if (id >= DIY_FIRST_ID && id <= DIY_LAST_ID) { #if defined(LUA) @@ -506,16 +505,16 @@ void sportFirmwareUpdate(ModuleIndex module, const char *filename) result = sportUpdateUploadFile(filename); if (result) result = sportUpdateEnd(); - + if (result == false) { POPUP_WARNING("Firmware Update Error"); } - + #if defined(PCBTARANIS) || defined(PCBHORUS) INTERNAL_MODULE_OFF(); EXTERNAL_MODULE_OFF(); #endif - + sportWaitState(SPORT_IDLE, 1000); #if defined(PCBTARANIS) || defined(PCBHORUS) diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index af803d1ab..b1fe15e82 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -1152,11 +1152,5 @@ #define ZSTR_BATT2_CURRENT "RB2A" #define ZSTR_BATT1_CONSUMPTION "RB1C" #define ZSTR_BATT2_CONSUMPTION "RB2C" -#define ZSTR_RX1_FAILSAFE "Rx1F" -#define ZSTR_RX1_LOSTFRAME "Rx1L" -#define ZSTR_RX1_CONN_LOST "Rx1C" -#define ZSTR_RX1_NO_SIGNAL "Rx1S" -#define ZSTR_RX2_FAILSAFE "Rx2F" -#define ZSTR_RX2_LOSTFRAME "Rx2L" -#define ZSTR_RX2_CONN_LOST "Rx2C" -#define ZSTR_RX2_NO_SIGNAL "Rx2S" +#define ZSTR_RB_STATE "RBS" +#define ZSTR_CHANS_STATE "RBCS" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 4d2ebf62a..321fc1b39 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -815,7 +815,7 @@ #define TR_DELETE_CATEGORY "Delete Category" #define TR_CREATE_MODEL "Neues Modell" #define TR_DUPLICATE_MODEL "Duplicate Model" -#define TR_CHANGE_CATEGORY "Change category" +#define TR_CHANGE_CATEGORY "Change category" #define TR_COPY_MODEL "Kopiere Modell" #define TR_MOVE_MODEL "Verschiebe Modell" #define TR_BACKUP_MODEL "Modell auf SD-Karte" //9XR-Pro @@ -1155,11 +1155,5 @@ #define ZSTR_BATT2_CURRENT "RB2A" #define ZSTR_BATT1_CONSUMPTION "RB1C" #define ZSTR_BATT2_CONSUMPTION "RB2C" -#define ZSTR_RX1_FAILSAFE "Rx1F" -#define ZSTR_RX1_LOSTFRAME "Rx1L" -#define ZSTR_RX1_CONN_LOST "Rx1C" -#define ZSTR_RX1_NO_SIGNAL "Rx1S" -#define ZSTR_RX2_FAILSAFE "Rx2F" -#define ZSTR_RX2_LOSTFRAME "Rx2L" -#define ZSTR_RX2_CONN_LOST "Rx2C" -#define ZSTR_RX2_NO_SIGNAL "Rx2S" +#define ZSTR_RB_STATE "RBS" +#define ZSTR_CHANS_STATE "RBCS" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 5aa317a05..d8c4015fc 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -1181,11 +1181,5 @@ #define ZSTR_BATT2_CURRENT "RB2A" #define ZSTR_BATT1_CONSUMPTION "RB1C" #define ZSTR_BATT2_CONSUMPTION "RB2C" -#define ZSTR_RX1_FAILSAFE "Rx1F" -#define ZSTR_RX1_LOSTFRAME "Rx1L" -#define ZSTR_RX1_CONN_LOST "Rx1C" -#define ZSTR_RX1_NO_SIGNAL "Rx1S" -#define ZSTR_RX2_FAILSAFE "Rx2F" -#define ZSTR_RX2_LOSTFRAME "Rx2L" -#define ZSTR_RX2_CONN_LOST "Rx2C" -#define ZSTR_RX2_NO_SIGNAL "Rx2S" +#define ZSTR_RB_STATE "RBS" +#define ZSTR_CHANS_STATE "RBCS" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 2c621f062..c6deea85c 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -1107,11 +1107,5 @@ #define ZSTR_BATT2_CURRENT "RB2A" #define ZSTR_BATT1_CONSUMPTION "RB1C" #define ZSTR_BATT2_CONSUMPTION "RB2C" -#define ZSTR_RX1_FAILSAFE "Rx1F" -#define ZSTR_RX1_LOSTFRAME "Rx1L" -#define ZSTR_RX1_CONN_LOST "Rx1C" -#define ZSTR_RX1_NO_SIGNAL "Rx1S" -#define ZSTR_RX2_FAILSAFE "Rx2F" -#define ZSTR_RX2_LOSTFRAME "Rx2L" -#define ZSTR_RX2_CONN_LOST "Rx2C" -#define ZSTR_RX2_NO_SIGNAL "Rx2S" +#define ZSTR_RB_STATE "RBS" +#define ZSTR_CHANS_STATE "RBCS" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 4c037d4dd..fa54885ce 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -1107,11 +1107,5 @@ #define ZSTR_BATT2_CURRENT "RB2A" #define ZSTR_BATT1_CONSUMPTION "RB1C" #define ZSTR_BATT2_CONSUMPTION "RB2C" -#define ZSTR_RX1_FAILSAFE "Rx1F" -#define ZSTR_RX1_LOSTFRAME "Rx1L" -#define ZSTR_RX1_CONN_LOST "Rx1C" -#define ZSTR_RX1_NO_SIGNAL "Rx1S" -#define ZSTR_RX2_FAILSAFE "Rx2F" -#define ZSTR_RX2_LOSTFRAME "Rx2L" -#define ZSTR_RX2_CONN_LOST "Rx2C" -#define ZSTR_RX2_NO_SIGNAL "Rx2S" +#define ZSTR_RB_STATE "RBS" +#define ZSTR_CHANS_STATE "RBCS" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index f0cd22d6d..9512a5ae0 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1142,11 +1142,5 @@ #define ZSTR_BATT2_CURRENT "RB2A" #define ZSTR_BATT1_CONSUMPTION "RB1C" #define ZSTR_BATT2_CONSUMPTION "RB2C" -#define ZSTR_RX1_FAILSAFE "Rx1F" -#define ZSTR_RX1_LOSTFRAME "Rx1L" -#define ZSTR_RX1_CONN_LOST "Rx1C" -#define ZSTR_RX1_NO_SIGNAL "Rx1S" -#define ZSTR_RX2_FAILSAFE "Rx2F" -#define ZSTR_RX2_LOSTFRAME "Rx2L" -#define ZSTR_RX2_CONN_LOST "Rx2C" -#define ZSTR_RX2_NO_SIGNAL "Rx2S" +#define ZSTR_RB_STATE "RBS" +#define ZSTR_CHANS_STATE "RBCS" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 35a072e23..5f1e170be 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -813,7 +813,7 @@ #define TR_DELETE_CATEGORY "Delete Category" #define TR_CREATE_MODEL "Crea Modello" #define TR_DUPLICATE_MODEL "Duplicate Model" -#define TR_CHANGE_CATEGORY "Change category" +#define TR_CHANGE_CATEGORY "Change category" #define TR_COPY_MODEL "Copia Modello" #define TR_MOVE_MODEL "Sposta Modello" #define TR_BACKUP_MODEL "Salva Modello" @@ -1154,11 +1154,5 @@ #define ZSTR_BATT2_CURRENT "RB2A" #define ZSTR_BATT1_CONSUMPTION "RB1C" #define ZSTR_BATT2_CONSUMPTION "RB2C" -#define ZSTR_RX1_FAILSAFE "Rx1F" -#define ZSTR_RX1_LOSTFRAME "Rx1L" -#define ZSTR_RX1_CONN_LOST "Rx1C" -#define ZSTR_RX1_NO_SIGNAL "Rx1S" -#define ZSTR_RX2_FAILSAFE "Rx2F" -#define ZSTR_RX2_LOSTFRAME "Rx2L" -#define ZSTR_RX2_CONN_LOST "Rx2C" -#define ZSTR_RX2_NO_SIGNAL "Rx2S" +#define ZSTR_RB_STATE "RBS" +#define ZSTR_CHANS_STATE "RBCS" diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 0ef3b6874..fa31e3cdc 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -1174,11 +1174,5 @@ #define ZSTR_BATT2_CURRENT "RB2A" #define ZSTR_BATT1_CONSUMPTION "RB1C" #define ZSTR_BATT2_CONSUMPTION "RB2C" -#define ZSTR_RX1_FAILSAFE "Rx1F" -#define ZSTR_RX1_LOSTFRAME "Rx1L" -#define ZSTR_RX1_CONN_LOST "Rx1C" -#define ZSTR_RX1_NO_SIGNAL "Rx1S" -#define ZSTR_RX2_FAILSAFE "Rx2F" -#define ZSTR_RX2_LOSTFRAME "Rx2L" -#define ZSTR_RX2_CONN_LOST "Rx2C" -#define ZSTR_RX2_NO_SIGNAL "Rx2S" +#define ZSTR_RB_STATE "RBS" +#define ZSTR_CHANS_STATE "RBCS" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index e94ba8818..1b4a86b7e 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -1155,11 +1155,5 @@ #define ZSTR_BATT2_CURRENT "RB2A" #define ZSTR_BATT1_CONSUMPTION "RB1C" #define ZSTR_BATT2_CONSUMPTION "RB2C" -#define ZSTR_RX1_FAILSAFE "Rx1F" -#define ZSTR_RX1_LOSTFRAME "Rx1L" -#define ZSTR_RX1_CONN_LOST "Rx1C" -#define ZSTR_RX1_NO_SIGNAL "Rx1S" -#define ZSTR_RX2_FAILSAFE "Rx2F" -#define ZSTR_RX2_LOSTFRAME "Rx2L" -#define ZSTR_RX2_CONN_LOST "Rx2C" -#define ZSTR_RX2_NO_SIGNAL "Rx2S" +#define ZSTR_RB_STATE "RBS" +#define ZSTR_CHANS_STATE "RBCS" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index e31a219a1..be11c63a3 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -761,7 +761,7 @@ #define TR_DELETE_CATEGORY "Delete Category" #define TR_CREATE_MODEL "Criar Modelo" #define TR_DUPLICATE_MODEL "Duplicate Model" -#define TR_CHANGE_CATEGORY "Change category" +#define TR_CHANGE_CATEGORY "Change category" #define TR_COPY_MODEL "Copy Model" #define TR_MOVE_MODEL "Move Model" #define TR_BACKUP_MODEL "Salvar Modelo" @@ -1101,11 +1101,5 @@ #define ZSTR_BATT2_CURRENT "RB2A" #define ZSTR_BATT1_CONSUMPTION "RB1C" #define ZSTR_BATT2_CONSUMPTION "RB2C" -#define ZSTR_RX1_FAILSAFE "Rx1F" -#define ZSTR_RX1_LOSTFRAME "Rx1L" -#define ZSTR_RX1_CONN_LOST "Rx1C" -#define ZSTR_RX1_NO_SIGNAL "Rx1S" -#define ZSTR_RX2_FAILSAFE "Rx2F" -#define ZSTR_RX2_LOSTFRAME "Rx2L" -#define ZSTR_RX2_CONN_LOST "Rx2C" -#define ZSTR_RX2_NO_SIGNAL "Rx2S" +#define ZSTR_RB_STATE "RBS" +#define ZSTR_CHANS_STATE "RBCS" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 8cfcabd5c..1cbbce4ae 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -833,7 +833,7 @@ #define TR_DELETE_CATEGORY "Ta Bort Kategori" #define TR_CREATE_MODEL "Skapa Modell" #define TR_DUPLICATE_MODEL "Dupl. Modell" -#define TR_CHANGE_CATEGORY "Change category" +#define TR_CHANGE_CATEGORY "Change category" #define TR_COPY_MODEL "Kopiera Modell" #define TR_MOVE_MODEL "Flytta Modell" #define TR_BACKUP_MODEL "Modell-backup" @@ -1178,11 +1178,5 @@ #define ZSTR_BATT2_CURRENT "RB2A" #define ZSTR_BATT1_CONSUMPTION "RB1C" #define ZSTR_BATT2_CONSUMPTION "RB2C" -#define ZSTR_RX1_FAILSAFE "Rx1F" -#define ZSTR_RX1_LOSTFRAME "Rx1L" -#define ZSTR_RX1_CONN_LOST "Rx1C" -#define ZSTR_RX1_NO_SIGNAL "Rx1S" -#define ZSTR_RX2_FAILSAFE "Rx2F" -#define ZSTR_RX2_LOSTFRAME "Rx2L" -#define ZSTR_RX2_CONN_LOST "Rx2C" -#define ZSTR_RX2_NO_SIGNAL "Rx2S" +#define ZSTR_RB_STATE "RBS" +#define ZSTR_CHANS_STATE "RBCS"