OSDN Git Service

[UI][v2.0] Configurable update-time.Backport from v1.0.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Sun, 20 Oct 2013 14:13:21 +0000 (23:13 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Sun, 20 Oct 2013 14:13:21 +0000 (23:13 +0900)
main.c
menu.h
menu_setup.c
nbproject/Makefile-genesis.properties
ui.c
ui.h

diff --git a/main.c b/main.c
index 5e3af67..dc2c913 100644 (file)
--- a/main.c
+++ b/main.c
@@ -92,6 +92,8 @@ unsigned char cnrlevel;
 int diffstat;
 unsigned int batlevel_6955;
 unsigned int battlevel;
+unsigned char ui_idlekey;
+unsigned char ui_idlepad;
 
 int recv_signal;
 unsigned char pollkeybuf[33];
@@ -257,7 +259,8 @@ int main(void)
     unsigned char p;
     unsigned char lvcount = 0;
     unsigned char dispf = 0xff;
-    
+    unsigned char i;    
+
     OSCCON =  (0x80 & 0b11111100) | 0b00111000;
 //    OSCCON =  (0x80 & 0b11111100) | 0b00110010; // 8MHz 
     idle_init();
@@ -301,9 +304,12 @@ int main(void)
     update_status();
     update_display();
     ClrWdt();
+    ui_idlekey = setup.ui_idlecount / 92;
+    ui_idlepad = setup.ui_idlecount % 23;
+
     do {
 #if 1
-        if(battlevel < 330) { // 3.3V
+        if(battlevel < 340) { // 3.4V
                 lvcount++;
                 if(lvcount > 4) {
                     if(dispf == 0) {
@@ -317,7 +323,8 @@ int main(void)
             }
 #endif
         /* Main routine*/
-            c = pollkey_single_timeout(41, 1); // 23*41 = 943ms
+       for(i = 0; i < 4; i++) {
+           c = pollkey_single_timeout(ui_idlekey, 1); // 23*41 = 943ms
            p = 0;
             if(c != charcode_null) {
                 ClrWdt();
@@ -326,13 +333,16 @@ int main(void)
                     dispf = 0xff;
                 }
                 setfreq_updown(c);
+               update_status();
+                update_display();
             }
             ClrWdt();
-            update_status();
-            dispf = backlight_dec(dispf); // 48ms
-            if(dispf != 0)  update_display();
-            idle_time_ms(9); // Pad 9ms, 1Loop = 1000ms.
-        ClrWdt();
+        }
+         update_status();
+         dispf = backlight_dec(dispf); 
+         if(dispf != 0)  update_display();
+         if(ui_idlepad != 0) idle_time_ms(ui_idlepad);
+         ClrWdt();
     } while(1);
 }
 
diff --git a/menu.h b/menu.h
index aabfda3..f1763f1 100644 (file)
--- a/menu.h
+++ b/menu.h
@@ -147,6 +147,8 @@ typedef struct {
     extern unsigned char backlight_level;
     extern unsigned char pollkeybuf[33];
     extern unsigned char scanflag;
+    extern unsigned char ui_idlekey;
+    extern unsigned char ui_idlepad;
 
     /*
      * ui_updown.c
index 77352cc..61a8ea0 100644 (file)
@@ -70,48 +70,62 @@ void setup_menu(void)
 {
     unsigned char c;
     unsigned long val;
+    unsigned int val2;
 
     c = printhelp_2lines("Setup F=HELP", "5=Return");
     _CLS();
    // _LOCATE(0,0);
     switch(c){
         case charcode_1:
-                list_userband();
-                break;
+            list_userband();
+            break;
         case charcode_3:
             printstr("BL Level:");
             val = read_numeric(setup.backlight_level, 3, 0,1);
             if((val & 0x80000000) == 0) {
-                if(val > 255) val = 255;
-                if(val < 15) val = 15;
-                setup.backlight_level = (unsigned char)val;
+                val2 = val;
+                if(val2 > 255) val2 = 255;
+                if(val2 < 15) val2 = 15;
+                setup.backlight_level = (unsigned char)val2;
             }
             break;
         case charcode_4:
             printstr("FM Bandwidth:");
 //            c = akc6955_get_fmbandwidth();
-            setup.fmbandwidth = pollkey_numeric(0) & 3;
+            setup.fmbandwidth = pollkey_numeric(0);
             akc6955_set_fmbandwidth(setup.fmbandwidth);
             break;
         case charcode_5:
             break;
+       case charcode_6:
+           printstr("UI Update:");
+           val = read_numeric(setup.ui_idlecount, 4, 0, 1);
+           if((val & 0x80000000) == 0) {
+              val2 = val;
+               if(val2 < 100) val2 = 100;
+               if(val2 > 5000) val2 = 5000;
+               setup.ui_idlecount = val2;
+              ui_idlekey = val2 / 92; // 23*4
+              ui_idlepad = val2 % 23;
+           } 
+            break;
         case charcode_7:
             printstr("FM-CNR:");
             c = setup.threshold_fmcnr;
             c = pollkey_numeric(c);
-            akc6955_set_thresh_fmcnr(c & 3);
+            akc6955_set_thresh_fmcnr(c);
             break;
         case charcode_8:
             printstr("AM-CNR:");
             c = setup.threshold_amcnr;
             c = pollkey_numeric(c);
-            akc6955_set_thresh_amcnr(c & 3);
+            akc6955_set_thresh_amcnr(c);
             break;
         case charcode_9:
             printstr("Stereo th:");
             c  = setup.threshold_fmstereo;
             c = pollkey_numeric(c);
-            akc6955_set_thresh_fmstereo(c & 3);
+            akc6955_set_thresh_fmstereo(c);
             break;
         case charcode_0:
             menu_poweroff();
@@ -129,8 +143,9 @@ void setup_menu(void)
             printstr("BL Long:");
             val = read_numeric(setup.backlight_long, 3, 0,1);
             if((val & 0x80000000) == 0) {
-                if(val > 999) val = 999;
-                setup.backlight_long = val;
+                val2 = val;
+                if(val2 > 999) val2 = 999;
+                setup.backlight_long = val2;
             }
             break;
         case charcode_f:
index 290a0f4..fe00865 100644 (file)
@@ -1,5 +1,5 @@
 #
-#Thu Oct 10 13:42:43 JST 2013
+#Sun Oct 20 21:11:40 JST 2013
 default.languagetoolchain.dir=/opt/microchip/xc8/v1.21/bin
 com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=0d2b1469ad71adb787c711a416386331
 default.languagetoolchain.version=1.21
diff --git a/ui.c b/ui.c
index fb5c7ce..07dcc0a 100644 (file)
--- a/ui.c
+++ b/ui.c
@@ -372,10 +372,10 @@ unsigned char pollkey_numeric(unsigned char init)
     }
 }
 
-unsigned char pollkey_single_timeout(unsigned int limit, unsigned char repeat)
+unsigned char pollkey_single_timeout(unsigned char limit, unsigned char repeat)
 {
     unsigned char c;
-    unsigned int ticks = 0;
+    unsigned char ticks = 0;
     unsigned char penalty = 0;
     unsigned char count = 0;
 
@@ -415,7 +415,7 @@ unsigned char pollkey_single_timeout(unsigned int limit, unsigned char repeat)
     /*
      * Set Deadzone.
      */
-    if(limit == 0) {
+    if(limit != 0) {
         while(ticks <= limit) {
             idle_time_ms(5 + 18);
             ticks++;
@@ -438,4 +438,4 @@ unsigned char pollkey_single_timeout(unsigned int limit, unsigned char repeat)
  * In application handler:
  * c = pop_keyinfifo();
  * if(c != 0) do(c);
- */
\ No newline at end of file
+ */
diff --git a/ui.h b/ui.h
index e732da8..4270d1d 100644 (file)
--- a/ui.h
+++ b/ui.h
@@ -83,7 +83,7 @@ extern unsigned long subst_numeric(unsigned long start, unsigned char pos, unsig
 extern void print_numeric_nosupress(unsigned long data, unsigned char digit);
 extern unsigned char readkey(void);
 extern unsigned char pollkey_single(void);
-extern unsigned char pollkey_single_timeout(unsigned int limit, unsigned char repeat);
+extern unsigned char pollkey_single_timeout(unsigned char limit, unsigned char repeat);
 extern unsigned char pollkey_numeric(unsigned char init);
 
 #ifdef __cplusplus