3232#include "ui/inputbox.h"
3333#include "ui/ui.h"
3434
35- static void ACTION_FlashLight (void )
36- {
37- switch (gFlashLightState ) {
38- case 0 :
39- gFlashLightState ++ ;
40- GPIO_SetBit (& GPIOC -> DATA , GPIOC_PIN_FLASHLIGHT );
41- break ;
42- case 1 :
43- gFlashLightState ++ ;
44- break ;
45- default :
46- gFlashLightState = 0 ;
47- GPIO_ClearBit (& GPIOC -> DATA , GPIOC_PIN_FLASHLIGHT );
48- }
49- }
50-
5135void ACTION_Power (void )
5236{
5337 if (++ gTxVfo -> OUTPUT_POWER > OUTPUT_POWER_HIGH ) {
@@ -59,43 +43,6 @@ void ACTION_Power(void)
5943 gRequestDisplayScreen = gScreenToDisplay ;
6044}
6145
62- static void ACTION_Monitor (void )
63- {
64- if (gCurrentFunction != FUNCTION_MONITOR ) {
65- RADIO_SelectVfos ();
66- #if defined(ENABLE_NOAA )
67- if (gRxVfo -> CHANNEL_SAVE >= NOAA_CHANNEL_FIRST && gIsNoaaMode ) {
68- gNoaaChannel = gRxVfo -> CHANNEL_SAVE - NOAA_CHANNEL_FIRST ;
69- }
70- #endif
71- RADIO_SetupRegisters (true);
72- APP_StartListening (FUNCTION_MONITOR );
73- return ;
74- }
75- if (gScanState != SCAN_OFF ) {
76- ScanPauseDelayIn10msec = 500 ;
77- gScheduleScanListen = false;
78- gScanPauseMode = true;
79- }
80- #if defined(ENABLE_NOAA )
81- if (gEeprom .DUAL_WATCH == DUAL_WATCH_OFF && gIsNoaaMode ) {
82- gNOAA_Countdown = 500 ;
83- gScheduleNOAA = false;
84- }
85- #endif
86- RADIO_SetupRegisters (true);
87- #if defined(ENABLE_FMRADIO )
88- if (gFmRadioMode ) {
89- FM_Start ();
90- gRequestDisplayScreen = DISPLAY_FM ;
91- } else {
92- #endif
93- gRequestDisplayScreen = gScreenToDisplay ;
94- #if defined(ENABLE_FMRADIO )
95- }
96- #endif
97- }
98-
9946void ACTION_Scan (bool bRestart )
10047{
10148#if defined(ENABLE_FMRADIO )
@@ -150,27 +97,44 @@ void ACTION_Vox(void)
15097 gUpdateStatus = true;
15198}
15299
153- #if defined(ENABLE_ALARM ) || defined(ENABLE_TX1750 )
154- static void ACTION_AlarmOr1750 (bool b1750 )
100+ static void ACTION_SelectVfo (uint8_t Target )
155101{
156- gInputBoxIndex = 0 ;
157- #if defined(ENABLE_ALARM ) && defined(ENABLE_TX1750 )
158- if (b1750 ) {
159- gAlarmState = ALARM_STATE_TX1750 ;
160- } else {
161- gAlarmState = ALARM_STATE_TXALARM ;
102+ if (Target > 1 ) {
103+ return ;
162104 }
163- gAlarmRunningCounter = 0 ;
164- #elif defined(ENABLE_ALARM )
165- gAlarmState = ALARM_STATE_TXALARM ;
166- gAlarmRunningCounter = 0 ;
167- #else
168- gAlarmState = ALARM_STATE_TX1750 ;
169- #endif
170- gFlagPrepareTX = true;
105+
106+ if (gScanState != SCAN_OFF ) {
107+ SCANNER_Stop ();
108+ gAnotherVoiceID = VOICE_ID_SCANNING_STOP ;
109+ }
110+
111+ gWasFKeyPressed = false;
112+ gEeprom .CROSS_BAND_RX_TX = CROSS_BAND_OFF ;
113+ gEeprom .DUAL_WATCH = DUAL_WATCH_OFF ;
114+
115+ if (gEeprom .TX_VFO == Target && gEeprom .RX_VFO == Target ) {
116+ gRequestDisplayScreen = DISPLAY_MAIN ;
117+ gUpdateStatus = true;
118+ return ;
119+ }
120+
121+ gEeprom .TX_VFO = Target ;
122+ gEeprom .RX_VFO = Target ;
123+ gTxVfo = & gEeprom .VfoInfo [Target ];
124+ gRxVfo = & gEeprom .VfoInfo [Target ];
125+
126+ gRequestSaveVFO = true;
127+ gVfoConfigureMode = VFO_CONFIGURE_RELOAD ;
128+ gFlagResetVfos = true;
129+ gFlagReconfigureVfos = true;
130+ gUpdateStatus = true;
171131 gRequestDisplayScreen = DISPLAY_MAIN ;
132+ if (IS_MR_CHANNEL (gEeprom .ScreenChannel [Target ])) {
133+ AUDIO_SetVoiceID (0 , VOICE_ID_CHANNEL_MODE );
134+ AUDIO_SetDigitVoice (1 , gEeprom .ScreenChannel [Target ] + 1 );
135+ gAnotherVoiceID = (VOICE_ID_t )0xFE ;
136+ }
172137}
173- #endif
174138
175139#if defined(ENABLE_FMRADIO )
176140void ACTION_FM (void )
@@ -195,8 +159,7 @@ void ACTION_FM(void)
195159
196160void ACTION_Handle (KEY_Code_t Key , bool bKeyPressed , bool bKeyHeld )
197161{
198- uint8_t Short ;
199- uint8_t Long ;
162+ uint8_t Target ;
200163
201164 if (gScreenToDisplay == DISPLAY_MAIN && gDTMF_InputMode ) {
202165 if (Key == KEY_SIDE1 && !bKeyHeld && bKeyPressed ) {
@@ -218,57 +181,15 @@ void ACTION_Handle(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
218181 return ;
219182 }
220183
221- if (Key == KEY_SIDE1 ) {
222- Short = gEeprom .KEY_1_SHORT_PRESS_ACTION ;
223- Long = gEeprom .KEY_1_LONG_PRESS_ACTION ;
224- } else {
225- Short = gEeprom .KEY_2_SHORT_PRESS_ACTION ;
226- Long = gEeprom .KEY_2_LONG_PRESS_ACTION ;
227- }
228- if (!bKeyHeld && bKeyPressed ) {
229- gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL ;
230- return ;
231- }
232- if (bKeyHeld || bKeyPressed ) {
233- if (!bKeyHeld ) {
184+ if (Key == KEY_SIDE1 || Key == KEY_SIDE2 ) {
185+ Target = (Key == KEY_SIDE1 ) ? 0 : 1 ;
186+ if (!bKeyHeld && bKeyPressed ) {
187+ gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL ;
234188 return ;
235189 }
236- Short = Long ;
237190 if (!bKeyPressed ) {
238- return ;
191+ ACTION_SelectVfo ( Target ) ;
239192 }
240- }
241- switch (Short ) {
242- case 1 :
243- ACTION_FlashLight ();
244- break ;
245- case 2 :
246- ACTION_Power ();
247- break ;
248- case 3 :
249- ACTION_Monitor ();
250- break ;
251- case 4 :
252- ACTION_Scan (true);
253- break ;
254- case 5 :
255- ACTION_Vox ();
256- break ;
257- case 6 :
258- #if defined(ENABLE_ALARM )
259- ACTION_AlarmOr1750 (false);
260- #endif
261- break ;
262- case 7 :
263- #if defined(ENABLE_FMRADIO )
264- ACTION_FM ();
265- #endif
266- break ;
267- case 8 :
268- #if defined(ENABLE_TX1750 )
269- ACTION_AlarmOr1750 (true);
270- #endif
271- break ;
193+ return ;
272194 }
273195}
274-
0 commit comments