OSDN Git Service

[UI] Set mode3k correctly.
[openi2cradio/OpenI2CRadio.git] / menu_memoryfreq.c
index 0cadf42..160606f 100644 (file)
 #include "power.h"
 #include "commondef.h"
 #include "eeprom.h"
-
+#include "backlight.h"
 
 void call_freqbank(unsigned int num)
 {
     unsigned char _fm;
     unsigned char _band;
     unsigned char _userband;
-    unsigned int bank = num / USER_MEMORY_NUM;
-    unsigned int n = num % USER_MEMORY_NUM;
+    unsigned int bank = num;
+    unsigned int n = num;
 
-    if(num >= (USER_MEMORY_NUM * USER_MEMORY_BANKS)) return;
+    if(num >= USER_MEMORY_NUM) return;
 
-    if(bank != setup.pagenum){ // Swap memory
-//        save_frequencies();
-        load_frequencies(bank, 0x00);
-    }
 
-    _fm = freqset.memoryfreqs[n].fm;
-    _userband = freqset.memoryfreqs[n].band;
+    _fm = setup.memoryfreqs[n].fm;
+    _userband = setup.memoryfreqs[n].band;
     _band = _userband & 0x1f;
     _userband = _userband >> 5;
     if(_fm) { // AM
@@ -59,7 +55,7 @@ void call_freqbank(unsigned int num)
         setup.am_userbandnum = _userband;
     }
     setup.memorynum = num;
-    akc6955_chg_fm(_fm, freqset.memoryfreqs[n].freq);
+    akc6955_chg_fm(_fm, setup.memoryfreqs[n].freq);
 }
 
 
@@ -69,15 +65,10 @@ void set_freqbank(unsigned int num)
     unsigned char _band;
     unsigned char _userband;
     unsigned int _freq;
-    unsigned int bank = num / USER_MEMORY_NUM;
-    unsigned int n = num % USER_MEMORY_NUM;
+    unsigned int n = num;
 
-    if(num >= (USER_MEMORY_NUM * USER_MEMORY_BANKS)) return;
+    if(num >= USER_MEMORY_NUM) return;
 
-     if(bank != setup.pagenum){ // Save now bank, and load using bank
-        save_frequencies();
-        load_frequencies(bank, 0x00);
-    }
 
     _fm = setup.fm;
     _freq = setup.amfreq;
@@ -88,45 +79,40 @@ void set_freqbank(unsigned int num)
         _band = setup.fmband;
         _freq = setup.fmfreq;
     }
-    freqset.memoryfreqs[n].fm = _fm;
-    freqset.memoryfreqs[n].band = (_userband << 5) | (_band & 0x1f);
-    freqset.memoryfreqs[n].freq = _freq;
+    setup.memoryfreqs[n].fm = _fm;
+    setup.memoryfreqs[n].band = (_userband << 5) | (_band & 0x1f);
+    setup.memoryfreqs[n].freq = _freq;
 
-    save_frequencies();
+    save_eeprom();
 }
 
 
 void on_call_userfreq(void)
 {
-    unsigned int val = USER_MEMORY_NUM * USER_MEMORY_BANKS;
+    unsigned int val = USER_MEMORY_NUM;
     _CLS();
     _LOCATE(0,0);
-    printstr("Mem: 000-");
-    print_numeric_nosupress(val - 1, 3);
-    val = read_numeric(val, 3, 4, 1);
+    printstr("Mem: 00-");
+    print_numeric_nosupress(val - 1, 2);
+    val = read_numeric(val, 2, 4, 1);
     call_freqbank(val);
 }
 
 void on_set_userfreq(void)
 {
-    unsigned int val = USER_MEMORY_NUM * USER_MEMORY_BANKS;
+    unsigned int val = USER_MEMORY_NUM;
     unsigned char n;
     unsigned char c;
     _CLS();
     _LOCATE(0,0);
-    printstr("Set Mem: 000-");
-    print_numeric_nosupress(val - 1, 3);
-    val = read_numeric(val, 3, 4, 1);
+    printstr("Set Mem: 00-");
+    print_numeric_nosupress(val - 1, 2);
+    val = read_numeric(val, 2, 4, 1);
     _HOME();
-    _LOCATE(0,0);
     printstr("OK? A=OK       ");
-    do {
-           n = pollkeys(pollkeybuf, 19, 1);
-    } while(n == 0);
-    c = pollkeybuf[0];
+    c = pollkey_single();
     if(c != charcode_a) return;
     set_freqbank(val);
-//    save_eeprom();
 }
 
 void on_updown_userfreq(void)
