From 88f0ee25001b107d756b4c30a590af9baccf41a8 Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Thu, 2 Nov 2023 15:22:32 +0000 Subject: [PATCH] deleted the TX timeout bar --- Makefile | 10 ------- README.md | 1 - app/app.c | 60 ++++++++++++++++++----------------------- app/generic.c | 2 +- firmware.bin | Bin 60404 -> 60416 bytes firmware.packed.bin | Bin 60422 -> 60434 bytes misc.c | 2 +- misc.h | 2 +- ui/main.c | 63 -------------------------------------------- ui/main.h | 4 --- ui/status.c | 2 +- 11 files changed, 30 insertions(+), 116 deletions(-) diff --git a/Makefile b/Makefile index e9bedf5..752f819 100644 --- a/Makefile +++ b/Makefile @@ -74,8 +74,6 @@ ENABLE_FASTER_CHANNEL_SCAN := 1 ENABLE_COPY_CHAN_TO_VFO_TO_CHAN := 1 # Rx Signal Bar 400 B ENABLE_RX_SIGNAL_BAR := 1 -# Tx Timeout Bar 200 B -ENABLE_TX_TIMEOUT_BAR := 0 # Tx Audio Bar 300 B ENABLE_TX_AUDIO_BAR := 0 # Side Button Menu 300 B @@ -118,11 +116,6 @@ else ENABLE_FMRADIO := 0 endif -ifeq ($(ENABLE_TX_TIMEOUT_BAR),1) - # can't have ENABLE_TX_TIMEOUT_BAR and ENABLE_TX_AUDIO_BAR enabled at same time - ENABLE_TX_AUDIO_BAR := 0 -endif - ifeq ($(ENABLE_VOICE),1) # no need for beeps ENABLE_BOOT_BEEPS := 0 @@ -445,9 +438,6 @@ endif ifeq ($(ENABLE_TX_AUDIO_BAR),1) CFLAGS += -DENABLE_TX_AUDIO_BAR endif -ifeq ($(ENABLE_TX_TIMEOUT_BAR),1) - CFLAGS += -DENABLE_TX_TIMEOUT_BAR -endif ifeq ($(ENABLE_COPY_CHAN_TO_VFO_TO_CHAN),1) CFLAGS += -DENABLE_COPY_CHAN_TO_VFO_TO_CHAN endif diff --git a/README.md b/README.md index 428b0bb..c0210ca 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,6 @@ ENABLE_SQ_OPEN_WITH_UP_DN_BUTTS := 1 open the squelch when holding down U ENABLE_FASTER_CHANNEL_SCAN := 1 increase the channel scan speed, but also make the squelch more twitchy ENABLE_COPY_CHAN_TO_VFO_TO_CHAN := 1 long press M, copy channel to VFO, or VFO to channel ENABLE_RX_SIGNAL_BAR := 1 enable a menu option for showing an RSSI bar graph -ENABLE_TX_TIMEOUT_BAR := 0 show the remainng TX time ENABLE_TX_AUDIO_BAR := 1 enable a menu option for showing a TX audio level bar ENABLE_SIDE_BUTT_MENU := 1 enable menu option for configuring the programmable side buttons ENABLE_KEYLOCK := 1 enable keylock menu option + keylock code diff --git a/app/app.c b/app/app.c index 9c1dce8..ae402c8 100644 --- a/app/app.c +++ b/app/app.c @@ -1142,20 +1142,15 @@ void APP_end_tx(void) if (g_scan_state_dir != SCAN_STATE_DIR_OFF || g_css_scan_mode != CSS_SCAN_MODE_OFF) return; - if (g_vox_noise_detected) + if (g_vox_audio_detected) { if (g_vox_lost) - { g_vox_stop_tick_10ms = vox_stop_10ms; // 1 second - } else if (g_vox_stop_tick_10ms == 0) - { - g_vox_noise_detected = false; - g_update_status = true; - } + g_vox_audio_detected = false; - if (g_current_function == FUNCTION_TRANSMIT && !g_ptt_is_pressed && !g_vox_noise_detected) + if (g_current_function == FUNCTION_TRANSMIT && !g_ptt_is_pressed && !g_vox_audio_detected) { if (g_flag_end_tx) { // back to RX mode @@ -1171,19 +1166,19 @@ void APP_end_tx(void) g_rtte_count_down = g_eeprom.config.setting.repeater_tail_tone_elimination * 10; } - g_update_status = true; - g_update_display = true; + g_update_display = true; g_flag_end_tx = false; } + g_update_status = true; return; } if (!g_vox_lost) return; - g_vox_noise_detected = true; + g_vox_audio_detected = true; g_update_status = true; @@ -1197,7 +1192,7 @@ void APP_end_tx(void) #ifdef ENABLE_FMRADIO if (g_fm_radio_mode) - return; + return; // can't do VOX while the speaker is emitting noise #endif if (g_current_display_screen == DISPLAY_MENU) @@ -1208,7 +1203,7 @@ void APP_end_tx(void) if (g_current_function == FUNCTION_TRANSMIT || g_serial_config_tick_500ms > 0) return; - + // ************* go into TX mode g_dtmf_reply_state = DTMF_REPLY_NONE; @@ -1648,7 +1643,7 @@ void APP_process_scan(void) { if (g_rx_vfo_is_active && g_current_display_screen == DISPLAY_MAIN) GUI_SelectNextDisplay(DISPLAY_MAIN); - + g_rx_vfo_is_active = false; g_rx_reception_mode = RX_MODE_NONE; } @@ -1976,11 +1971,8 @@ void APP_time_slice_500ms(void) } } - #ifdef ENABLE_TX_TIMEOUT_BAR - if (g_current_function == FUNCTION_TRANSMIT && g_tx_timer_tick_500ms & 1u)) - g_update_display = true; -// UI_DisplayTXCountdown(true); - #endif + if (g_current_function == FUNCTION_TRANSMIT && (g_tx_timer_tick_500ms & 1u)) + g_update_display = true; if (g_menu_tick_10ms > 0) if (--g_menu_tick_10ms == 0) @@ -2071,44 +2063,44 @@ void APP_time_slice_500ms(void) } } #endif - + if (exit_menu) { g_menu_tick_10ms = 0; - + if (g_eeprom.config.setting.backlight_time == 0) { g_backlight_tick_500ms = 0; GPIO_ClearBit(&GPIOB->DATA, GPIOB_PIN_BACKLIGHT); // turn the backlight OFF } - + if (g_input_box_index > 0 || g_dtmf_input_mode) AUDIO_PlayBeep(BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL); -/* +/* if (g_current_display_screen == DISPLAY_SEARCH) { BK4819_StopScan(); - + RADIO_configure_channel(0, VFO_CONFIGURE_RELOAD); RADIO_configure_channel(1, VFO_CONFIGURE_RELOAD); - + RADIO_setup_registers(true); } -*/ +*/ DTMF_clear_input_box(); - + g_fkey_pressed = false; g_input_box_index = 0; - + g_ask_to_save = false; g_ask_to_delete = false; - + g_update_status = true; g_update_display = true; - + { gui_display_type_t disp = DISPLAY_INVALID; - + #ifdef ENABLE_FMRADIO if (g_fm_radio_mode && g_current_function != FUNCTION_RECEIVE && @@ -2118,7 +2110,7 @@ void APP_time_slice_500ms(void) disp = DISPLAY_FM; } #endif - + if (disp == DISPLAY_INVALID) { #ifndef ENABLE_CODE_SEARCH_TIMEOUT @@ -2126,12 +2118,12 @@ void APP_time_slice_500ms(void) #endif disp = DISPLAY_MAIN; } - + if (disp != DISPLAY_INVALID) GUI_SelectNextDisplay(disp); } } - } + } } if (g_current_function != FUNCTION_POWER_SAVE && g_current_function != FUNCTION_TRANSMIT) diff --git a/app/generic.c b/app/generic.c index f65f1c2..1b6b305 100644 --- a/app/generic.c +++ b/app/generic.c @@ -122,7 +122,7 @@ void GENERIC_Key_PTT(bool key_pressed) g_flag_end_tx = false; #ifdef ENABLE_VOX - g_vox_noise_detected = false; + g_vox_audio_detected = false; #endif RADIO_set_vfo_state(VFO_STATE_NORMAL); diff --git a/firmware.bin b/firmware.bin index 50b0d0cef50611e39aed261f5a4e2f5f06d3d578..452c815740a42b2065d75598a9a375d36c5b5bd5 100644 GIT binary patch delta 7200 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 delta 7163 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 diff --git a/firmware.packed.bin b/firmware.packed.bin index 665cf3e50e9e642c7dc84d1e0887851082fa3c2b..4c382637ecb4a9db831220f56e360190a8d310ea 100644 GIT binary patch delta 16880 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 F{~zf2m)8IQ delta 16883 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 K9NmUXl>Z-&CbiN4 diff --git a/misc.c b/misc.c index 86616ee..8abbae4 100644 --- a/misc.c +++ b/misc.c @@ -176,7 +176,7 @@ uint8_t g_ctcss_tail_phase_shift_rx; #ifdef ENABLE_VOX bool g_vox_lost; - bool g_vox_noise_detected; + bool g_vox_audio_detected; uint16_t g_vox_resume_tick_10ms; uint16_t g_vox_pause_tick_10ms; #endif diff --git a/misc.h b/misc.h index b97f612..ec2ee92 100644 --- a/misc.h +++ b/misc.h @@ -271,7 +271,7 @@ extern uint8_t g_ctcss_tail_phase_shift_rx; #ifdef ENABLE_VOX extern bool g_vox_lost; - extern bool g_vox_noise_detected; + extern bool g_vox_audio_detected; extern uint16_t g_vox_resume_tick_10ms; extern uint16_t g_vox_pause_tick_10ms; #endif diff --git a/ui/main.c b/ui/main.c index aa02e84..d499042 100644 --- a/ui/main.c +++ b/ui/main.c @@ -74,60 +74,6 @@ void draw_bar(uint8_t *line, const int len, const int max_width) #endif } -#ifdef ENABLE_TX_TIMEOUT_BAR - bool UI_DisplayTXCountdown(const bool now) - { - unsigned int timeout_secs = 0; - - if (g_current_function != FUNCTION_TRANSMIT || g_current_display_screen != DISPLAY_MAIN) - return false; - - if (g_center_line != CENTER_LINE_NONE && g_center_line != CENTER_LINE_TX_TIMEOUT) - return false; - - if (g_eeprom.config.setting.tx_timeout == 0) - timeout_secs = 30; // 30 sec - else - if (g_eeprom.config.setting.tx_timeout < (ARRAY_SIZE(g_sub_menu_tx_timeout) - 1)) - timeout_secs = 60 * g_eeprom.config.setting.tx_timeout; // minutes - else - timeout_secs = 60 * 15; // 15 minutes - - if (timeout_secs == 0 || g_tx_timer_tick_500ms == 0) - return false; - - { - const unsigned int line = 3; - const unsigned int txt_width = 7 * 6; // 6 text chars - const unsigned int bar_x = 2 + txt_width + 4; // X coord of bar graph - const unsigned int bar_width = LCD_WIDTH - 1 - bar_x; - const unsigned int secs = g_tx_timer_tick_500ms / 2; - const unsigned int level = ((secs * bar_width) + (timeout_secs / 2)) / timeout_secs; // with rounding -// const unsigned int level = (((timeout_secs - secs) * bar_width) + (timeout_secs / 2)) / timeout_secs; // with rounding - const unsigned int len = (level <= bar_width) ? level : bar_width; - uint8_t *p_line = g_frame_buffer[line]; - char s[17]; - - if (now) - memset(p_line, 0, LCD_WIDTH); - - sprintf(s, "TX %u", secs); - #ifdef ENABLE_SMALL_BOLD - UI_PrintStringSmallBold(s, 2, 0, line); - #else - UI_PrintStringSmall(s, 2, 0, line); - #endif - - draw_bar(p_line + bar_x, len, bar_width); - - if (now) - ST7565_BlitFullScreen(); - } - - return true; - } -#endif - void UI_drawBars(uint8_t *p, const unsigned int level) { #pragma GCC diagnostic push @@ -929,15 +875,6 @@ void UI_DisplayMain(void) const bool rx = (g_current_function == FUNCTION_RECEIVE && g_squelch_open) ? true : false; - #ifdef ENABLE_TX_TIMEOUT_BAR - // show the TX timeout count down - if (UI_DisplayTXCountdown(false)) - { - g_center_line = CENTER_LINE_TX_TIMEOUT; - } - else - #endif - #ifdef ENABLE_TX_AUDIO_BAR // show the TX audio level if (UI_DisplayAudioBar(false)) diff --git a/ui/main.h b/ui/main.h index 3ac9ffb..4260222 100644 --- a/ui/main.h +++ b/ui/main.h @@ -20,7 +20,6 @@ enum center_line_e { CENTER_LINE_NONE = 0, CENTER_LINE_IN_USE, - CENTER_LINE_TX_TIMEOUT, CENTER_LINE_AUDIO_BAR, CENTER_LINE_RSSI, CENTER_LINE_AM_FIX_DATA, @@ -32,9 +31,6 @@ typedef enum center_line_e center_line_t; extern center_line_t g_center_line; -#ifdef ENABLE_TX_TIMEOUT_BAR - bool UI_DisplayTXCountdown(const bool now); -#endif #ifdef ENABLE_TX_AUDIO_BAR bool UI_DisplayAudioBar(const bool now); #endif diff --git a/ui/status.c b/ui/status.c index a04c547..eda354b 100644 --- a/ui/status.c +++ b/ui/status.c @@ -159,7 +159,7 @@ void UI_DisplayStatus(const bool test_display) // VOX indicator if (g_eeprom.config.setting.vox_enabled || test_display) { - memcpy(line + x, g_vox_noise_detected ? BITMAP_VOX : BITMAP_VOX_SMALL, sizeof(BITMAP_VOX)); + memcpy(line + x, g_vox_audio_detected ? BITMAP_VOX : BITMAP_VOX_SMALL, sizeof(BITMAP_VOX)); x += sizeof(BITMAP_VOX) + 1; } #endif