#include "eeprom.h"
#include "ioports.h"
#include "menu.h"
+#include "menu_memoryfreq.h"
#include "power.h"
#include "adc_int.h"
+#include "backlight.h"
static void setfreq_updown_amsub(void)
{
- if(amband >= AKC6955_BAND_AMEND) {
- amband = 0;
+ if(setup.amband >= AKC6955_BAND_AMEND) {
+ setup.amband = 0;
}
- akc6955_set_amband(amband);
- amfreq = amfreq_bank[amband];
- idle_time_62_5ms(); // 62.5ms
+ akc6955_set_amband(setup.amband);
+ setup.amfreq = setup.amfreq_bank[setup.amband];
+// idle_time_62_5ms(); // 62.5ms
ClrWdt();
- akc6955_set_freq(amfreq);
+ akc6955_set_freq(setup.amfreq);
}
static void setfreq_updown_fmsub(void)
{
- if(fmband >= AKC6955_BAND_FMEND) {
- fmband = 0;
+ if(setup.fmband >= AKC6955_BAND_FMEND) {
+ setup.fmband = 0;
}
- akc6955_set_fmband(fmband);
- fmfreq = fmfreq_bank[fmband];
- idle_time_62_5ms(); // 62.5ms
+ akc6955_set_fmband(setup.fmband);
+ setup.fmfreq = setup.fmfreq_bank[setup.fmband];
+// idle_time_62_5ms(); // 62.5ms
ClrWdt();
- akc6955_set_freq(fmfreq);
+ akc6955_set_freq(setup.fmfreq);
}
static void setband_updown(unsigned char updown)
{
unsigned char band;
- if(fm == 0){ // MW
- band = amband + 1;
- if(amband == AKC6955_BAND_AMUSER){
- am_usrbands[am_userbandnum].freq = amfreq;
+ if(setup.fm == 0){ // MW
+ band = setup.amband + 1;
+ if(setup.amband == AKC6955_BAND_AMUSER){
+ userband.am_usrbands[setup.am_userbandnum].freq = setup.amfreq;
}
- amfreq_bank[amband] = amfreq;
+ setup.amfreq_bank[setup.amband] = setup.amfreq;
if(updown == 0) { // down
if(band <= 1) {
- band = AKC6955_BAND_AMEND - 1;
+ band = AKC6955_BAND_AMEND + 1;
}
band -= 2;
}
- amband = band;
- if(amband == AKC6955_BAND_AMUSER){
+ setup.amband = band;
+ switch(setup.amband) {
+ case AKC6955_BAND_LW:
+ case AKC6955_BAND_MW2:
+ setup.am_mode3k = 0xff;
+ break;
+ case AKC6955_BAND_MW1:
+ case AKC6955_BAND_MW3:
+ case AKC6955_BAND_MW4:
+ setup.am_mode3k = 0x00;
+ break;
+ case AKC6955_BAND_AMUSER:
+ call_userband(setup.am_userbandnum);
+ break;
+ default:
+ break;
+ }
+ if(setup.amband == AKC6955_BAND_AMUSER){
// amfreq = am_usrbands[am_userbandnum].freq;
- call_userband(am_userbandnum);
+ call_userband(setup.am_userbandnum);
}
setfreq_updown_amsub();
} else { // FM
- if(fmband == AKC6955_BAND_FMUSER){
- fm_usrbands[fm_userbandnum].freq = fmfreq;
+ if(setup.fmband == AKC6955_BAND_FMUSER){
+ userband.fm_usrbands[setup.fm_userbandnum].freq = setup.fmfreq;
}
- band = fmband + 1;
- fmfreq_bank[fmband] = fmfreq;
+ band = setup.fmband + 1;
+ setup.fmfreq_bank[setup.fmband] = setup.fmfreq;
if(updown == 0) { // down
if(band <= 1) {
- band = AKC6955_BAND_FMEND - 1;
+ band = AKC6955_BAND_FMEND + 1;
}
band -= 2;
}
- fmband = band;
- if(fmband == AKC6955_BAND_FMUSER){
- // fmfreq = fm_usrbands[fm_userbandnum].freq;
- call_userband(fm_userbandnum);
+ setup.fmband = band;
+ if(setup.fmband == AKC6955_BAND_FMUSER){
+ // setup.fmfreq = fm_usrbands[fm_userbandnum].freq;
+ call_userband(setup.fm_userbandnum);
}
setfreq_updown_fmsub();
}
void setfreq_updown(unsigned char ctlword)
{
unsigned int freq;
- if((ctlword != charcode_e) && (ctlword >= charcode_1)
- && (ctlword <= charcode_f)) {
- backlight_counter = backlight_long;
- lcd_setbacklight(0xff, backlight_level); // Turn ON
- } else if(ctlword == charcode_e){
- if(backlight_counter != 0){
- backlight_counter = 0;
- } else {
- backlight_counter = backlight_long;
- }
- return;
- }
+
+ backlight_reset(ctlword);
update_status();
switch(ctlword){
case charcode_2: // Down band
setband_updown(0x00);
break;
- case charcode_4: // Down Freq;
- freq = 9; // 27KHz@3K/9KStep.
- if(fm != 0) {
- freq = 10; // 250KHz
- } else if(am_mode3k == 0){
- freq = 6; // 30KHz
- }
- akc6955_down_freq(freq);
- break;
- case charcode_6: // Down Freq;
+ case charcode_6: // Up Middle;
+ case charcode_4: // Down Middle;
freq = 9; // 27KHz@3K/9KStep.
- if(fm != 0) {
- freq = 10; // 250KHz
- } else if(am_mode3k == 0){
+ if(setup.fm != 0) {
+ switch(setup.fm_tunepitch & 3) {
+ case 3:
+ freq = 20; // 500KHz excepts TV1/TV2.
+ if((setup.fmband == AKC6955_BAND_TV1) || (setup.fmband == AKC6955_BAND_TV2)) {
+ freq = 10; // 250KHz
+ }
+ break;
+ default:
+ freq = 10; // 250KHz
+ break;
+ }
+ } else if(setup.am_mode3k == 0){
freq = 6; // 30KHz
}
- akc6955_up_freq(freq); // 225 or 27 or 45KHz
- break;
- case charcode_9: // Down Fast;
- freq = 33; // 99KHz@3K/9KStep.
- if(fm != 0){
- freq = 40; // 1MHz
- } else if(am_mode3k != 0){
- freq = 20; // 100KHz
- }
- akc6955_up_freq(freq); // 825 or 90 or 165KHz
+ if(ctlword == charcode_6) {
+ akc6955_up_freq(freq); // 225 or 27 or 45KHz
+ } else {
+ akc6955_down_freq(freq); // 225 or 27 or 45KHz
+ }
break;
+ case charcode_9: // Up Fast;
case charcode_7: // Down Fast;
freq = 33; // 99KHz@3K/9KStep.
- if(fm != 0){
- freq = 40; // 1MHz
- } else if(am_mode3k != 0){
+ if(setup.fm != 0){
+ switch(setup.fm_tunepitch & 3) {
+ case 3:
+ freq = 80; // 2MHz excepts TV1/TV2.
+ if((setup.fmband == AKC6955_BAND_TV1) || (setup.fmband == AKC6955_BAND_TV2)) {
+ freq = 40; // 1MHz
+ }
+ break;
+ default:
+ freq = 40; // 1MHz
+ break;
+ }
+ } else if(setup.am_mode3k == 0){
freq = 20; // 100KHz
}
- akc6955_down_freq(freq); // 825 or 90 or 165KHz
+ if(ctlword == charcode_9) {
+ akc6955_up_freq(freq); // 825 or 90 or 165KHz
+ } else {
+ akc6955_down_freq(freq); // 825 or 90 or 165KHz
+ }
break;
+ case charcode_3: // Up Slow;
case charcode_1: // Down Slow;
- if(fm != 0){
- freq = 4; // DOWN 100KHz
+ if(setup.fm != 0){
+ switch(setup.fm_tunepitch & 3) {
+ case 0:
+ freq = 1; // 25KHz
+ break;
+ case 1:
+ freq = 2; // 50KHz
+ break;
+ case 2:
+ freq = 4; // 100KHz
+ break;
+ default:
+ freq = 8; // 200KHz excepts TV1/TV2.
+ if((setup.fmband == AKC6955_BAND_TV1) || (setup.fmband == AKC6955_BAND_TV2)) {
+ freq = 4; // 100KHz
+ }
+ break;
+ }
} else {
freq = 1; // 5KHz or 3KHz
- if(amband == AKC6955_BAND_MW2) {
+ if(setup.amband == AKC6955_BAND_MW2) {
freq = 3; // 9KHz
- } else if(amband == AKC6955_BAND_MW3) {
+ } else if(setup.amband == AKC6955_BAND_MW3) {
freq = 2; // 10KHz
- }
- }
- akc6955_down_freq(freq);
- break;
- case charcode_3: // Up Slow;
- if(fm != 0){
- freq = 4; // DOWN 100KHz
- } else {
- freq = 1; // 5KHz or 3KHz
- if(amband == AKC6955_BAND_MW2) {
- freq = 3; // 9KHz
- } else if(amband == AKC6955_BAND_MW3) {
+ } else if(setup.amband == AKC6955_BAND_MW4) {
freq = 2; // 10KHz
}
- }
- akc6955_up_freq(freq);
+ }
+ if(ctlword == charcode_1) {
+ akc6955_down_freq(freq);
+ } else {
+ akc6955_up_freq(freq);
+ }
break;
case charcode_0: // Step
- threshold_width++;
- set_thresh_width(threshold_width);
+ setup.threshold_width++;
+ akc6955_set_thresh_width(setup.threshold_width);
akc6955_do_tune();
break;
case charcode_a: // Toggle FM
toggle_amfm();
break;
case charcode_b:
- set_volume();
+// set_volume();
+ on_updown_userfreq();
break;
case charcode_c:
// Scan
default:
break;
}
-// if(fm == 0){
-// akc6955_get_amband(amband);
-// amfreq = akc6955_get_freq();
-// amfreq_bank[amband] = amfreq;
-// } else {
-// akc6955_get_fmband(fmband);
-// fmfreq = akc6955_get_freq();
-// fmfreq_bank[fmband] = fmfreq;
-// }
}