diff --git a/radio/src/datastructs_private.h b/radio/src/datastructs_private.h index 7be5792a2..8d4009933 100644 --- a/radio/src/datastructs_private.h +++ b/radio/src/datastructs_private.h @@ -952,7 +952,8 @@ PACK(struct RadioData { #else NOBACKUP(uint8_t stickDeadZoneSpare:3 SKIP); #endif - NOBACKUP(uint8_t spare4:1 SKIP); + + NOBACKUP(uint8_t audioMuteEnable:1); #if defined(IMU) NOBACKUP(int8_t imuMax); diff --git a/radio/src/gui/colorlcd/radio_hardware.cpp b/radio/src/gui/colorlcd/radio_hardware.cpp index a20fe08d6..5901daf24 100644 --- a/radio/src/gui/colorlcd/radio_hardware.cpp +++ b/radio/src/gui/colorlcd/radio_hardware.cpp @@ -126,6 +126,13 @@ void RadioHardwarePage::build(FormWindow * window) new StaticText(line, rect_t{}, STR_JITTER_FILTER, 0, COLOR_THEME_PRIMARY1); new CheckBox(line, rect_t{}, GET_SET_INVERTED(g_eeGeneral.noJitterFilter)); +#if defined(AUDIO_MUTE_GPIO) + // Mute audio + line = window->newLine(&grid); + new StaticText(line, rect_t{}, STR_AUDIO_MUTE, 0, COLOR_THEME_PRIMARY1); + new CheckBox(line, rect_t{}, GET_SET_DEFAULT(g_eeGeneral.audioMuteEnable)); +#endif + #if defined(HARDWARE_INTERNAL_MODULE) new Subtitle(window, rect_t{}, STR_INTERNALRF, 0, COLOR_THEME_PRIMARY1); auto intMod = new InternalModuleWindow(window); diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index 260c6bf69..81fce456d 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -57,6 +57,9 @@ enum { ITEM_RADIO_HARDWARE_BATTERY_CALIB, ITEM_RADIO_HARDWARE_RTC_BATTERY, ITEM_RADIO_HARDWARE_RTC_CHECK, +#if defined(AUDIO_MUTE_GPIO) + ITEM_RADIO_HARDWARE_AUDIO_MUTE, +#endif ITEM_RADIO_HARDWARE_LABEL_INTERNAL_MODULE, ITEM_RADIO_HARDWARE_INTERNAL_MODULE_TYPE, ITEM_RADIO_HARDWARE_INTERNAL_MODULE_BAUDRATE, @@ -155,7 +158,9 @@ static void _init_menu_tab_array(uint8_t* tab, size_t len) tab[ITEM_RADIO_HARDWARE_BATTERY_CALIB] = 0; tab[ITEM_RADIO_HARDWARE_RTC_BATTERY] = READONLY_ROW; tab[ITEM_RADIO_HARDWARE_RTC_CHECK] = 0; - +#if defined(AUDIO_MUTE_GPIO) + tab[ITEM_RADIO_HARDWARE_AUDIO_MUTE] = 0; +#endif #if defined(HARDWARE_INTERNAL_MODULE) tab[ITEM_RADIO_HARDWARE_INTERNAL_MODULE_TYPE] = 0; tab[ITEM_RADIO_HARDWARE_INTERNAL_MODULE_BAUDRATE] = @@ -313,6 +318,12 @@ void menuRadioHardware(event_t event) } } break; +#if defined(AUDIO_MUTE_GPIO) + case ITEM_RADIO_HARDWARE_AUDIO_MUTE: + g_eeGeneral.audioMuteEnable = editCheckBox(g_eeGeneral.audioMuteEnable, HW_SETTINGS_COLUMN2, y, STR_AUDIO_MUTE, attr, event); + break; +#endif + case ITEM_RADIO_HARDWARE_INTERNAL_MODULE_BAUDRATE: lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); lcdDrawTextAtIndex(HW_SETTINGS_COLUMN2, y, STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate),attr | LEFT); diff --git a/radio/src/storage/yaml/yaml_datastructs_128x64.cpp b/radio/src/storage/yaml/yaml_datastructs_128x64.cpp index a164ffa52..b8664e5d6 100644 --- a/radio/src/storage/yaml/yaml_datastructs_128x64.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_128x64.cpp @@ -345,7 +345,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_UNSIGNED( "rotEncMode", 2 ), YAML_SIGNED( "uartSampleMode", 2 ), YAML_PADDING( 3 ), - YAML_PADDING( 1 ), + YAML_UNSIGNED( "audioMuteEnable", 1 ), YAML_UNSIGNED( "radioGFDisabled", 1 ), YAML_UNSIGNED( "radioTrainerDisabled", 1 ), YAML_UNSIGNED( "modelHeliDisabled", 1 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp index 850cfc68d..ab509a595 100644 --- a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp @@ -378,7 +378,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_UNSIGNED( "rotEncMode", 2 ), YAML_SIGNED( "uartSampleMode", 2 ), YAML_UNSIGNED( "stickDeadZone", 3 ), - YAML_PADDING( 1 ), + YAML_UNSIGNED( "audioMuteEnable", 1 ), YAML_STRING("selectedTheme", 26), YAML_UNSIGNED( "radioThemesDisabled", 1 ), YAML_UNSIGNED( "radioGFDisabled", 1 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp index f1bbb11fe..ce8cfaeaa 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp @@ -343,7 +343,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_UNSIGNED( "rotEncMode", 2 ), YAML_SIGNED( "uartSampleMode", 2 ), YAML_PADDING( 3 ), - YAML_PADDING( 1 ), + YAML_UNSIGNED( "audioMuteEnable", 1 ), YAML_UNSIGNED( "radioGFDisabled", 1 ), YAML_UNSIGNED( "radioTrainerDisabled", 1 ), YAML_UNSIGNED( "modelHeliDisabled", 1 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_x10.cpp b/radio/src/storage/yaml/yaml_datastructs_x10.cpp index e716ba6a0..2190b7a41 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x10.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x10.cpp @@ -384,7 +384,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_UNSIGNED( "rotEncMode", 2 ), YAML_SIGNED( "uartSampleMode", 2 ), YAML_PADDING( 3 ), - YAML_PADDING( 1 ), + YAML_UNSIGNED( "audioMuteEnable", 1 ), YAML_SIGNED( "imuMax", 8 ), YAML_SIGNED( "imuOffset", 8 ), YAML_STRING("selectedTheme", 26), diff --git a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp index e716ba6a0..2190b7a41 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp @@ -384,7 +384,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_UNSIGNED( "rotEncMode", 2 ), YAML_SIGNED( "uartSampleMode", 2 ), YAML_PADDING( 3 ), - YAML_PADDING( 1 ), + YAML_UNSIGNED( "audioMuteEnable", 1 ), YAML_SIGNED( "imuMax", 8 ), YAML_SIGNED( "imuOffset", 8 ), YAML_STRING("selectedTheme", 26), diff --git a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp index 513590255..9efbaaa04 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp @@ -345,7 +345,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_UNSIGNED( "rotEncMode", 2 ), YAML_SIGNED( "uartSampleMode", 2 ), YAML_PADDING( 3 ), - YAML_PADDING( 1 ), + YAML_UNSIGNED( "audioMuteEnable", 1 ), YAML_UNSIGNED( "radioGFDisabled", 1 ), YAML_UNSIGNED( "radioTrainerDisabled", 1 ), YAML_UNSIGNED( "modelHeliDisabled", 1 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp index b384212c1..64195c02e 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp @@ -345,7 +345,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_UNSIGNED( "rotEncMode", 2 ), YAML_SIGNED( "uartSampleMode", 2 ), YAML_PADDING( 3 ), - YAML_PADDING( 1 ), + YAML_UNSIGNED( "audioMuteEnable", 1 ), YAML_UNSIGNED( "radioGFDisabled", 1 ), YAML_UNSIGNED( "radioTrainerDisabled", 1 ), YAML_UNSIGNED( "modelHeliDisabled", 1 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp index 84b0bc31a..70d97e4a8 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp @@ -343,7 +343,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_UNSIGNED( "rotEncMode", 2 ), YAML_SIGNED( "uartSampleMode", 2 ), YAML_PADDING( 3 ), - YAML_PADDING( 1 ), + YAML_UNSIGNED( "audioMuteEnable", 1 ), YAML_UNSIGNED( "radioGFDisabled", 1 ), YAML_UNSIGNED( "radioTrainerDisabled", 1 ), YAML_UNSIGNED( "modelHeliDisabled", 1 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp index 14fdb9d22..6536946d1 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp @@ -347,7 +347,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_UNSIGNED( "rotEncMode", 2 ), YAML_SIGNED( "uartSampleMode", 2 ), YAML_PADDING( 3 ), - YAML_PADDING( 1 ), + YAML_UNSIGNED( "audioMuteEnable", 1 ), YAML_SIGNED( "imuMax", 8 ), YAML_SIGNED( "imuOffset", 8 ), YAML_UNSIGNED( "radioGFDisabled", 1 ), diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 8bb0286ff..9cc78e59c 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -723,6 +723,7 @@ const char STR_MENU_TELEMETRY[] = TR_MENU_TELEMETRY; const char STR_MENU_DISPLAY[] = TR_MENU_DISPLAY; const char STR_MENU_OTHER[] = TR_MENU_OTHER; const char STR_MENU_INVERT[] = TR_MENU_INVERT; +const char STR_AUDIO_MUTE[] = TR_AUDIO_MUTE; const char STR_JITTER_FILTER[] = TR_JITTER_FILTER; const char STR_DEAD_ZONE[] = TR_DEAD_ZONE; const char STR_RTC_CHECK[] = TR_RTC_CHECK; diff --git a/radio/src/translations.h b/radio/src/translations.h index 057acf865..a73e8a428 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -1117,6 +1117,7 @@ extern const char STR_MENU_TELEMETRY[]; extern const char STR_MENU_DISPLAY[]; extern const char STR_MENU_OTHER[]; extern const char STR_MENU_INVERT[]; +extern const char STR_AUDIO_MUTE[]; extern const char STR_JITTER_FILTER[]; extern const char STR_DEAD_ZONE[]; extern const char STR_RTC_CHECK[]; diff --git a/radio/src/translations/cn.h b/radio/src/translations/cn.h index 694b63f70..e17faf369 100644 --- a/radio/src/translations/cn.h +++ b/radio/src/translations/cn.h @@ -1099,6 +1099,7 @@ #define TR_MENU_DISPLAY "显示" #define TR_MENU_OTHER "其它" #define TR_MENU_INVERT "反向" +#define TR_AUDIO_MUTE TR("自动静音","音频停播时自动静音") #define TR_JITTER_FILTER "模拟输入滤波" #define TR_DEAD_ZONE "死区" #define TR_RTC_CHECK TR("检查时间电池", "检查时间驱动电池电压") diff --git a/radio/src/translations/cz.h b/radio/src/translations/cz.h index 55c42ded3..99fde332a 100644 --- a/radio/src/translations/cz.h +++ b/radio/src/translations/cz.h @@ -1115,6 +1115,7 @@ #define TR_MENU_DISPLAY "DISPLAY" #define TR_MENU_OTHER "Ostatní" #define TR_MENU_INVERT "Invertovat" +#define TR_AUDIO_MUTE TR("Ztlumení zvuku","Ztlumení, pokud není slyšet zvuk") #define TR_JITTER_FILTER "ADC Filtr" #define TR_DEAD_ZONE "Dead zone" #define TR_RTC_CHECK TR("Kontr RTC", "Hlídat RTC napětí") diff --git a/radio/src/translations/da.h b/radio/src/translations/da.h index 236c0d63e..deeae06e0 100644 --- a/radio/src/translations/da.h +++ b/radio/src/translations/da.h @@ -1119,6 +1119,7 @@ #define TR_MENU_DISPLAY "DISPLAY" #define TR_MENU_OTHER "Andet" #define TR_MENU_INVERT "Invers" +#define TR_AUDIO_MUTE TR("Audio fra","Audio fra, hvis der ikke gives lyd") #define TR_JITTER_FILTER "ADC filter" #define TR_DEAD_ZONE "Dødt område" #define TR_RTC_CHECK TR("Check RTC", "Check RTC spænding") diff --git a/radio/src/translations/de.h b/radio/src/translations/de.h index bc7504a26..def3a1ec5 100644 --- a/radio/src/translations/de.h +++ b/radio/src/translations/de.h @@ -1109,6 +1109,7 @@ #define TR_MENU_DISPLAY "TELM-SEITEN" #define TR_MENU_OTHER "Weitere" #define TR_MENU_INVERT "Invertieren" +#define TR_AUDIO_MUTE TR("Ton Stumm","Geräuschunterdrückung") #define TR_JITTER_FILTER "ADC Filter" #define TR_DEAD_ZONE "Dead zone" #define TR_RTC_CHECK TR("RTC Prüfen", "RTC Spann. prüfen") diff --git a/radio/src/translations/en.h b/radio/src/translations/en.h index 4fe1067f3..9c1c20821 100644 --- a/radio/src/translations/en.h +++ b/radio/src/translations/en.h @@ -1108,6 +1108,7 @@ #define TR_MENU_DISPLAY "DISPLAY" #define TR_MENU_OTHER "Other" #define TR_MENU_INVERT "Invert" +#define TR_AUDIO_MUTE TR("Audio mute","Mute if no sound") #define TR_JITTER_FILTER "ADC filter" #define TR_DEAD_ZONE "Dead zone" #define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage") diff --git a/radio/src/translations/es.h b/radio/src/translations/es.h index 5076dbf36..d6d183187 100644 --- a/radio/src/translations/es.h +++ b/radio/src/translations/es.h @@ -1112,6 +1112,7 @@ #define TR_MENU_DISPLAY "MONITOR" #define TR_MENU_OTHER "Otros" #define TR_MENU_INVERT "Invertir" +#define TR_AUDIO_MUTE TR("Audio mute","Mute if no sound") #define TR_JITTER_FILTER "Filtro ADC" #define TR_DEAD_ZONE "Dead zone" #define TR_RTC_CHECK TR("Check RTC", "Check RTC voltaje") diff --git a/radio/src/translations/fi.h b/radio/src/translations/fi.h index b3426faae..5745d1fc4 100644 --- a/radio/src/translations/fi.h +++ b/radio/src/translations/fi.h @@ -1124,6 +1124,7 @@ #define TR_MENU_DISPLAY "DISPLAY" #define TR_MENU_OTHER "Other" #define TR_MENU_INVERT "Invert" +#define TR_AUDIO_MUTE TR("Audio mute","Mute if no sound") #define TR_JITTER_FILTER "ADC Filter" #define TR_DEAD_ZONE "Dead zone" #define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage") diff --git a/radio/src/translations/fr.h b/radio/src/translations/fr.h index 9f749b7fc..4fb0bb019 100644 --- a/radio/src/translations/fr.h +++ b/radio/src/translations/fr.h @@ -1125,6 +1125,7 @@ #define TR_MENU_DISPLAY "AFFICHAGE" #define TR_MENU_OTHER "Autres" #define TR_MENU_INVERT "Inverser" +#define TR_AUDIO_MUTE TR("Audio muet","Muet si pas de son") #define TR_JITTER_FILTER "Filtre ADC" #define TR_DEAD_ZONE "Zone Neutre" #define TR_RTC_CHECK TR("Vérif. RTC", "Vérif. pile RTC") diff --git a/radio/src/translations/he.h b/radio/src/translations/he.h index 1ede7e1a8..4719fd7a7 100644 --- a/radio/src/translations/he.h +++ b/radio/src/translations/he.h @@ -1185,6 +1185,7 @@ #define TR_MENU_DISPLAY "DISPLAY" #define TR_MENU_OTHER "Other" #define TR_MENU_INVERT "Invert" +#define TR_AUDIO_MUTE TR("השתקת קול","השתק כאשר אין סאונד") #define TR_JITTER_FILTER "ADC filter" #define TR_DEAD_ZONE "Dead zone" #define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage") diff --git a/radio/src/translations/it.h b/radio/src/translations/it.h index 6c2891c4b..c2f261bf2 100644 --- a/radio/src/translations/it.h +++ b/radio/src/translations/it.h @@ -1105,6 +1105,7 @@ #define TR_MENU_DISPLAY "DISPLAY" #define TR_MENU_OTHER "Altro" #define TR_MENU_INVERT "Inverti" +#define TR_AUDIO_MUTE TR("Audio muto","Muto senza suono") #define TR_JITTER_FILTER "Filtro ADC" #define TR_DEAD_ZONE "Zona morta" #define TR_RTC_CHECK TR("Controllo RTC", "Controllo volt. RTC") diff --git a/radio/src/translations/jp.h b/radio/src/translations/jp.h index 16d4c149f..eb798e1a3 100644 --- a/radio/src/translations/jp.h +++ b/radio/src/translations/jp.h @@ -1104,6 +1104,7 @@ #define TR_MENU_DISPLAY "表示" #define TR_MENU_OTHER "その他" #define TR_MENU_INVERT "リバース" +#define TR_AUDIO_MUTE TR("Audio mute","Mute if no sound") #define TR_JITTER_FILTER "ADCフィルター" #define TR_DEAD_ZONE "デッドゾーン" #define TR_RTC_CHECK TR("Check RTC", "内蔵電池チェック") diff --git a/radio/src/translations/nl.h b/radio/src/translations/nl.h index a34223abd..5ff524b6d 100644 --- a/radio/src/translations/nl.h +++ b/radio/src/translations/nl.h @@ -1119,6 +1119,7 @@ #define TR_MENU_DISPLAY "DISPLAY" #define TR_MENU_OTHER "Verdere" #define TR_MENU_INVERT "Inverteer" +#define TR_AUDIO_MUTE TR("Audio mute","Mute if no sound") #define TR_JITTER_FILTER "ADC Filter" #define TR_DEAD_ZONE "Dead zone" #define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage") diff --git a/radio/src/translations/pl.h b/radio/src/translations/pl.h index 2e6f88bbc..80724045f 100644 --- a/radio/src/translations/pl.h +++ b/radio/src/translations/pl.h @@ -1106,6 +1106,7 @@ #define TR_MENU_DISPLAY "DISPLAY" #define TR_MENU_OTHER "Inny " #define TR_MENU_INVERT "Odwróć" +#define TR_AUDIO_MUTE TR("Audio mute","Mute if no sound") #define TR_JITTER_FILTER "Filtr ADC" #define TR_DEAD_ZONE "Dead zone" #define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage") diff --git a/radio/src/translations/pt.h b/radio/src/translations/pt.h index ff389e6b7..2a8ec7e6b 100644 --- a/radio/src/translations/pt.h +++ b/radio/src/translations/pt.h @@ -1114,6 +1114,7 @@ #define TR_MENU_DISPLAY "DISPLAY" #define TR_MENU_OTHER "Other" #define TR_MENU_INVERT "Invert" +#define TR_AUDIO_MUTE TR("Audio mute","Mute if no sound") #define TR_JITTER_FILTER "ADC Filter" #define TR_DEAD_ZONE "Dead zone" #define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage") diff --git a/radio/src/translations/se.h b/radio/src/translations/se.h index 4fd0b1148..c3ffe2373 100644 --- a/radio/src/translations/se.h +++ b/radio/src/translations/se.h @@ -1146,6 +1146,7 @@ #define TR_MENU_DISPLAY "DISPLAY" #define TR_MENU_OTHER "Övrigt" #define TR_MENU_INVERT "Invertera" +#define TR_AUDIO_MUTE TR("Audio av","Audio av om inget ljud") #define TR_JITTER_FILTER "ADC-filter" #define TR_DEAD_ZONE "Dödläge" #define TR_RTC_CHECK TR("Kolla RTC", "Kolla RTC-batteriet") diff --git a/radio/src/translations/tw.h b/radio/src/translations/tw.h index aa84f3b52..72fcbefc6 100644 --- a/radio/src/translations/tw.h +++ b/radio/src/translations/tw.h @@ -1103,6 +1103,7 @@ #define TR_MENU_DISPLAY "顯示" #define TR_MENU_OTHER "其它" #define TR_MENU_INVERT "反向" +#define TR_AUDIO_MUTE TR("自動靜音","音頻停播時自動靜音") #define TR_JITTER_FILTER "類比輸入濾波" #define TR_DEAD_ZONE "死區" #define TR_RTC_CHECK TR("檢查時間電池", "檢查時間驅動電池電壓")