3 * Menu sub-routines: Memory Freq.
4 * Copyright (C) 2013-08-14 K.Ohta <whatisthis.sowhat ai gmail.com>
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2,
10 * or (at your option) any later version.
11 * This library / program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14 * See the GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this library; see the file COPYING. If not, write to the
18 * Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
21 * As a special exception, if you link this(includeed from sdcc) library
22 * with other files, some of which are compiled with SDCC,
23 * to produce an executable, this library does not by itself cause
24 * the resulting executable to be covered by the GNU General Public License.
25 * This exception does not however invalidate any other reasons why
26 * the executable file might be covered by the GNU General Public License.
31 #include "commondef.h"
33 #include "backlight.h"
35 void call_freqbank(unsigned int num)
39 unsigned char _userband;
40 unsigned int bank = num;
43 if(num >= USER_MEMORY_NUM) return;
46 _fm = setup.memoryfreqs[n].fm;
47 _userband = setup.memoryfreqs[n].band;
48 _band = _userband & 0x1f;
49 _userband = _userband >> 5;
52 setup.fm_userbandnum = _userband;
55 setup.am_userbandnum = _userband;
57 setup.memorynum = num;
58 akc6955_chg_fm(_fm, setup.memoryfreqs[n].freq);
62 void set_freqbank(unsigned int num)
66 unsigned char _userband;
70 if(num >= USER_MEMORY_NUM) return;
75 _userband = setup.am_userbandnum;
78 _userband = setup.fm_userbandnum;
82 setup.memoryfreqs[n].fm = _fm;
83 setup.memoryfreqs[n].band = (_userband << 5) | (_band & 0x1f);
84 setup.memoryfreqs[n].freq = _freq;
90 void on_call_userfreq(void)
92 unsigned long val = USER_MEMORY_NUM;
96 print_numeric_nosupress(val - 1, 2);
97 val = read_numeric(val, 2, 4, 1);
98 if(val < 0x80000000) call_freqbank(val);
101 void on_set_userfreq(void)
103 unsigned long val = USER_MEMORY_NUM;
108 printstr("Set Mem: 00-");
109 print_numeric_nosupress(val - 1, 2);
110 val = read_numeric(val, 2, 4, 1);
112 if(val >= 0x80000000) return;
113 printstr("OK? A=OK ");
114 c = pollkey_single();
115 if(c != charcode_a) return;
119 void on_updown_userfreq(void)
124 unsigned char _userband;
126 unsigned char dispf = 0xff;
129 _freq = setup.amfreq;
130 _userband = setup.am_userbandnum;
131 _band = setup.amband;
133 _userband = setup.fm_userbandnum;
134 _band = setup.fmband;
135 _freq = setup.fmfreq;
143 print_numeric_nosupress(setup.memorynum, 2);
144 printstr(" HELP = F");
149 c = pollkey_single_timeout(41, 1); // About 1s
151 dispf = backlight_dec(dispf);
153 case charcode_7: // UP 1CH
155 if(setup.memorynum >= USER_MEMORY_NUM) setup.memorynum = 0;
156 call_freqbank(setup.memorynum);
158 case charcode_1: // Down 1CH
159 if(setup.memorynum == 0) setup.memorynum = USER_MEMORY_NUM;
161 call_freqbank(setup.memorynum);
163 case charcode_5: // Recall
164 call_freqbank(setup.memorynum);
166 case charcode_d: // Reset
168 setup.fmband = _band;
169 setup.fm_userbandnum = _userband;
170 setup.fmfreq = _freq;
172 setup.amband = _band;
173 setup.am_userbandnum = _userband;
174 setup.amfreq = _freq;
176 akc6955_chg_fm(_fm, _freq);
191 case charcode_e: // Set Light
195 idle_time_ms(9); // Pad 9ms, 1Loop = 1000ms.