From ccc798c127b67ac671605fe694ecfa6f78e4f8b5 Mon Sep 17 00:00:00 2001 From: "K.Ohta" Date: Thu, 13 Jun 2013 16:12:16 +0900 Subject: [PATCH] [RADIO] Add scan-ui. --- akc6955.h | 2 + main.c | 103 +++++++++++++++++++++++++++------- nbproject/Makefile-genesis.properties | 2 +- 3 files changed, 87 insertions(+), 20 deletions(-) diff --git a/akc6955.h b/akc6955.h index 5b55b85..1d60967 100644 --- a/akc6955.h +++ b/akc6955.h @@ -150,6 +150,8 @@ extern unsigned char akc6955_tune(void); extern unsigned int akc6955_mode3k(unsigned char flag); extern void akc6955_set_tune(unsigned char mode_3k, unsigned int ch); extern void akc6955_do_scan(unsigned char up); +extern void akc6955_abort_scan(void); +extern unsigned char akc6955_chk_donescan(void); extern unsigned char akc6955_chk_donescan(void); extern unsigned int akc6955_get_freq(void); diff --git a/main.c b/main.c index 7f9175b..a4650ef 100644 --- a/main.c +++ b/main.c @@ -125,6 +125,7 @@ int help_line; int help_section; int ui_language; unsigned int ui_idlecount; +unsigned char scanflag; int recv_signal; int backlight_counter; @@ -295,6 +296,19 @@ void toggle_amfm(void) } } +static void update_status(void) +{ +#ifndef _LCD_DEBUG + recv_signal = akc6955_read_level(); + if(fm != 0){ + fmfreq = akc6955_get_freq(); + } else { + amfreq = akc6955_get_freq(); + } +#endif + +} + void update_display(void) { if(fm != 0){ // FM @@ -346,6 +360,59 @@ void update_display(void) print_numeric(recv_signal, 0xff); } +void scan_start() +{ + unsigned char input_flag; + unsigned char c; + + do { + if(scanflag == 0){ + // New Scan + _CLS(); + printstr("Scan A=ABORT"); + _LOCATE(0,1); + printstr("U=6, D=4"); + do { + input_flag = readkey_compare(); + idle(0xff80); + } while(input_flag == 0); + c = pop_keyinfifo(); + if(c == charcode_6){ + akc6955_do_scan(0xff); + } else if(c == charcode_4){ + akc6955_do_scan(0); + } else { + break; + } + scanflag = 0xff; + } else { + do { + input_flag = readkey_compare(); + idle(0xff80); + } while(input_flag == 0); + c = pop_keyinfifo(); + + if(c == charcode_a){ + akc6955_abort_scan(); + break; + } else if(c == charcode_4){ + akc6955_abort_scan(); + akc6955_do_scan(0); + continue; + } else if(c == charcode_6){ + akc6955_abort_scan(); + akc6955_do_scan(0xff); + continue; + } + if(akc6955_chk_donescan() != 0) break; + } + idle(0xff00); + } while(1); + scanflag=0; + _CLS(); + update_status(); + update_display(); +} void setfreq_direct(void) { @@ -359,8 +426,6 @@ void setfreq_direct(void) val = read_numeric(val, 5, 7, 1); fmfreq = val; akc6955_set_freq(val); - idle(0xff00); - fmfreq = akc6955_get_freq(); } else { // FM _LOCATE(0,0); @@ -369,9 +434,10 @@ void setfreq_direct(void) val = read_numeric(val, 5, 7, 1); amfreq = val; akc6955_set_freq(val); - idle(0xff00); - amfreq = akc6955_get_freq(); } + idle(0xff00); + update_status(); + update_display(); } void setband_direct(void) @@ -386,16 +452,16 @@ void setband_direct(void) akc6955_set_fmband(band); akc6955_do_tune(); idle(0xff00); - fmfreq = akc6955_get_freq(); } else { printstr("Set Band:AM"); band = amband & 0x1f; band = read_numeric(band, 2, 7, 1); akc6955_set_amband(band); akc6955_do_tune(); - idle(0xff00); - amfreq = akc6955_get_freq(); } + idle(0xff00); + update_status(); + update_display(); } void call_userband(unsigned char num) @@ -416,6 +482,14 @@ void call_userband(unsigned char num) akc6955_set_userband(am_usrbands[num].start, am_usrbands[num].stop, ch, am_usrbands[num].mode3k); } + if(fm != 0) { + fmband = AKC6955_BAND_AMUSER; + } else { + amband = AKC6955_BAND_AMUSER; + } + idle(0xff00); + update_status(); + update_display(); } void set_userband(void) @@ -641,7 +715,6 @@ void main_menu(void) void setfreq_updown(unsigned char ctlword) { - unsigned char c; #ifndef _LCD_DEBUG switch(ctlword){ case charcode_8: // Change band @@ -789,7 +862,6 @@ int main(void) { char readchar; unsigned char input_flag; - char i; unsigned char c; #ifdef _LCD_DEBUG unsigned char power_flag; @@ -816,7 +888,7 @@ int main(void) switch(load_eeprom()) { case 0x01: // No magic-word - idle(0xff00); + idle(0xff80); _CLS(); setdefault(); _LOCATE(0,0); @@ -857,7 +929,7 @@ int main(void) // Init AKC6955 /* Check EEPROM */ /* Push default parameters to AKC6955*/ - + scanflag = 0; #ifndef _LCD_DEBUG akc6955_chg_fm(fm); // Set to AM akc6955_set_amband(amband); @@ -870,6 +942,7 @@ int main(void) idle(0xff00); #endif _CLS(); + update_status(); update_display(); do { /* Main routine*/ @@ -882,14 +955,6 @@ int main(void) // Other is skip } } -#ifndef _LCD_DEBUG - recv_signal = akc6955_read_level(); - if(fm != 0){ - fmfreq = akc6955_get_freq(); - } else { - amfreq = akc6955_get_freq(); - } -#endif // Check battery (include idle?) // Read AKJC6955's status // Putstring to LCD. diff --git a/nbproject/Makefile-genesis.properties b/nbproject/Makefile-genesis.properties index 40538ac..b8b0187 100644 --- a/nbproject/Makefile-genesis.properties +++ b/nbproject/Makefile-genesis.properties @@ -1,5 +1,5 @@ # -#Thu Jun 13 14:57:11 JST 2013 +#Thu Jun 13 16:09:38 JST 2013 default.languagetoolchain.dir=/usr/local/bin default.br-unifei-rmaalmeida-toolchainSDCC-SDCCtoolchain.md5=b67cce1ad75b450308d7806e430931b3 com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=8fe1589514540343a5279c082104bce0 -- 2.11.0