OSDN Git Service

[RADIO] Add scan-ui.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Thu, 13 Jun 2013 07:12:16 +0000 (16:12 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Thu, 13 Jun 2013 07:12:16 +0000 (16:12 +0900)
akc6955.h
main.c
nbproject/Makefile-genesis.properties

index 5b55b85..1d60967 100644 (file)
--- 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 (file)
--- 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.
index 40538ac..b8b0187 100644 (file)
@@ -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