@@ -135,8 +121,8 @@ void on_updown_userfreq(void)
     unsigned char _fm;
     unsigned char _band;
     unsigned char _userband;
-    unsigned char n;
     unsigned char c;
+    unsigned char dispf = 0xff;
 
     _fm = setup.fm;
     _freq = setup.amfreq;
@@ -150,56 +136,33 @@ void on_updown_userfreq(void)
 
     _CLS();
     do {
-        _LOCATE(0,0);
-        printstr("CH:");
-        print_numeric_nosupress(setup.memorynum, 3);
-        printstr(" 8/2/A");
-        update_status();
-        print_freq(1);
-        _HOME();
-        c = pollkey_single_timeout(44, 1); // About 1s
+        if(dispf != 0) {
+            _LOCATE(0,0);
+            printstr("CH:");
+            print_numeric_nosupress(setup.memorynum, 2);
+            printstr(" 7/1/A/D");
+            update_status();
+            print_freq(1);
+            _HOME();
+        }
+        c = pollkey_single_timeout(41, 1); // About 1s
+        backlight_reset(c);
+        dispf = backlight_dec(dispf);
        switch(c) {
            case charcode_7: // UP 1CH
                 setup.memorynum++;
-                if(setup.memorynum >= (USER_MEMORY_NUM * USER_MEMORY_BANKS)) setup.memorynum = 0;
+                if(setup.memorynum >= USER_MEMORY_NUM) setup.memorynum = 0;
                 call_freqbank(setup.memorynum);
                 break;
            case charcode_1: // Down 1CH
-               if(setup.memorynum == 0) setup.memorynum = USER_MEMORY_NUM * USER_MEMORY_BANKS;
+               if(setup.memorynum == 0) setup.memorynum = USER_MEMORY_NUM;
                setup.memorynum--;
                call_freqbank(setup.memorynum);
                break;
-           case charcode_9: // Up CH FAST
-               setup.memorynum += 100;
-               if(setup.memorynum > (USER_MEMORY_NUM * USER_MEMORY_BANKS)) {
-                    setup.memorynum = setup.memorynum % 100;
-               }
-               call_freqbank(setup.memorynum);
-               break;
-           case charcode_3: // Down CH FAST
-               if(setup.memorynum < 100) {
-                    setup.memorynum = (((USER_MEMORY_NUM * USER_MEMORY_BANKS) / 100 - 1) * 100) + (setup.memorynum % 100);
-               } else {
-                    setup.memorynum -= 100;
-               }
-               call_freqbank(setup.memorynum);
-               break;
-           case charcode_8: // Up CH FAST
-               setup.memorynum += USER_MEMORY_NUM;
-               if(setup.memorynum >= (USER_MEMORY_NUM * USER_MEMORY_BANKS)) {
-                    setup.memorynum = setup.memorynum - USER_MEMORY_NUM * USER_MEMORY_BANKS;
-               }
-               call_freqbank(setup.memorynum);
-               break;
-           case charcode_2: // Down CH FAST
-               if(setup.memorynum < USER_MEMORY_NUM) {
-                    setup.memorynum = (USER_MEMORY_NUM * USER_MEMORY_BANKS) - USER_MEMORY_NUM + setup.memorynum;
-               } else {
-                    setup.memorynum -= USER_MEMORY_NUM;
-               }
+            case charcode_5: // Recall
                call_freqbank(setup.memorynum);
                break;
-            case charcode_5: // Reset
+            case charcode_d: // Reset
                if(_fm) { // AM
                     setup.fmband = _band;
                     setup.fm_userbandnum = _userband;
@@ -220,10 +183,11 @@ void on_updown_userfreq(void)
            case charcode_a:
                 goto _l0;
                 break;
+           case charcode_e: // Set Light
            default:
                break;
            }
-//       _HOME();
+            idle_time_ms(9); // Pad 9ms, 1Loop = 1000ms.
     } while(1);
 _l0:
     _CLS();