set_stereomode();
}
-
-void set_volume(void)
-{
- unsigned char c;
- unsigned char d;
- unsigned char fact;
- unsigned char dispf = 0xff;
-
- _CLS();
- do {
- if(dispf != 0) {
- _LOCATE(0,0);
- d = akc6955_getvolumemode();
- if(d == 0){
- _PUTCHAR('D');
- } else {
- _PUTCHAR('K');
- }
- printstr(" Vol:");
- print_numeric_nosupress(setup.volume, 2);
- printstr(" F:Exit");
- _LOCATE(0,1);
- printstr("Pre:");
- _PUTCHAR('0' + (setup.prevolume & 3));
- _LOCATE(16-4, 1);
- if(setup.lowboost == 0x00){
- printstr(" ");
- } else {
- printstr("LOW");
- }
- _HOME();
- }
- c = pollkey_single_timeout(41, 1); // 943ms
- backlight_reset(c);
- dispf = backlight_dec(dispf);
-
- switch(c) {
- case charcode_6:
- setup.volume++;
- if(setup.volume > 63) setup.volume = 63;
- akc6955_setvolume(setup.volume);
- break;
- case charcode_4:
- setup.volume--;
- if(setup.volume < 23) setup.volume = 23;
- akc6955_setvolume(setup.volume);
- break;
- case charcode_f:
- _CLS();
- return;
- case charcode_a:
- fact = 0xff;
- if(d != 0){
- fact = 0x00;
- }
- akc6955_setvolumemode(fact);
- akc6955_setvolume(setup.volume);
- break;
- case charcode_b:
- setup.prevolume++;
- if(setup.prevolume > 3) setup.prevolume = 0;
- akc6955_set_prevolume(setup.prevolume);
- akc6955_setvolume(setup.volume);
- break;
- case charcode_d:
- fact = 0x00;
- if(setup.lowboost == 0x00){
- fact = 0xff;
- }
- setup.lowboost = fact;
- akc6955_set_lowboost(setup.lowboost);
- akc6955_setvolume(setup.volume);
- break;
- default:
- break;
- }
- if(setup.volume < 24){
- set_examp_mute(1);
- } else {
- set_examp_mute(0);
- }
- idle_time_ms(9); // Pad.
- } while(1);
-}
-
-
-void scan_start(void)
-{
- unsigned char c;
- unsigned char cc;
- unsigned char n;
- _CLS();
- scanflag = 0;
- do {
- do {
- c = pollkey_single_timeout(20, 0) ; // 23*20 = 460ms
- update_status();
- cc = ' ';
- if((akc6955_chk_donescan() == 0) && (scanflag != 0)){
- cc = '>';
- }
- _PUTCHAR(cc);
- printstr("Scan A/4/6/F");
- print_freq(1);
- _HOME();
- } while(c == charcode_null);
- // New Scan
- switch(c){
- case charcode_6:
- scanflag = 0xff;
- akc6955_do_scan(0xff);
- break;
- case charcode_4:
- scanflag = 0xff;
- akc6955_do_scan(0);
- break;
- case charcode_a:
- akc6955_abort_scan();
- goto _l0;
- break;
- case charcode_f:
- goto _l0;
- break;
- default:
- break;
- }
- } while(1);
-_l0:
- _CLS();
-}
-
void setfreq_direct(void)
{
- unsigned int val;
+ unsigned long val;
_CLS();
- _LOCATE(0,0);
+// _LOCATE(0,0);
printstr("Set Freq:");
- _LOCATE(0,1);
+ _LOCATE_0_1();
if(setup.fm != 0){
// FM
printstr("FM ");
val = setup.fmfreq;
val = read_numeric(val, 5, 7, 1);
+ if((val & 0x80000000) != 0) return;
setup.fmfreq = val;
} else {
// FM
printstr("AM ");
val = setup.amfreq;
val = read_numeric(val, 5, 7, 1);
+ if((val & 0x80000000) != 0) return;
setup.amfreq = val;
}
akc6955_set_freq(val);
void setband_direct(void)
{
- unsigned int band;
+ unsigned long band;
+ unsigned char band2;
unsigned int freq;
+ unsigned char mode3k;
+
_CLS();
- _LOCATE(0,0);
+// _LOCATE(0,0);
if(setup.fm != 0){
printstr("Set Band:FM#");
- band = setup.fmband & 7;
+ band2 = setup.fmband & 7;
+ if(band2 == AKC6955_BAND_FMUSER) {
+ userband.fm_usrbands[setup.fm_userbandnum].freq = setup.fmfreq;
+ }
setup.fmfreq_bank[setup.fmband] = setup.fmfreq;
- setup.fmband = read_numeric(band, 2, 7, 1);
- setup.fmfreq = setup.fmfreq_bank[setup.fmband];
- akc6955_set_fmband(setup.fmband);
- freq = setup.fmfreq;
+ band2 = pollkey_numeric(band2);
+ band2 &= 7;
+ if(band2 == AKC6955_BAND_FMUSER) {
+ call_userband(setup.fm_userbandnum);
+ freq = userband.fm_usrbands[setup.fm_userbandnum].freq;
+ } else {
+ freq = setup.fmfreq_bank[band2];
+ }
+ setup.fmband = band2;
+ akc6955_set_fmband(band2);
+ setup.fmfreq = freq;
} else {
printstr("Set Band:AM#");
band = setup.amband & 0x1f;
- setup.amfreq_bank[setup.amband] = setup.amfreq;
- setup.amband = read_numeric(band, 2, 7, 1);
- setup.amfreq = setup.amfreq_bank[setup.amband];
+ setup.amfreq_bank[band] = setup.amfreq;
+ if(band == AKC6955_BAND_AMUSER) {
+ userband.am_usrbands[setup.am_userbandnum].freq = setup.amfreq;
+ }
+ band = read_numeric(band, 2, 7, 1);
+ if((band & 0x80000000) != 0) return;
+ band &= 0x1f;
+ setup.amband = band;
+ freq = setup.amfreq_bank[setup.amband];
switch(band) {
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;
+ mode3k = 0xff;
break;
+ case AKC6955_BAND_AMUSER:
+ call_userband(setup.am_userbandnum);
+ mode3k = userband.am_usrbands[setup.am_userbandnum].mode3k;
+ freq = userband.am_usrbands[setup.am_userbandnum].freq;
+ break;
default:
+ mode3k = 0x00;
break;
}
-
- akc6955_set_amband(setup.amband);
- freq = setup.amfreq;
+ akc6955_mode3k(mode3k);
+ akc6955_set_amband(band);
+ setup.amfreq = freq;
+ setup.am_mode3k = mode3k;
}
akc6955_do_tune();
akc6955_set_freq(freq);
}
-void call_userband(unsigned char num)
+void menu_poweroff(void)
{
- unsigned int freq;
- unsigned int ch;
- unsigned char start;
- unsigned char end;
- unsigned char mode3k;
- unsigned char freq2;
- _userband_t *p;
-
- if(num >= USER_BAND_NUM) return;
-
- p = &(setup.am_usrbands[num]);
- if(setup.fm != 0){
- p = &(setup.fm_usrbands[num]);
- }
- freq = p->freq;
- start = p->start;
- end = p->stop;
- mode3k = p->mode3k;
- if(setup.fm != 0) {
- ch = ((freq - 3000) / 5) * 2;
- setup.fmband = AKC6955_BAND_FMUSER;
- } else {
- unsigned int q = 5;
- if(mode3k != 0) q = 3;
- ch = freq / q;
- setup.amband = AKC6955_BAND_AMUSER;
- }
-
- if(start > end) {
- unsigned char tmp;
- tmp = start;
- start = end;
- end = tmp;
- }
-
- freq2 = ch / 32;
- if(freq2 > end) {
- ch = end * 32;
- }
- if(freq2 < start){
- ch = start * 32;
+ unsigned char c;
+ c = printhelp_2lines("Poweroff", "A=Yes");
+ if(c == charcode_a) {
+ shutdown(1);
}
- akc6955_set_userband(start, end, ch, mode3k);
}
-void set_userband(void)
+void menu_setfmresolution(void)
{
- unsigned int from,to;
- unsigned char c;
- unsigned char pp;
- unsigned char mode3k;
- char cc;
-
- _CLS();
- _LOCATE(0,0);
- printstr("User ch:");
- c = pollkey_single();
-
- if(c > charcode_0) return;
- if(c < charcode_1) return;
- if(c == charcode_0) {
- c = 0;
- } else {
- c = c - charcode_1 + 1;
- }
- if(c >= USER_BAND_NUM) return;
-
+ unsigned char c;
if(setup.fm != 0){
- from = setup.fm_usrbands[c].start * 80 + 3000; // 32*25/10
- to = setup.fm_usrbands[c].stop * 80 + 3000;
- _CLS();
- _LOCATE(0,0);
- _LOCATE(0,0);
- printstr("FM#");
- print_numeric_nosupress(c, 1);
- _LOCATE(0,1);
- printstr(" From:");
- from = read_numeric(from, 5, 7, 1);
- _LOCATE(0,1);
- printstr(" To: ");
- to = read_numeric(to, 5, 7, 1);
- setup.fm_usrbands[c].start = (from - 3000) / 80;
- setup.fm_usrbands[c].stop = (to - 3000) / 80;
- setup.fm_usrbands[c].freq = from * 80 + 3000;
- setup.fm_userbandnum = c;
- } else {
- mode3k = setup.am_usrbands[c].mode3k;
- pp = 96; // 3*32
- if(mode3k == 0) pp = 160; // 5*32
- from = setup.am_usrbands[c].start * pp;
- to = setup.am_usrbands[c].stop * pp;
- _CLS();
- _LOCATE(0,0);
- printstr("AM#");
- print_numeric_nosupress(c, 1);
- printstr(" Step:");
- _LOCATE(0,1);
- printstr("0=3k 1=5k");
- cc = pollkey_single();
- if(cc == charcode_0){
- pp = 96;
- mode3k = 0xff;
- } else if(cc = charcode_1) {
- pp = 160;
- mode3k = 0;
- }
+ _CLS();
+// _LOCATE(0,0);
+ c = akc6955_get_scanrate_fm();
+ printstr("FM pitch:");
+ _PUTCHAR('0' + c);
+ printstr("->");
+ c = pollkey_numeric(c);
+ setup.fm_tunepitch = c & 3;
+ akc6955_set_scanrate_fm(c);
_CLS();
- _LOCATE(0,0);
- printstr("AM#");
- print_numeric_nosupress(c, 1);
- _LOCATE(0,1);
- printstr(" From:");
- from = read_numeric(from, 5, 7, 1);
- _LOCATE(0,1);
- printstr(" To: ");
- to = read_numeric(to, 5, 7, 1);
- setup.am_usrbands[c].start = from / pp;
- setup.am_usrbands[c].stop = to / pp;
- setup.am_usrbands[c].mode3k = mode3k;
- setup.am_usrbands[c].freq = from * pp;
- setup.am_userbandnum = c;
- }
- call_userband(c);
- _CLS();
-}
-
-void input_userband(void)
-{
- unsigned char c;
- do{
- c = printhelp_2lines("User Band", " #");
-
-
- if((c >= charcode_a) && (c <= charcode_f)){
- break;
- }
- if(c == charcode_0) {
- _PUTCHAR('0');
- if(setup.fm != 0){
- setup.fm_userbandnum = 0;
- } else {
- setup.am_userbandnum = 0;
- }
- call_userband(0);
- } else {
- c = c - charcode_1 + 1;
- if(c < USER_BAND_NUM) {
- _PUTCHAR(c + '0');
- if(setup.fm != 0){
- setup.fm_userbandnum = c;
- } else {
- setup.am_userbandnum = c;
- }
- call_userband(c);
- }
- }
- idle(setup.ui_idlecount);
- } while(1);
- _CLS();
-}
-
-
-void menu_poweroff(void)
-{
- unsigned char c;
- c = printhelp_2lines("Poweroff", "A=Yes");
- if(c == charcode_a) {
- shutdown(1);
+// _LOCATE(0,0);
}
}
akc6955_set_thresh_fmstereo(setup.threshold_fmstereo);
akc6955_setvolumemode(0);
akc6955_set_lowboost(setup.lowboost);
+ akc6955_set_scanrate_fm(setup.fm_tunepitch);
set_stereomode();
}
-void menu_save(void)
-{
- unsigned char c;
- c = printhelp_2lines("Save settings", "A=Yes");
- if(c == charcode_a) {
- save_eeprom();
- }
-}
-
-void menu_load(void)
-{
- unsigned char c;
- c = printhelp_2lines("Load settings", "A=Yes B=Init");
- if(c == charcode_a) {
- c = load_eeprom();
- if( c != 0xff) {
- _CLS();
- _LOCATE(0,0);
- c = printhelp_2lines("X) Load Error", "A=Fix");
- setdefault();
- if(c == charcode_a){
- save_eeprom();
- }
- }
- setup_akc6955();
- } else if(c == charcode_b){
- setdefault();
- setup_akc6955();
- }
-}
-
-void setup_menu(void)
+/*
+ * Main Menu : initial-screen -> 'F'.
+ */
+void main_menu(void)
{
unsigned char c;
+ unsigned char d;
unsigned int val;
+ unsigned int freq;
- c = printhelp_2lines("Setup F=HELP", "5=Return");
- switch(c){
+ printhelp_2lines("Menu:F=HELP", "B=CANCEL");
+ c = pollkey_single(); // 1012ms
+ switch(c) {
+ case charcode_1:
+ // Band
+ setband_direct();
+ break;
case charcode_3:
- _CLS();
- _LOCATE(0,0);
- printstr("BL Level:");
- val = read_numeric(setup.backlight_level, 3, 0,1);
- if(val > 255) val = 255;
- if(val < 10) val = 15;
- setup.backlight_level = (unsigned char)val;
+ // Band
+ setfreq_direct();
break;
case charcode_4:
- _CLS();
- _LOCATE(0,0);
- printstr("FM Bandwidth:");
- akc6955_get_fmbandwidth(val);
- val = read_numeric(val, 1, 0, 1) & 3;
- setup.fmbandwidth = (unsigned char)val;
- akc6955_set_fmbandwidth(setup.fmbandwidth);
+ on_call_userfreq();
break;
+ // Scan
case charcode_5:
break;
+ case charcode_6:
+ on_set_userfreq();
+ break;
+ // Scan
case charcode_7:
- _CLS();
- _LOCATE(0,0);
- printstr("FM-CNR threshold:");
- val = setup.threshold_fmcnr;
- val = read_numeric(val, 1, 0, 1);
- akc6955_set_thresh_fmcnr((unsigned char)val);
+ menu_poweroff();
break;
case charcode_8:
- _CLS();
- _LOCATE(0,0);
- printstr("AM-CNR threshold:");
- val = setup.threshold_amcnr;
- val = read_numeric(val, 1, 0, 1);
- akc6955_set_thresh_amcnr((unsigned char)val);
+ // Set volume
+ set_volume();
break;
case charcode_9:
- _CLS();
- _LOCATE(0,0);
- printstr("Stereo threshold:");
- val = setup.threshold_fmstereo;
- val = read_numeric(val, 1, 0, 1);
- akc6955_set_thresh_fmstereo((unsigned char)val);
+ freq = akc6955_get_freq();
+ akc6955_set_freq(freq);
break;
case charcode_0:
- menu_poweroff();
+ // Setup Menu
+ setup_menu();
break;
case charcode_a:
- menu_load();
+ toggle_amfm();
break;
case charcode_c:
- menu_save();
+ set_userband();
break;
case charcode_d:
- setdefault();
+ input_userband();
break;
case charcode_e:
- _CLS();
- _LOCATE(0,0);
- printstr("BL Long:");
- val = read_numeric(setup.backlight_long, 3, 0,1);
- if(val > 999) val = 999;
- setup.backlight_long = val;
+ menu_setfmresolution();
break;
case charcode_f:
- setup_help();
+ mainmenu_help();
+ // HELP
break;
default:
break;
- }
-}
-/*
- * Main Menu : initial-screen -> 'F'.
- */
-void main_menu(void)
-{
- unsigned char c;
- unsigned int val;
-
- printhelp_2lines("Menu:F=HELP", "B=CANCEL");
- c = pollkey_single(); // 1012ms
- if(c == charcode_1){
- // Band
- setband_direct();
- } else if(c == charcode_3){
- // Band
- setfreq_direct();
- }else if(c == charcode_4){
- on_call_userfreq();
- // Scan
- }else if(c == charcode_5){
- // scan_start();
- // Scan
- }else if(c == charcode_6){
- on_set_userfreq();
- // Scan
- } else if(c == charcode_7){
- menu_poweroff();
- } else if(c == charcode_8){
- // Set volume
- set_volume();
- } else if(c == charcode_9){
- _CLS();
- _LOCATE(0,0);
- printstr("Sig width:");
- val = setup.threshold_width;
- val = read_numeric(val, 1, 0, 1);
- akc6955_set_thresh_width((unsigned char)val);
- // Set NF
- } else if(c == charcode_0){
- // Setup Menu
- setup_menu();
- } else if(c == charcode_a){
- toggle_amfm();
- } else if(c == charcode_c){
- // Set userband
- set_userband();
- } else if(c == charcode_d){
- // Call userband
- input_userband();
- } else if (c == charcode_f){
- mainmenu_help();
- // HELP
}
_CLS();
- _LOCATE(0,0);
+ _LOCATE_0_0();
}