diff --git a/Makefile b/Makefile index 792fb93..924753d 100644 --- a/Makefile +++ b/Makefile @@ -18,11 +18,12 @@ ENABLE_SMALL_BOLD := 1 ENABLE_KEEP_MEM_NAME := 1 ENABLE_WIDE_RX := 1 ENABLE_TX_WHEN_AM := 0 +ENABLE_F_CAL_MENU := 0 ENABLE_CTCSS_TAIL_PHASE_SHIFT := 1 ENABLE_MAIN_KEY_HOLD := 1 ENABLE_BOOT_BEEPS := 0 ENABLE_COMPANDER := 1 -ENABLE_SHOW_CHARGE_LEVEL := 0 +ENABLE_SHOW_CHARGE_LEVEL := 1 ENABLE_REVERSE_BAT_SYMBOL := 1 ENABLE_CODE_SCAN_TIMEOUT := 0 ENABLE_AM_FIX := 1 @@ -211,6 +212,9 @@ endif ifeq ($(ENABLE_TX_WHEN_AM),1) CFLAGS += -DENABLE_TX_WHEN_AM endif +ifeq ($(ENABLE_F_CAL_MENU),1) + CFLAGS += -DENABLE_F_CAL_MENU +endif ifeq ($(ENABLE_CTCSS_TAIL_PHASE_SHIFT),1) CFLAGS += -DENABLE_CTCSS_TAIL_PHASE_SHIFT endif diff --git a/README.md b/README.md index 5d375c3..9e68569 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,7 @@ ENABLE_SMALL_BOLD := 1 bold channel name/no. (when name + freq ENABLE_KEEP_MEM_NAME := 1 maintain channel name when (re)saving memory channel ENABLE_WIDE_RX := 1 full 18MHz to 1300MHz RX (though frontend not tuned over full range) ENABLE_TX_WHEN_AM := 0 allow TX (always FM) when RX is set to AM +ENABLE_F_CAL_MENU := 0 enable/disable the radios hidden frequency calibration menu ENABLE_CTCSS_TAIL_PHASE_SHIFT := 1 standard CTCSS tail phase shift rather than QS's own 55Hz tone method ENABLE_MAIN_KEY_HOLD := 1 initial F-key press not needed, instead hold down keys 0-9 to access the functions ENABLE_BOOT_BEEPS := 0 give user audio feedback on volume knob position at boot-up diff --git a/app/dtmf.c b/app/dtmf.c index 0a79dc1..fc1954e 100644 --- a/app/dtmf.c +++ b/app/dtmf.c @@ -387,7 +387,7 @@ void DTMF_Reply(void) case DTMF_REPLY_NONE: if (gDTMF_CallState != DTMF_CALL_STATE_NONE || gCurrentVfo->DTMF_PTT_ID_TX_MODE == PTT_ID_OFF || - gCurrentVfo->DTMF_PTT_ID_TX_MODE == PTT_ID_EOT) + gCurrentVfo->DTMF_PTT_ID_TX_MODE == PTT_ID_TX_DOWN) { gDTMF_ReplyState = DTMF_REPLY_NONE; return; diff --git a/app/menu.c b/app/menu.c index bbfc214..11df72e 100644 --- a/app/menu.c +++ b/app/menu.c @@ -310,14 +310,16 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax) *pMax = 16; break; - case MENU_F_CALI: - *pMin = -50; - *pMax = +50; - break; + #ifdef ENABLE_F_CAL_MENU + case MENU_F_CALI: + *pMin = -50; + *pMax = +50; + break; + #endif case MENU_BATCAL: - *pMin = 1760; // 0 - *pMax = 2000; // 2300 + *pMin = 1600; // 0 + *pMax = 2200; // 2300 break; default: @@ -725,10 +727,11 @@ void MENU_AcceptSetting(void) gSetting_TX_EN = gSubMenuSelection; break; - case MENU_F_CALI: - //if (gF_LOCK) + #ifdef ENABLE_F_CAL_MENU + case MENU_F_CALI: writeXtalFreqCal(gSubMenuSelection); - return; + return; + #endif case MENU_BATCAL: gBatteryCalibration[3] = gSubMenuSelection; @@ -1091,9 +1094,11 @@ void MENU_ShowCurrentSetting(void) gSubMenuSelection = gSetting_TX_EN; break; - case MENU_F_CALI: - gSubMenuSelection = gEeprom.BK4819_XTAL_FREQ_LOW; - break; + #ifdef ENABLE_F_CAL_MENU + case MENU_F_CALI: + gSubMenuSelection = gEeprom.BK4819_XTAL_FREQ_LOW; + break; + #endif case MENU_BATCAL: gSubMenuSelection = gBatteryCalibration[3]; @@ -1286,17 +1291,6 @@ static void MENU_Key_EXIT(bool bKeyPressed, bool bKeyHeld) { if (gIsInSubMenu) { - // *********************** - // restore original value - - if (gMenuCursor == MENU_F_CALI) - { -// if (gF_LOCK) -// writeXtalFreqCal(gSubMenuSelection_original); - } - - // *********************** - if (gInputBoxIndex == 0 || gMenuCursor != MENU_OFFSET) { gAskForConfirmation = 0; diff --git a/firmware.bin b/firmware.bin index c88fd6e..d24f389 100644 Binary files a/firmware.bin and b/firmware.bin differ diff --git a/firmware.packed.bin b/firmware.packed.bin index 4a97a7e..f77d23c 100644 Binary files a/firmware.packed.bin and b/firmware.packed.bin differ diff --git a/main.c b/main.c index ebb0da8..b190fce 100644 --- a/main.c +++ b/main.c @@ -110,10 +110,19 @@ void Main(void) gMenuListCount++; if (BootMode == BOOT_MODE_F_LOCK) - gF_LOCK = true; // flag to say use the hidden menu items + { + gF_LOCK = true; // flag to say include the hidden menu items + } else - gMenuListCount -= 9; // hide the last few menu items + { // hide the hidden menu items + gMenuListCount -= 9; + + #ifndef ENABLE_F_CAL_MENU + gMenuListCount++; + #endif + } + // wait for user to release all butts before moving on if (!GPIO_CheckBit(&GPIOC->DATA, GPIOC_PIN_PTT) || KEYBOARD_Poll() != KEY_INVALID || diff --git a/radio.c b/radio.c index ffb0595..de133e5 100644 --- a/radio.c +++ b/radio.c @@ -1048,7 +1048,7 @@ void RADIO_SendEndOfTransmission(void) BK4819_PlayRogerMDC(); if (gDTMF_CallState == DTMF_CALL_STATE_NONE && - (gCurrentVfo->DTMF_PTT_ID_TX_MODE == PTT_ID_EOT || gCurrentVfo->DTMF_PTT_ID_TX_MODE == PTT_ID_BOTH)) + (gCurrentVfo->DTMF_PTT_ID_TX_MODE == PTT_ID_TX_DOWN || gCurrentVfo->DTMF_PTT_ID_TX_MODE == PTT_ID_BOTH)) { // end-of-tx if (gEeprom.DTMF_SIDE_TONE) { diff --git a/radio.h b/radio.h index bdd0aae..a9c3681 100644 --- a/radio.h +++ b/radio.h @@ -44,8 +44,8 @@ enum { enum PTT_ID_t { PTT_ID_OFF = 0, // OFF - PTT_ID_BOT, // BEGIN OF TX - PTT_ID_EOT, // END OF TX + PTT_ID_TX_UP, // BEGIN OF TX + PTT_ID_TX_DOWN, // END OF TX PTT_ID_BOTH // BOTH }; typedef enum PTT_ID_t PTT_ID_t; diff --git a/ui/menu.c b/ui/menu.c index 0a96926..2c0f243 100644 --- a/ui/menu.c +++ b/ui/menu.c @@ -44,22 +44,22 @@ const t_menu_item MenuList[] = {"SQL", VOICE_ID_SQUELCH, MENU_SQL }, {"STEP", VOICE_ID_FREQUENCY_STEP, MENU_STEP }, - {"T-PWR", VOICE_ID_POWER, MENU_TXP }, // was "TXP" - {"R-DCS", VOICE_ID_DCS, MENU_R_DCS }, // was "R_DCS" - {"R-CTCS", VOICE_ID_CTCSS, MENU_R_CTCS }, // was "R_CTCS" - {"T-DCS", VOICE_ID_DCS, MENU_T_DCS }, // was "T_DCS" - {"T-CTCS", VOICE_ID_CTCSS, MENU_T_CTCS }, // was "T_CTCS" - {"T-DIR", VOICE_ID_TX_OFFSET_FREQUENCY_DIRECTION, MENU_SFT_D }, // was "SFT_D" - {"T-OFFS", VOICE_ID_TX_OFFSET_FREQUENCY, MENU_OFFSET }, // was "OFFSET" - {"T-VFO", VOICE_ID_INVALID, MENU_XB }, // was "WX" - {"T-TOUT", VOICE_ID_TRANSMIT_OVER_TIME, MENU_TOT }, // was "TOT" + {"T PWR", VOICE_ID_POWER, MENU_TXP }, // was "TXP" + {"R DCS", VOICE_ID_DCS, MENU_R_DCS }, // was "R_DCS" + {"R CTCS", VOICE_ID_CTCSS, MENU_R_CTCS }, // was "R_CTCS" + {"T DCS", VOICE_ID_DCS, MENU_T_DCS }, // was "T_DCS" + {"T CTCS", VOICE_ID_CTCSS, MENU_T_CTCS }, // was "T_CTCS" + {"T DIR", VOICE_ID_TX_OFFSET_FREQUENCY_DIRECTION, MENU_SFT_D }, // was "SFT_D" + {"T OFFS", VOICE_ID_TX_OFFSET_FREQUENCY, MENU_OFFSET }, // was "OFFSET" + {"T VFO", VOICE_ID_INVALID, MENU_XB }, // was "WX" + {"T TOUT", VOICE_ID_TRANSMIT_OVER_TIME, MENU_TOT }, // was "TOT" {"W/N", VOICE_ID_CHANNEL_BANDWIDTH, MENU_W_N }, {"SCRAM", VOICE_ID_SCRAMBLER_ON, MENU_SCR }, // was "SCR" {"BUSYCL", VOICE_ID_BUSY_LOCKOUT, MENU_BCL }, // was "BCL" - {"CH-SAV", VOICE_ID_MEMORY_CHANNEL, MENU_MEM_CH }, // was "MEM-CH" - {"CH-DEL", VOICE_ID_DELETE_CHANNEL, MENU_DEL_CH }, // was "DEL-CH" - {"CH-NAM", VOICE_ID_INVALID, MENU_MEM_NAME }, - {"CH-DIS", VOICE_ID_INVALID, MENU_MDF }, // was "MDF" + {"CH SAV", VOICE_ID_MEMORY_CHANNEL, MENU_MEM_CH }, // was "MEM-CH" + {"CH DEL", VOICE_ID_DELETE_CHANNEL, MENU_DEL_CH }, // was "DEL-CH" + {"CH NAM", VOICE_ID_INVALID, MENU_MEM_NAME }, + {"CH DIS", VOICE_ID_INVALID, MENU_MDF }, // was "MDF" {"BATSAV", VOICE_ID_SAVE_MODE, MENU_SAVE }, // was "SAVE" {"VOX", VOICE_ID_VOX, MENU_VOX }, {"BACKLT", VOICE_ID_INVALID, MENU_ABR }, // was "ABR" @@ -68,12 +68,12 @@ const t_menu_item MenuList[] = #ifdef ENABLE_VOICE {"VOICE", VOICE_ID_VOICE_PROMPT, MENU_VOICE }, #endif - {"SC-REV", VOICE_ID_INVALID, MENU_SC_REV }, + {"SC REV", VOICE_ID_INVALID, MENU_SC_REV }, {"KEYLOC", VOICE_ID_INVALID, MENU_AUTOLK }, // was "AUTOLk" - {"S-ADD1", VOICE_ID_INVALID, MENU_S_ADD1 }, - {"S-ADD2", VOICE_ID_INVALID, MENU_S_ADD2 }, + {"S ADD1", VOICE_ID_INVALID, MENU_S_ADD1 }, + {"S ADD2", VOICE_ID_INVALID, MENU_S_ADD2 }, {"STE", VOICE_ID_INVALID, MENU_STE }, - {"RP-STE", VOICE_ID_INVALID, MENU_RP_STE }, + {"RP STE", VOICE_ID_INVALID, MENU_RP_STE }, {"MIC", VOICE_ID_INVALID, MENU_MIC }, #ifdef ENABLE_AUDIO_BAR {"MICBAR", VOICE_ID_INVALID, MENU_MIC_BAR }, @@ -81,34 +81,34 @@ const t_menu_item MenuList[] = #ifdef ENABLE_COMPANDER {"COMPND", VOICE_ID_INVALID, MENU_COMPAND }, #endif - {"1-CALL", VOICE_ID_INVALID, MENU_1_CALL }, + {"1 CALL", VOICE_ID_INVALID, MENU_1_CALL }, {"SLIST", VOICE_ID_INVALID, MENU_S_LIST }, {"SLIST1", VOICE_ID_INVALID, MENU_SLIST1 }, {"SLIST2", VOICE_ID_INVALID, MENU_SLIST2 }, #ifdef ENABLE_ALARM {"AL-MOD", VOICE_ID_INVALID, MENU_AL_MOD }, #endif - {"ANI-ID", VOICE_ID_ANI_CODE, MENU_ANI_ID }, + {"ANI ID", VOICE_ID_ANI_CODE, MENU_ANI_ID }, {"UPCODE", VOICE_ID_INVALID, MENU_UPCODE }, {"DWCODE", VOICE_ID_INVALID, MENU_DWCODE }, - {"PTT-ID", VOICE_ID_INVALID, MENU_PTT_ID }, - {"D-ST", VOICE_ID_INVALID, MENU_D_ST }, - {"D-RSP", VOICE_ID_INVALID, MENU_D_RSP }, - {"D-HOLD", VOICE_ID_INVALID, MENU_D_HOLD }, - {"D-PRE", VOICE_ID_INVALID, MENU_D_PRE }, - {"D-DCD", VOICE_ID_INVALID, MENU_D_DCD }, - {"D-LIST", VOICE_ID_INVALID, MENU_D_LIST }, - {"D-LIVE", VOICE_ID_INVALID, MENU_D_LIVE_DEC }, // live DTMF decoder + {"PTT ID", VOICE_ID_INVALID, MENU_PTT_ID }, + {"D ST", VOICE_ID_INVALID, MENU_D_ST }, + {"D RSP", VOICE_ID_INVALID, MENU_D_RSP }, + {"D HOLD", VOICE_ID_INVALID, MENU_D_HOLD }, + {"D PRE", VOICE_ID_INVALID, MENU_D_PRE }, + {"D DCD", VOICE_ID_INVALID, MENU_D_DCD }, + {"D LIST", VOICE_ID_INVALID, MENU_D_LIST }, + {"D LIVE", VOICE_ID_INVALID, MENU_D_LIVE_DEC }, // live DTMF decoder {"PONMSG", VOICE_ID_INVALID, MENU_PONMSG }, {"ROGER", VOICE_ID_INVALID, MENU_ROGER }, {"BATVOL", VOICE_ID_INVALID, MENU_VOL }, // was "VOL" {"BATTXT", VOICE_ID_INVALID, MENU_BAT_TXT }, {"MODE", VOICE_ID_INVALID, MENU_AM }, // was "AM" #ifdef ENABLE_AM_FIX - {"AM-FIX", VOICE_ID_INVALID, MENU_AM_FIX }, + {"AM FIX", VOICE_ID_INVALID, MENU_AM_FIX }, #endif #ifdef ENABLE_AM_FIX_TEST1 - {"AM-FT1", VOICE_ID_INVALID, MENU_AM_FIX_TEST1}, + {"AM FT1", VOICE_ID_INVALID, MENU_AM_FIX_TEST1}, #endif #ifdef ENABLE_NOAA {"NOAA-S", VOICE_ID_INVALID, MENU_NOAA_S }, @@ -118,15 +118,17 @@ const t_menu_item MenuList[] = // hidden menu items from here on // enabled if pressing both the PTT and upper side button at power-on - {"F-LOCK", VOICE_ID_INVALID, MENU_F_LOCK }, - {"TX-200", VOICE_ID_INVALID, MENU_200TX }, // was "200TX" - {"TX-350", VOICE_ID_INVALID, MENU_350TX }, // was "350TX" - {"TX-500", VOICE_ID_INVALID, MENU_500TX }, // was "500TX" - {"350-EN", VOICE_ID_INVALID, MENU_350EN }, // was "350EN" - {"SCR-EN", VOICE_ID_INVALID, MENU_SCREN }, // was "SCREN" + {"F LOCK", VOICE_ID_INVALID, MENU_F_LOCK }, + {"TX 200", VOICE_ID_INVALID, MENU_200TX }, // was "200TX" + {"TX 350", VOICE_ID_INVALID, MENU_350TX }, // was "350TX" + {"TX 500", VOICE_ID_INVALID, MENU_500TX }, // was "500TX" + {"350 EN", VOICE_ID_INVALID, MENU_350EN }, // was "350EN" + {"SCR EN", VOICE_ID_INVALID, MENU_SCREN }, // was "SCREN" - {"TX-EN", VOICE_ID_INVALID, MENU_TX_EN }, // enable TX - {"F-CALI", VOICE_ID_INVALID, MENU_F_CALI }, // reference xtal calibration + {"TX EN", VOICE_ID_INVALID, MENU_TX_EN }, // enable TX +#ifdef ENABLE_F_CAL_MENU + {"F CALI", VOICE_ID_INVALID, MENU_F_CALI }, // reference xtal calibration +#endif {"BATCAL", VOICE_ID_INVALID, MENU_BATCAL }, // battery voltage calibration {"", VOICE_ID_INVALID, 0xff } // end of list - DO NOT delete or move this this @@ -741,19 +743,21 @@ void UI_DisplayMenu(void) strcpy(String, gSubMenu_F_LOCK[gSubMenuSelection]); break; - case MENU_F_CALI: - { - const uint32_t value = 22656 + gSubMenuSelection; - const uint32_t xtal_Hz = (0x4f0000u + value) * 5; - - //gEeprom.BK4819_XTAL_FREQ_LOW = gSubMenuSelection; // already set when the user was adjusting the value - BK4819_WriteRegister(BK4819_REG_3B, value); - - sprintf(String, "%d\n%u.%06u\nMHz", - gSubMenuSelection, - xtal_Hz / 1000000, xtal_Hz % 1000000); - } - break; + #ifdef ENABLE_F_CAL_MENU + case MENU_F_CALI: + { + const uint32_t value = 22656 + gSubMenuSelection; + const uint32_t xtal_Hz = (0x4f0000u + value) * 5; + + //gEeprom.BK4819_XTAL_FREQ_LOW = gSubMenuSelection; // already set when the user was adjusting the value + BK4819_WriteRegister(BK4819_REG_3B, value); + + sprintf(String, "%d\n%u.%06u\nMHz", + gSubMenuSelection, + xtal_Hz / 1000000, xtal_Hz % 1000000); + } + break; + #endif case MENU_BATCAL: { diff --git a/ui/menu.h b/ui/menu.h index c32b6b5..f6646b8 100644 --- a/ui/menu.h +++ b/ui/menu.h @@ -53,9 +53,9 @@ enum MENU_ABR, MENU_TDR, MENU_BEEP, - #ifdef ENABLE_VOICE - MENU_VOICE, - #endif +#ifdef ENABLE_VOICE + MENU_VOICE, +#endif MENU_SC_REV, MENU_AUTOLK, MENU_S_ADD1, @@ -63,19 +63,19 @@ enum MENU_STE, MENU_RP_STE, MENU_MIC, - #ifdef ENABLE_AUDIO_BAR - MENU_MIC_BAR, - #endif - #ifdef ENABLE_COMPANDER - MENU_COMPAND, - #endif +#ifdef ENABLE_AUDIO_BAR + MENU_MIC_BAR, +#endif +#ifdef ENABLE_COMPANDER + MENU_COMPAND, +#endif MENU_1_CALL, MENU_S_LIST, MENU_SLIST1, MENU_SLIST2, - #ifdef ENABLE_ALARM - MENU_AL_MOD, - #endif +#ifdef ENABLE_ALARM + MENU_AL_MOD, +#endif MENU_ANI_ID, MENU_UPCODE, MENU_DWCODE, @@ -92,15 +92,15 @@ enum MENU_VOL, MENU_BAT_TXT, MENU_AM, - #ifdef ENABLE_AM_FIX - MENU_AM_FIX, - #endif - #ifdef ENABLE_AM_FIX_TEST1 - MENU_AM_FIX_TEST1, - #endif - #ifdef ENABLE_NOAA - MENU_NOAA_S, - #endif +#ifdef ENABLE_AM_FIX + MENU_AM_FIX, +#endif +#ifdef ENABLE_AM_FIX_TEST1 + MENU_AM_FIX_TEST1, +#endif +#ifdef ENABLE_NOAA + MENU_NOAA_S, +#endif MENU_RESET, // items after here are normally hidden @@ -113,7 +113,9 @@ enum MENU_SCREN, MENU_TX_EN, // enable TX +#ifdef ENABLE_F_CAL_MENU MENU_F_CALI, // reference xtal calibration +#endif MENU_BATCAL // battery voltage calibration };