diff --git a/Makefile b/Makefile index f78b2a0..467b9fd 100644 --- a/Makefile +++ b/Makefile @@ -87,7 +87,7 @@ ENABLE_SCAN_RANGES := 1 # AM Fix 800 B ENABLE_AM_FIX := 1 ENABLE_AM_FIX_SHOW_DATA := 0 -ENABLE_SQUELCH_MORE_SENSITIVE := 0 +#ENABLE_SQUELCH_MORE_SENSITIVE := 0 ENABLE_SQ_OPEN_WITH_UP_DN_BUTTS := 1 ENABLE_FASTER_CHANNEL_SCAN := 1 ENABLE_COPY_CHAN_TO_VFO_TO_CHAN := 1 @@ -473,9 +473,9 @@ endif ifeq ($(ENABLE_AM_FIX_TEST1),1) CFLAGS += -DENABLE_AM_FIX_TEST1 endif -ifeq ($(ENABLE_SQUELCH_MORE_SENSITIVE),1) - CFLAGS += -DENABLE_SQUELCH_MORE_SENSITIVE -endif +#ifeq ($(ENABLE_SQUELCH_MORE_SENSITIVE),1) +# CFLAGS += -DENABLE_SQUELCH_MORE_SENSITIVE +#endif ifeq ($(ENABLE_SQ_OPEN_WITH_UP_DN_BUTTS),1) CFLAGS += -DENABLE_SQ_OPEN_WITH_UP_DN_BUTTS endif diff --git a/app/app.c b/app/app.c index 652333e..0761c5c 100644 --- a/app/app.c +++ b/app/app.c @@ -957,6 +957,7 @@ void APP_process_radio_interrupts(void) // { // VOX // } +#if 0 if (reg_c & (1u << 1)) { // squelch is open if (!g_squelch_open) @@ -988,6 +989,7 @@ void APP_process_radio_interrupts(void) g_update_display = true; } } +#endif // #ifdef ENABLE_CTCSS_TAIL_PHASE_SHIFT // if (((reg_c >> 12) & 3u) > 0) @@ -1149,7 +1151,8 @@ void APP_process_radio_interrupts(void) #endif } #endif -/* + +#if 1 if (int_bits & BK4819_REG_02_SQUELCH_CLOSED) { g_squelch_open = false; @@ -1185,7 +1188,8 @@ void APP_process_radio_interrupts(void) g_update_display = true; } -*/ +#endif + #ifdef ENABLE_MDC1200 MDC1200_process_rx(int_bits); #endif diff --git a/app/menu.c b/app/menu.c index 33ed18e..28dab32 100644 --- a/app/menu.c +++ b/app/menu.c @@ -433,7 +433,7 @@ void MENU_AcceptSetting(void) case MENU_SQL: g_eeprom.config.setting.squelch_level = g_sub_menu_selection; RADIO_ConfigureSquelch(g_tx_vfo); - g_vfo_configure_mode = VFO_CONFIGURE; + g_vfo_configure_mode = VFO_CONFIGURE; break; case MENU_CHAN_SQL: diff --git a/driver/bk4819.c b/driver/bk4819.c index 7530d7d..c5ec5cd 100644 --- a/driver/bk4819.c +++ b/driver/bk4819.c @@ -98,7 +98,7 @@ void BK4819_Init(void) // squelch mode // BK4819_write_reg(0x77, 0x88EF); // rssi + noise + glitch .. RT-890 - BK4819_write_reg(0x77, 0xA8EF); // rssi + noise + glitch .. default +// BK4819_write_reg(0x77, 0xA8EF); // rssi + noise + glitch .. default // BK4819_write_reg(0x77, 0xAAEF); // rssi + glitch // BK4819_write_reg(0x77, 0xCCEF); // rssi + noise // BK4819_write_reg(0x77, 0xFFEF); // rssi @@ -676,7 +676,7 @@ void BK4819_SetupSquelch( // // <7:0> 70 RSSI threshold for Squelch = close 0.5dB/step // - BK4819_write_reg(0x78, ((uint16_t)squelch_open_rssi_thresh << 8) | squelch_close_rssi_thresh); + BK4819_write_reg(0x78, ((uint16_t)squelch_open_rssi_thresh << 8) | squelch_close_rssi_thresh); BK4819_SetAF(BK4819_AF_MUTE); diff --git a/firmware.bin b/firmware.bin index c8c8663..b7d539b 100644 Binary files a/firmware.bin and b/firmware.bin differ diff --git a/firmware.packed.bin b/firmware.packed.bin index e2452b9..948c2f8 100644 Binary files a/firmware.packed.bin and b/firmware.packed.bin differ diff --git a/radio.c b/radio.c index 87e5bfb..bf4dd77 100644 --- a/radio.c +++ b/radio.c @@ -438,10 +438,20 @@ void RADIO_configure_channel(const unsigned int VFO, const unsigned int configur void RADIO_ConfigureSquelch(vfo_info_t *p_vfo) { - const unsigned int squelch_level = (p_vfo->channel.squelch_level > 0) ? p_vfo->channel.squelch_level : g_eeprom.config.setting.squelch_level; + const unsigned int squelch_level = (p_vfo->channel.squelch_level > 0 && p_vfo->channel.squelch_level < 10) ? p_vfo->channel.squelch_level : g_eeprom.config.setting.squelch_level; // note that 'noise' and 'glitch' values are inverted compared to 'rssi' values + // peters readings, all on 156.550 + // + // no antenna no signal r 53 g 83 n 73 + // signal generator -100dBm signal r 114 g 0 n 17 + // signal generator -110dBm signal r 95 g 0 n 32 + // signal generator -120dBm signal r 75 g 0 n 34 + // + // ext antenna no signal r 93~133 g 150 n 78 + // ext antenna strong signal r 123~160 g 0 n 16~18 + if (squelch_level == 0) { // squelch == 0 (off) p_vfo->squelch_open_rssi_thresh = 0; // 0 ~ 255 @@ -459,20 +469,20 @@ void RADIO_ConfigureSquelch(vfo_info_t *p_vfo) // my calibration data // // bands 4567 - // 0A 4B 53 56 59 5C 5F 62 64 66 FF FF FF FF FF FF // open rssi - // 05 46 50 53 56 59 5C 5F 62 64 FF FF FF FF FF FF // close rssi - // 5A 2D 29 26 23 20 1D 1A 17 14 FF FF FF FF FF FF // open noise - // 64 30 2D 29 26 23 20 1D 1A 17 FF FF FF FF FF FF // close noise - // 5A 14 11 0E 0B 08 03 02 02 02 FF FF FF FF FF FF // open glitch - // 64 11 0E 0B 08 05 05 04 04 04 FF FF FF FF FF FF // close glitch + // 0A 4B 53 56 59 5C 5F 62 64 66 FF FF FF FF FF FF // open rssi + // 05 46 50 53 56 59 5C 5F 62 64 FF FF FF FF FF FF // close rssi + // 5A 2D 29 26 23 20 1D 1A 17 14 FF FF FF FF FF FF // open noise + // 64 30 2D 29 26 23 20 1D 1A 17 FF FF FF FF FF FF // close noise + // 5A 14 11 0E 0B 08 03 02 02 02 FF FF FF FF FF FF // open glitch + // 64 11 0E 0B 08 05 05 04 04 04 FF FF FF FF FF FF // close glitch // // bands 123 - // 32 68 6B 6E 6F 72 75 77 79 7B FF FF FF FF FF FF // open rssi - // 28 64 67 6A 6C 6E 71 73 76 78 FF FF FF FF FF FF // close rssi - // 41 32 2D 28 24 21 1E 1A 17 16 FF FF FF FF FF FF // open noise - // 46 37 32 2D 28 25 22 1E 1B 19 FF FF FF FF FF FF // close noise - // 5A 19 0F 0A 09 08 07 06 05 04 FF FF FF FF FF FF // open glitch - // 64 1E 14 0F 0D 0C 0B 0A 09 08 FF FF FF FF FF FF // close glitch + // 32 68 6B 6E 6F 72 75 77 79 7B FF FF FF FF FF FF // open rssi + // 28 64 67 6A 6C 6E 71 73 76 78 FF FF FF FF FF FF // close rssi + // 41 32 2D 28 24 21 1E 1A 17 16 FF FF FF FF FF FF // open noise + // 46 37 32 2D 28 25 22 1E 1B 19 FF FF FF FF FF FF // close noise + // 5A 19 0F 0A 09 08 07 06 05 04 FF FF FF FF FF FF // open glitch + // 64 1E 14 0F 0D 0C 0B 0A 09 08 FF FF FF FF FF FF // close glitch unsigned int band = (unsigned int)FREQUENCY_GetBand(p_vfo->p_rx->frequency); band = (band < BAND4_174MHz) ? 1 : 0; @@ -518,21 +528,21 @@ void RADIO_ConfigureSquelch(vfo_info_t *p_vfo) // ********* // ensure the 'close' threshold is lower than the 'open' threshold // ie, maintain a minimum level of hysteresis - + rssi_close = (rssi_open * 4) / 6; noise_close = (noise_open * 6) / 4; glitch_close = (glitch_open * 6) / 4; - + if (rssi_open < 8) rssi_open = 8; if (rssi_close > (rssi_open - 8)) rssi_close = rssi_open - 8; - + if (noise_open > (127 - 4)) noise_open = 127 - 4; if (noise_close < (noise_open + 4)) noise_close = noise_open + 4; - + if (glitch_open > (255 - 8)) glitch_open = 255 - 8; if (glitch_close < (glitch_open + 8)) @@ -540,7 +550,7 @@ void RADIO_ConfigureSquelch(vfo_info_t *p_vfo) #else // a little more sensitive - +/* rssi_open = (rssi_open * 3) / 4; noise_open = (noise_open * 4) / 3; glitch_open = (glitch_open * 4) / 3; @@ -548,6 +558,7 @@ void RADIO_ConfigureSquelch(vfo_info_t *p_vfo) rssi_close = (rssi_close * 3) / 4; noise_close = (noise_close * 4) / 3; glitch_close = (glitch_close * 4) / 3; +*/ #endif // ********* diff --git a/ui/main.c b/ui/main.c index f019c6f..9462bbd 100644 --- a/ui/main.c +++ b/ui/main.c @@ -174,15 +174,24 @@ bool UI_DisplayRSSIBar(const int rssi, const unsigned int glitch, const unsigned { #ifdef SHOW_RX_TEST_VALUES - const unsigned int line = 3; - char str[22]; + #ifdef ENABLE_SINGLE_VFO_CHAN + const unsigned int line = (single_vfo >= 0 && !pan_enabled) ? 6 : 3; + #else + const unsigned int line = 3; + #endif + + char str[22]; #ifdef ENABLE_KEYLOCK if (g_eeprom.config.setting.key_lock && g_keypad_locked > 0) return false; // display is in use #endif - if (g_current_function == FUNCTION_TRANSMIT || g_current_display_screen != DISPLAY_MAIN || g_dtmf_call_state != DTMF_CALL_STATE_NONE) + if (g_current_function == FUNCTION_TRANSMIT || + #ifdef ENABLE_DTMF_CALLING + g_dtmf_call_state != DTMF_CALL_STATE_NONE || + #endif + g_current_display_screen != DISPLAY_MAIN) return false; // display is in use if (now) @@ -221,12 +230,12 @@ bool UI_DisplayRSSIBar(const int rssi, const unsigned int glitch, const unsigned const unsigned int len = ((clamped_dBm - bar_min_dBm) * bar_width) / bar_range_dB; #ifdef ENABLE_SINGLE_VFO_CHAN - const unsigned int line = (single_vfo >= 0 && !pan_enabled) ? 6 : 3; + const unsigned int line = (single_vfo >= 0 && !pan_enabled) ? 6 : 3; #else - const unsigned int line = 3; + const unsigned int line = 3; #endif - char s[16]; + char s[16]; #ifdef ENABLE_KEYLOCK if (g_eeprom.config.setting.key_lock && g_keypad_locked > 0) @@ -279,12 +288,15 @@ void UI_update_rssi(const int rssi, const unsigned int glitch, const unsigned in if (g_center_line == CENTER_LINE_RSSI) { // large RSSI dBm, S-point, bar level - - const int rssi_level = (g_tx_vfo->channel_attributes.band < 3) ? rssi + rssi_offset_band_123 : rssi + rssi_offset_band_4567; - - //if (g_current_function == FUNCTION_RECEIVE && g_squelch_open) - if (g_current_function == FUNCTION_RECEIVE) - UI_DisplayRSSIBar(rssi_level, glitch, noise, true); + #ifdef SHOW_RX_TEST_VALUES + if (g_current_function != FUNCTION_TRANSMIT) + UI_DisplayRSSIBar(rssi, glitch, noise, true); + #else + const int rssi_level = (g_tx_vfo->channel_attributes.band < 3) ? rssi + rssi_offset_band_123 : rssi + rssi_offset_band_4567; + //if (g_current_function == FUNCTION_RECEIVE && g_squelch_open) + if (g_current_function == FUNCTION_RECEIVE) + UI_DisplayRSSIBar(rssi_level, glitch, noise, true); + #endif } #ifdef ENABLE_SINGLE_VFO_CHAN @@ -585,13 +597,22 @@ void UI_DisplayCenterLine(void) #endif // show the RX RSSI dBm, S-point and signal strength bar graph - if (rx && g_eeprom.config.setting.enable_rssi_bar) - { - const int rssi_level = (g_tx_vfo->channel_attributes.band < 3) ? g_current_rssi[g_rx_vfo_num] + rssi_offset_band_123 : g_current_rssi[g_rx_vfo_num] + rssi_offset_band_4567; - g_center_line = CENTER_LINE_RSSI; - UI_DisplayRSSIBar(rssi_level, g_current_glitch[g_rx_vfo_num], g_current_noise[g_rx_vfo_num], false); - } - else + #ifdef SHOW_RX_TEST_VALUES + if (g_eeprom.config.setting.enable_rssi_bar) + { + g_center_line = CENTER_LINE_RSSI; + UI_DisplayRSSIBar(g_current_rssi[g_rx_vfo_num], g_current_glitch[g_rx_vfo_num], g_current_noise[g_rx_vfo_num], false); + } + else + #else + if (rx && g_eeprom.config.setting.enable_rssi_bar) + { + const int rssi_level = (g_tx_vfo->channel_attributes.band < 3) ? g_current_rssi[g_rx_vfo_num] + rssi_offset_band_123 : g_current_rssi[g_rx_vfo_num] + rssi_offset_band_4567; + g_center_line = CENTER_LINE_RSSI; + UI_DisplayRSSIBar(rssi_level, g_current_glitch[g_rx_vfo_num], g_current_noise[g_rx_vfo_num], false); + } + else + #endif if (rx || g_current_function == FUNCTION_FOREGROUND || g_current_function == FUNCTION_POWER_SAVE) { @@ -773,7 +794,7 @@ const char *state_list[] = {"", "BUSY", "BAT LOW", "TX DISABLE", "TIMEOUT", "ALA strcpy(str, "RX"); else { - const unsigned int squelch_level = (p_vfo->channel.squelch_level > 0) ? p_vfo->channel.squelch_level : g_eeprom.config.setting.squelch_level; + const unsigned int squelch_level = (p_vfo->channel.squelch_level > 0 && p_vfo->channel.squelch_level < 10) ? p_vfo->channel.squelch_level : g_eeprom.config.setting.squelch_level; sprintf(str, "Q%u", squelch_level); #ifdef ENABLE_SMALL_BOLD bold = false; @@ -869,7 +890,7 @@ const char *state_list[] = {"", "BUSY", "BAT LOW", "TX DISABLE", "TIMEOUT", "ALA #ifdef ENABLE_SHOW_FREQ_IN_CHAN UI_PrintString(str, x, 0, y, 8); - if (IS_FREQ_CHANNEL(scrn_chan) && freq_in_channel <= USER_CHANNEL_LAST) + if (freq_in_channel <= USER_CHANNEL_LAST) { SETTINGS_fetch_channel_name(str, freq_in_channel); if (str[0] == 0) @@ -881,7 +902,23 @@ const char *state_list[] = {"", "BUSY", "BAT LOW", "TX DISABLE", "TIMEOUT", "ALA #else UI_PrintString(str, x, 0, y + 1, 8); #endif +/* + #ifdef SHOW_RX_TEST_VALUES + { + const uint8_t ro = (BK4819_read_reg(0x78) >> 8) & 0xff; + const uint8_t rc = BK4819_read_reg(0x78) & 0xff; + const uint8_t no = BK4819_read_reg(0x4F) & 0x7f; + const uint8_t nc = (BK4819_read_reg(0x4F) >> 8) & 0x7f; + + const uint8_t go = BK4819_read_reg(0x4E) & 0xff; + const uint8_t gc = BK4819_read_reg(0x4D) & 0xff; + + sprintf(str, "%02X %02X %02X %02X %02X %02X", ro, rc, no, nc, go, gc); + UI_PrintStringSmall(str, 0, 0, y + 3); + } + #endif +*/ #endif }