4 * Copyright (C) 2013-06-10 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.
35 #include <pic18fregs.h> /* ONLY FOR PIC18x */
46 #include "lcd_acm1602.h"
51 #include "menu_memoryfreq.h"
55 static void setfreq_updown_amsub(void)
57 if(setup.amband >= AKC6955_BAND_AMEND) {
60 akc6955_set_amband(setup.amband);
61 setup.amfreq = setup.amfreq_bank[setup.amband];
62 // idle_time_62_5ms(); // 62.5ms
64 akc6955_set_freq(setup.amfreq);
67 static void setfreq_updown_fmsub(void)
69 if(setup.fmband >= AKC6955_BAND_FMEND) {
72 akc6955_set_fmband(setup.fmband);
73 setup.fmfreq = setup.fmfreq_bank[setup.fmband];
74 // idle_time_62_5ms(); // 62.5ms
76 akc6955_set_freq(setup.fmfreq);
79 static void setband_updown(unsigned char updown)
82 if(setup.fm == 0){ // MW
83 band = setup.amband + 1;
84 if(setup.amband == AKC6955_BAND_AMUSER){
85 setup.am_usrbands[setup.am_userbandnum].freq = setup.amfreq;
87 setup.amfreq_bank[setup.amband] = setup.amfreq;
88 if(updown == 0) { // down
90 band = AKC6955_BAND_AMEND - 1;
95 if(setup.amband == AKC6955_BAND_AMUSER){
96 // amfreq = am_usrbands[am_userbandnum].freq;
97 call_userband(setup.am_userbandnum);
99 setfreq_updown_amsub();
101 if(setup.fmband == AKC6955_BAND_FMUSER){
102 setup.fm_usrbands[setup.fm_userbandnum].freq = setup.fmfreq;
104 band = setup.fmband + 1;
105 setup.fmfreq_bank[setup.fmband] = setup.fmfreq;
106 if(updown == 0) { // down
108 band = AKC6955_BAND_FMEND - 1;
113 if(setup.fmband == AKC6955_BAND_FMUSER){
114 // setup.fmfreq = fm_usrbands[fm_userbandnum].freq;
115 call_userband(setup.fm_userbandnum);
117 setfreq_updown_fmsub();
121 void setfreq_updown(unsigned char ctlword)
124 if((ctlword != charcode_e) && (ctlword >= charcode_1)
125 && (ctlword <= charcode_f)) {
126 backlight_counter = setup.backlight_long;
127 lcd_setbacklight(0xff, setup.backlight_level); // Turn ON
128 } else if(ctlword == charcode_e){
129 if(backlight_counter != 0){
130 backlight_counter = 0;
132 backlight_counter = setup.backlight_long;
139 case charcode_8: // Up band
140 setband_updown(0xff);
142 case charcode_2: // Down band
143 setband_updown(0x00);
145 case charcode_4: // Down Freq;
146 freq = 9; // 27KHz@3K/9KStep.
149 } else if(setup.am_mode3k == 0){
152 akc6955_down_freq(freq);
154 case charcode_6: // Down Freq;
155 freq = 9; // 27KHz@3K/9KStep.
158 } else if(setup.am_mode3k == 0){
161 akc6955_up_freq(freq); // 225 or 27 or 45KHz
163 case charcode_9: // Down Fast;
164 freq = 33; // 99KHz@3K/9KStep.
167 } else if(setup.am_mode3k != 0){
170 akc6955_up_freq(freq); // 825 or 90 or 165KHz
172 case charcode_7: // Down Fast;
173 freq = 33; // 99KHz@3K/9KStep.
176 } else if(setup.am_mode3k != 0){
179 akc6955_down_freq(freq); // 825 or 90 or 165KHz
181 case charcode_1: // Down Slow;
183 freq = 4; // DOWN 100KHz
185 freq = 1; // 5KHz or 3KHz
186 if(setup.amband == AKC6955_BAND_MW2) {
188 } else if(setup.amband == AKC6955_BAND_MW3) {
192 akc6955_down_freq(freq);
194 case charcode_3: // Up Slow;
196 freq = 4; // DOWN 100KHz
198 freq = 1; // 5KHz or 3KHz
199 if(setup.amband == AKC6955_BAND_MW2) {
201 } else if(setup.amband == AKC6955_BAND_MW3) {
205 akc6955_up_freq(freq);
207 case charcode_0: // Step
208 setup.threshold_width++;
209 akc6955_set_thresh_width(setup.threshold_width);
212 case charcode_a: // Toggle FM
217 on_updown_userfreq();
239 // akc6955_get_amband(amband);
240 // amfreq = akc6955_get_freq();
241 // amfreq_bank[amband] = amfreq;
243 // akc6955_get_fmband(fmband);
244 // fmfreq = akc6955_get_freq();
245 // fmfreq_bank[fmband] = fmfreq;