3535static void MAIN_Key_DIGITS (KEY_Code_t Key , bool bKeyPressed , bool bKeyHeld )
3636{
3737 uint8_t Vfo ;
38- uint8_t Band ;
3938
4039 Vfo = gEeprom .TX_VFO ;
4140
42- if (bKeyHeld ) {
43- return ;
44- }
45- if (!bKeyPressed ) {
41+ if (bKeyHeld || !bKeyPressed ) {
4642 return ;
4743 }
4844
4945 gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL ;
5046
5147 if (!gWasFKeyPressed ) {
52- INPUTBOX_Append (Key );
53- gRequestDisplayScreen = DISPLAY_MAIN ;
54- if (IS_MR_CHANNEL (gTxVfo -> CHANNEL_SAVE )) {
55- uint16_t Channel ;
48+ uint8_t TargetChannel ;
5649
57- if (gInputBoxIndex != 3 ) {
58- gAnotherVoiceID = (VOICE_ID_t )Key ;
59- gRequestDisplayScreen = DISPLAY_MAIN ;
60- return ;
61- }
62- gInputBoxIndex = 0 ;
63- Channel = ((gInputBox [0 ] * 100 ) + (gInputBox [1 ] * 10 ) + gInputBox [2 ]) - 1 ;
64- if (!RADIO_CheckValidChannel (Channel , false, 0 )) {
65- gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL ;
66- return ;
67- }
68- gAnotherVoiceID = (VOICE_ID_t )Key ;
69- gEeprom .MrChannel [Vfo ] = (uint8_t )Channel ;
70- gEeprom .ScreenChannel [Vfo ] = (uint8_t )Channel ;
71- gRequestSaveVFO = true;
72- gVfoConfigureMode = VFO_CONFIGURE_RELOAD ;
50+ gInputBoxIndex = 0 ;
51+
52+ if (!IS_MR_CHANNEL (gTxVfo -> CHANNEL_SAVE )) {
53+ gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL ;
7354 return ;
7455 }
75- if (IS_NOT_NOAA_CHANNEL (gTxVfo -> CHANNEL_SAVE )) {
76- uint32_t Frequency ;
7756
78- if (gInputBoxIndex < 6 ) {
79- gAnotherVoiceID = (VOICE_ID_t )Key ;
80- return ;
81- }
82- gInputBoxIndex = 0 ;
83- NUMBER_Get (gInputBox , & Frequency );
84- if (gSetting_350EN || (Frequency < 35000000 || Frequency > 39999990 )) {
85- uint8_t i ;
86-
87- for (i = 0 ; i < 7 ; i ++ ) {
88- if (Frequency <= gUpperLimitFrequencyBandTable [i ] && (gLowerLimitFrequencyBandTable [i ] <= Frequency )) {
89- gAnotherVoiceID = (VOICE_ID_t )Key ;
90- if (gTxVfo -> Band != i ) {
91- gTxVfo -> Band = i ;
92- gEeprom .ScreenChannel [Vfo ] = i + FREQ_CHANNEL_FIRST ;
93- gEeprom .FreqChannel [Vfo ] = i + FREQ_CHANNEL_FIRST ;
94- SETTINGS_SaveVfoIndices ();
95- RADIO_ConfigureChannel (Vfo , 2 );
96- }
97- Frequency += 75 ;
98- gTxVfo -> ConfigRX .Frequency = FREQUENCY_FloorToStep (
99- Frequency ,
100- gTxVfo -> StepFrequency ,
101- gLowerLimitFrequencyBandTable [gTxVfo -> Band ]
102- );
103- gRequestSaveChannel = 1 ;
104- return ;
105- }
106- }
107- }
57+ if (Key == KEY_0 ) {
58+ TargetChannel = 9 ;
10859 } else {
109- #if defined(ENABLE_NOAA )
110- uint8_t Channel ;
111-
112- if (gInputBoxIndex != 2 ) {
113- gAnotherVoiceID = (VOICE_ID_t )Key ;
114- gRequestDisplayScreen = DISPLAY_MAIN ;
115- return ;
116- }
117- gInputBoxIndex = 0 ;
118- Channel = (gInputBox [0 ] * 10 ) + gInputBox [1 ];
119- if (Channel >= 1 && Channel <= ARRAY_SIZE (NoaaFrequencyTable )) {
120- Channel += NOAA_CHANNEL_FIRST ;
121- gAnotherVoiceID = (VOICE_ID_t )Key ;
122- gEeprom .NoaaChannel [Vfo ] = Channel ;
123- gEeprom .ScreenChannel [Vfo ] = Channel ;
124- gRequestSaveVFO = true;
125- gVfoConfigureMode = VFO_CONFIGURE_RELOAD ;
126- return ;
127- }
128- #endif
60+ TargetChannel = (uint8_t )(Key - KEY_1 );
12961 }
130- gRequestDisplayScreen = DISPLAY_MAIN ;
131- gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL ;
132- return ;
133- }
134- gWasFKeyPressed = false;
135- gUpdateStatus = true;
136- switch (Key ) {
137- case KEY_0 :
138- #if defined(ENABLE_FMRADIO )
139- ACTION_FM ();
140- #endif
141- break ;
14262
143- case KEY_1 :
144- if (!IS_FREQ_CHANNEL (gTxVfo -> CHANNEL_SAVE )) {
145- gWasFKeyPressed = false;
146- gUpdateStatus = true;
147- gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL ;
63+ if (!RADIO_CheckValidChannel (TargetChannel , false, Vfo )) {
64+ gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL ;
14865 return ;
14966 }
150- Band = gTxVfo -> Band + 1 ;
151- if (gSetting_350EN || Band != BAND5_350MHz ) {
152- if (BAND7_470MHz < Band ) {
153- Band = BAND1_50MHz ;
154- }
155- } else {
156- Band = BAND6_400MHz ;
157- }
158- gTxVfo -> Band = Band ;
159- gEeprom .ScreenChannel [Vfo ] = FREQ_CHANNEL_FIRST + Band ;
160- gEeprom .FreqChannel [Vfo ] = FREQ_CHANNEL_FIRST + Band ;
67+
68+ gEeprom .MrChannel [Vfo ] = TargetChannel ;
69+ gEeprom .ScreenChannel [Vfo ] = TargetChannel ;
16170 gRequestSaveVFO = true;
16271 gVfoConfigureMode = VFO_CONFIGURE_RELOAD ;
163- gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL ;
164- gRequestDisplayScreen = DISPLAY_MAIN ;
165- break ;
166-
167- case KEY_2 :
168- if (gEeprom .CROSS_BAND_RX_TX == CROSS_BAND_CHAN_A ) {
169- gEeprom .CROSS_BAND_RX_TX = CROSS_BAND_CHAN_B ;
170- } else if (gEeprom .CROSS_BAND_RX_TX == CROSS_BAND_CHAN_B ) {
171- gEeprom .CROSS_BAND_RX_TX = CROSS_BAND_CHAN_A ;
172- } else if (gEeprom .DUAL_WATCH == DUAL_WATCH_CHAN_A ) {
173- gEeprom .DUAL_WATCH = DUAL_WATCH_CHAN_B ;
174- } else if (gEeprom .DUAL_WATCH == DUAL_WATCH_CHAN_B ) {
175- gEeprom .DUAL_WATCH = DUAL_WATCH_CHAN_A ;
176- } else {
177- gEeprom .TX_VFO = !Vfo ;
178- }
179- gRequestSaveSettings = 1 ;
180- gFlagReconfigureVfos = true;
18172 gRequestDisplayScreen = DISPLAY_MAIN ;
182- gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL ;
183- break ;
184-
185- case KEY_3 :
186- if (gEeprom .VFO_OPEN && IS_NOT_NOAA_CHANNEL (gTxVfo -> CHANNEL_SAVE )) {
187- uint8_t Channel ;
18873
189- if (IS_MR_CHANNEL (gTxVfo -> CHANNEL_SAVE )) {
190- gEeprom .ScreenChannel [Vfo ] = gEeprom .FreqChannel [gEeprom .TX_VFO ];
191- gAnotherVoiceID = VOICE_ID_FREQUENCY_MODE ;
192- gRequestSaveVFO = true;
193- gVfoConfigureMode = VFO_CONFIGURE_RELOAD ;
194- break ;
195- }
196- Channel = RADIO_FindNextChannel (gEeprom .MrChannel [gEeprom .TX_VFO ], 1 , false, 0 );
197- if (Channel != 0xFF ) {
198- gEeprom .ScreenChannel [Vfo ] = Channel ;
199- AUDIO_SetVoiceID (0 , VOICE_ID_CHANNEL_MODE );
200- AUDIO_SetDigitVoice (1 , Channel + 1 );
201- gAnotherVoiceID = (VOICE_ID_t )0xFE ;
202- gRequestSaveVFO = true;
203- gVfoConfigureMode = VFO_CONFIGURE_RELOAD ;
204- break ;
205- }
206- }
207- gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL ;
208- break ;
74+ AUDIO_SetVoiceID (0 , VOICE_ID_CHANNEL_MODE );
75+ AUDIO_SetDigitVoice (1 , TargetChannel + 1 );
76+ gAnotherVoiceID = (VOICE_ID_t )0xFE ;
77+ return ;
78+ }
20979
80+ gWasFKeyPressed = false;
81+ gUpdateStatus = true;
82+ switch (Key ) {
21083 case KEY_4 :
21184 gWasFKeyPressed = false;
21285 gUpdateStatus = true;
@@ -217,49 +90,9 @@ static void MAIN_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
21790 gEeprom .CROSS_BAND_RX_TX = CROSS_BAND_OFF ;
21891 break ;
21992
220- case KEY_5 :
221- #if defined(ENABLE_NOAA )
222- if (IS_NOT_NOAA_CHANNEL (gTxVfo -> CHANNEL_SAVE )) {
223- gEeprom .ScreenChannel [Vfo ] = gEeprom .NoaaChannel [gEeprom .TX_VFO ];
224- } else {
225- gEeprom .ScreenChannel [Vfo ] = gEeprom .FreqChannel [gEeprom .TX_VFO ];
226- gAnotherVoiceID = VOICE_ID_FREQUENCY_MODE ;
227- }
228- gRequestSaveVFO = true;
229- gVfoConfigureMode = VFO_CONFIGURE_RELOAD ;
230- #endif
231- break ;
232-
233- case KEY_6 :
234- ACTION_Power ();
235- break ;
236-
237- case KEY_7 :
238- ACTION_Vox ();
239- break ;
240-
241- case KEY_8 :
242- gTxVfo -> FrequencyReverse = !gTxVfo -> FrequencyReverse ;
243- gRequestSaveChannel = 1 ;
244- break ;
245-
246- case KEY_9 :
247- if (RADIO_CheckValidChannel (gEeprom .CHAN_1_CALL , false, 0 )) {
248- gEeprom .MrChannel [Vfo ] = gEeprom .CHAN_1_CALL ;
249- gEeprom .ScreenChannel [Vfo ] = gEeprom .CHAN_1_CALL ;
250- AUDIO_SetVoiceID (0 , VOICE_ID_CHANNEL_MODE );
251- AUDIO_SetDigitVoice (1 , gEeprom .CHAN_1_CALL + 1 );
252- gAnotherVoiceID = (VOICE_ID_t )0xFE ;
253- gRequestSaveVFO = true;
254- gVfoConfigureMode = VFO_CONFIGURE_RELOAD ;
255- break ;
256- }
257- gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL ;
258- break ;
259-
26093 default :
261- gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL ;
262- gUpdateStatus = true ;
94+ gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL ;
95+ gWasFKeyPressed = false ;
26396 gWasFKeyPressed = false;
26497 break ;
26598 }
@@ -481,4 +314,3 @@ void MAIN_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
481314 break ;
482315 }
483316}
484-
0 commit comments