diff --git a/openrtx/include/core/voicePromptUtils.h b/openrtx/include/core/voicePromptUtils.h index 9d6999b2..413ab933 100644 --- a/openrtx/include/core/voicePromptUtils.h +++ b/openrtx/include/core/voicePromptUtils.h @@ -149,7 +149,7 @@ void vp_announceBank(const uint16_t bank, const vpQueueFlags_t flags); /** * */ -void vp_announceM17Info(const channel_t* channel, const vpQueueFlags_t flags); +void vp_announceM17Info(const channel_t* channel, bool isEditing, const vpQueueFlags_t flags); /** * diff --git a/openrtx/include/ui/EnglishStrings.h b/openrtx/include/ui/EnglishStrings.h index 180fef79..227e987d 100644 --- a/openrtx/include/ui/EnglishStrings.h +++ b/openrtx/include/ui/EnglishStrings.h @@ -89,6 +89,7 @@ const stringsTable_t englishStrings = .forEmergencyUse = "For emergency use", .pressAnyButton = "press any button.", .accessibility = "Accessibility", - .usedHeap="Used heap" + .usedHeap = "Used heap", + .broadcast = "Broadcast" }; #endif // ENGLISHSTRINGS_H diff --git a/openrtx/include/ui/ui_strings.h b/openrtx/include/ui/ui_strings.h index 0bf88809..11fc99e7 100644 --- a/openrtx/include/ui/ui_strings.h +++ b/openrtx/include/ui/ui_strings.h @@ -95,6 +95,7 @@ typedef struct const char* pressAnyButton; const char* accessibility; const char* usedHeap; + const char* broadcast; } stringsTable_t; diff --git a/openrtx/src/core/voicePromptUtils.c b/openrtx/src/core/voicePromptUtils.c index b7aa8000..e731883e 100644 --- a/openrtx/src/core/voicePromptUtils.c +++ b/openrtx/src/core/voicePromptUtils.c @@ -250,7 +250,7 @@ void vp_announceChannelSummary(const channel_t* channel, } else if (channel->mode == OPMODE_M17) { - vp_announceM17Info(channel, localFlags); + vp_announceM17Info(channel, false, localFlags); } else if (channel->mode == OPMODE_DMR) { @@ -502,27 +502,32 @@ void vp_announceBank(const uint16_t bank, const vpQueueFlags_t flags) playIfNeeded(flags); } -void vp_announceM17Info(const channel_t* channel, const vpQueueFlags_t flags) +void vp_announceM17Info(const channel_t* channel, bool isEditing, const vpQueueFlags_t flags) { - if (channel == NULL) - return; - clearCurrPromptIfNeeded(flags); - - if (state.m17_data.dst_addr[0] != '\0') + + if (flags & vpqIncludeDescriptions) + { + vp_queuePrompt(PROMPT_DEST_ID); + } + + if (isEditing) + { + vp_queuePrompt(PROMPT_EDIT); + } + else if (state.m17_data.dst_addr[0] != '\0') { - if (flags & vpqIncludeDescriptions) - { - vp_queuePrompt(PROMPT_DEST_ID); - } - vp_queueString(state.m17_data.dst_addr, vpAnnounceCommonSymbols); } - else if (channel->m17.contact_index != 0) + else if ((channel != NULL) && (channel->m17.contact_index != 0)) { vp_announceContactWithIndex(channel->m17.contact_index, flags); } - + else + { + vp_queueStringTableEntry(¤tLanguage->broadcast); + } + playIfNeeded(flags); } diff --git a/openrtx/src/ui/ui.c b/openrtx/src/ui/ui.c index d0264026..94e4dac8 100644 --- a/openrtx/src/ui/ui.c +++ b/openrtx/src/ui/ui.c @@ -1280,20 +1280,19 @@ void ui_updateFSM(bool *sync_rtx) _ui_textInputConfirm(ui_state.new_callsign); // Save selected dst ID and disable input mode strncpy(state.m17_data.dst_addr, ui_state.new_callsign, 10); - vp_announceBuffer(¤tLanguage->callsign, - false, true, - state.m17_data.dst_addr); ui_state.edit_mode = false; *sync_rtx = true; + vp_announceM17Info(NULL, ui_state.edit_mode, + queueFlags); } else if(msg.keys & KEY_HASH) { // Save selected dst ID and disable input mode strncpy(state.m17_data.dst_addr, "", 1); - vp_announceBuffer(¤tLanguage->callsign, - false, true, "-"); ui_state.edit_mode = false; *sync_rtx = true; + vp_announceM17Info(NULL, ui_state.edit_mode, + queueFlags); } else if(msg.keys & KEY_ESC) // Discard selected dst ID and disable input mode @@ -1338,9 +1337,8 @@ void ui_updateFSM(bool *sync_rtx) ui_state.edit_mode = true; // Reset text input variables _ui_textInputReset(ui_state.new_callsign); - vp_announceBuffer(¤tLanguage->callsign, - true, true, - ""); + vp_announceM17Info(NULL, ui_state.edit_mode, + queueFlags); } else if(msg.keys & KEY_UP || msg.keys & KNOB_RIGHT) { diff --git a/openrtx/src/ui/ui_main.c b/openrtx/src/ui/ui_main.c index f281e42f..164fe27b 100644 --- a/openrtx/src/ui/ui_main.c +++ b/openrtx/src/ui/ui_main.c @@ -127,12 +127,12 @@ void _ui_drawModeInfo(ui_state_t* ui_state) case OPMODE_M17: { // Print M17 Destination ID on line 3 of 3 - char *dst = NULL; + const char *dst = NULL; if(ui_state->edit_mode) dst = ui_state->new_callsign; else dst = (!strnlen(cfg.destination_address, 10)) ? - "Broadcast" : cfg.destination_address; + currentLanguage->broadcast : cfg.destination_address; gfx_print(layout.line2_pos, layout.line2_font, TEXT_ALIGN_CENTER, color_white, "#%s", dst); break; diff --git a/voiceprompts.vpc b/voiceprompts.vpc index 1d7b290b..9a2e72b8 100644 Binary files a/voiceprompts.vpc and b/voiceprompts.vpc differ