OSDN Git Service

[v2.0] Port to fm-tune-pitch from v1.0.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Tue, 24 Sep 2013 03:38:35 +0000 (12:38 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Tue, 24 Sep 2013 03:38:35 +0000 (12:38 +0900)
helps.c
menu.c
menu.h
menu_defs.c
ui_display.c
ui_updown.c

diff --git a/helps.c b/helps.c
index 0600286..2509c92 100644 (file)
--- a/helps.c
+++ b/helps.c
@@ -67,14 +67,15 @@ const char *setup_helpstr[14] = {
         "5: Cancel", "f: (Exit) Help",
     };
 
-const char *mainmenu_helpstr[14] = {
+const char *mainmenu_helpstr[16] = {
         "0: Setup", "1: Band",
         "2:Resv", "3: Freq",
         "4: Call user", "6: Set user",
         "7: Power Off", "8: Volume",
         "9: Reload", "A: AM/FM",
         "B: Cancel","C: Set user",
-        "D: Input user","F: (Exit) Help",
+        "D: Input user","E: FM PITCH",
+        " ", "F: (Exit) Help",
 };
 
 const char *numeric_helpstr[8] = {
@@ -163,7 +164,7 @@ void mainmenu_help(void)
         c = printhelp_2lines(mainmenu_helpstr[l], mainmenu_helpstr[l + 1]);
         if(c == charcode_f) return;
         l += 2;
-        if(l >= 14) {
+        if(l >= 16) {
             c = numeric_help();
             if(c == charcode_f) return;
             if(help_version() == charcode_f) return;
diff --git a/menu.c b/menu.c
index bf89e82..5b57701 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -161,6 +161,24 @@ void menu_poweroff(void)
     }
 }
 
+void menu_setfmresolution(void)
+{
+   unsigned char c;
+    if(setup.fm != 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);
+    }
+}
+
 void setup_akc6955(void)
 {
     akc6955_writecmd(AKC6955_POWER, 0xc0);  // You musto *not* mute, set b2 to '0".
@@ -186,6 +204,7 @@ void setup_akc6955(void)
     akc6955_set_thresh_fmstereo(setup.threshold_fmstereo);
     akc6955_setvolumemode(0);
     akc6955_set_lowboost(setup.lowboost);
+    akc6955_set_scanrate_fm(setup.fm_tunepitch);
     set_stereomode();
 }
 
@@ -244,6 +263,9 @@ void main_menu(void)
         case charcode_d:
             input_userband();
             break;
+        case charcode_e:
+            menu_setfmresolution();
+            break;
         case charcode_f:
             mainmenu_help();
             // HELP
diff --git a/menu.h b/menu.h
index d4a1dc2..70adcb4 100644 (file)
--- a/menu.h
+++ b/menu.h
@@ -112,8 +112,10 @@ typedef struct {
     int backlight_level;
     unsigned int ui_idlecount;
     unsigned int memorynum;
+    unsigned char fm_tunepitch;
 //    _memoryfreq_t memoryfreqs[USER_MEMORY_NUM];
     unsigned int pagenum;
+   
 } __radioset_t;
 
 
index e18de60..27257f6 100644 (file)
@@ -136,6 +136,7 @@ void setdefault(void)
     setup.fmfreq = setup.fmfreq_bank[setup.fmband];
     setup.amfreq = setup.amfreq_bank[setup.amband];
     setup.stereo = 0xff; // Auto
+    setup.fm_tunepitch = 0x02; // 100KHz
 }
 
 void valinit(void)
index b3ffa1c..b1be147 100644 (file)
@@ -139,7 +139,7 @@ void update_display(void)
     _PUTCHAR(' ');
     set_amfmlamp(~setup.fm);
     _PUTCHAR('W');
-    print_numeric_nosupress(setup.threshold_width & 3, 1);
+    print_numeric_nosupress((setup.threshold_width & 3) * 10 + (setup.fm_tunepitch & 3), 2);
      // vol = volume * 1.5 + prevolume * 3.5[dB]
 #if 0
      if(volume > 24) {
index 42c67f2..fba6254 100644 (file)
@@ -149,11 +149,21 @@ void setfreq_updown(unsigned char ctlword)
         case charcode_2: // Down band
             setband_updown(0x00);
             break;
-        case charcode_6: // Up Fast;
-        case charcode_4: // Down Freq;
+        case charcode_6: // Up Middle;
+        case charcode_4: // Down Middle;
             freq = 9; // 27KHz@3K/9KStep.
             if(setup.fm != 0) {
-                freq = 10; // 250KHz
+              switch(setup.fm_tunepitch & 3) {
+               case 3:
+                 freq = 20; // 500KHz excepts TV1/TV2.
+                 if((setup.fmband == AKC6955_BAND_TV1) || (setup.fmband == AKC6955_BAND_TV2)) {
+                      freq = 10; // 250KHz
+                 }
+                 break;
+               default:
+                 freq = 10; // 250KHz
+                 break;
+              }
             } else if(setup.am_mode3k == 0){
                 freq = 6; // 30KHz
             }
@@ -167,7 +177,17 @@ void setfreq_updown(unsigned char ctlword)
         case charcode_7: // Down Fast;
             freq = 33; // 99KHz@3K/9KStep.
             if(setup.fm != 0){
-                freq = 40; // 1MHz
+              switch(setup.fm_tunepitch & 3) {
+               case 3:
+                 freq = 80; // 2MHz excepts TV1/TV2.
+                 if((setup.fmband == AKC6955_BAND_TV1) || (setup.fmband == AKC6955_BAND_TV2)) {
+                      freq = 40; // 1MHz
+                 }
+                 break;
+               default:
+                 freq = 40; // 1MHz
+                 break;
+              }
             } else if(setup.am_mode3k == 0){
                 freq = 20; // 100KHz
             }
@@ -180,7 +200,23 @@ void setfreq_updown(unsigned char ctlword)
         case charcode_3: // Up Slow;
         case charcode_1: // Down Slow;
             if(setup.fm != 0){
-                freq = 4; // DOWN 100KHz
+              switch(setup.fm_tunepitch & 3) {
+               case 0:
+                 freq = 1; // 25KHz
+                 break;
+               case 1:
+                 freq = 2; // 50KHz
+                 break;
+               case 2:
+                 freq = 4; // 100KHz
+                 break;
+               default:
+                 freq = 8; // 200KHz excepts TV1/TV2.
+                 if((setup.fmband == AKC6955_BAND_TV1) || (setup.fmband == AKC6955_BAND_TV2)) {
+                      freq = 4; // 100KHz
+                 }
+                 break;
+              }
             } else {
                 freq = 1; // 5KHz or 3KHz
                 if(setup.amband == AKC6955_BAND_MW2) {