Skip to content

Commit 46efe02

Browse files
authored
Merge pull request #14 from aditaa/channel-number-keys
Map keypad digits to MR channel slots
2 parents 505da16 + bbb02b8 commit 46efe02

File tree

1 file changed

+24
-192
lines changed

1 file changed

+24
-192
lines changed

app/main.c

Lines changed: 24 additions & 192 deletions
Original file line numberDiff line numberDiff line change
@@ -35,178 +35,51 @@
3535
static 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

Comments
 (0)