OSDN Git Service

IQ信号の符号ビットの数を数えるデバッグコードを入れた。
authorsuikan <suikan@users.sourceforge.jp>
Sun, 26 Jul 2015 00:38:30 +0000 (09:38 +0900)
committersuikan <suikan@users.sourceforge.jp>
Sun, 26 Jul 2015 00:38:30 +0000 (09:38 +0900)
trx305/demodulator.c
trx305/framework.c

index 2f3f513..f562a37 100644 (file)
@@ -63,10 +63,10 @@ void radio_demodulate_non_wide_FM( int idata, int qdata, short* left, short* rig
                 // テスト用の擬似ダイオード検波
             float i, q;
 
-            q = qdata / (32768.0*65536);
-            i = idata / (32768.0*65536);
+            q = qdata;
+            i = idata;
 
-            *left = *right = sqrtf( q*q + i*i )*32768*65536;
+            *left = *right = sqrtf( q*q + i*i );
 
         }
         break;
index 639dd48..8a2b3ec 100644 (file)
@@ -409,11 +409,30 @@ static void unpack_wide_fm ( unsigned int pri_ch, unsigned int sec_ch, int* idat
 
 static void unpack_non_wide_fm(  unsigned int pri_ch, unsigned int sec_ch, int* idata, int* qdata, int* valid_iq )
 {
+    static unsigned int debug_count = 0;
+    static unsigned int debug_izero = 0;
+    static unsigned int debug_qzero = 0;
+
         // インデックス分け
     if ( sec_ch & 0x02 )    // bit1が1ならindex = 1
     {
+        if ( debug_count < 1000 )
+        {
+            debug_count++;
+            if ( pri_ch & 1 << 29 )
+                debug_izero++;
+            if ( sec_ch & 1 << 29 )
+                debug_qzero++;
+        }
+        else
+        {
+            syslog(LOG_NOTICE, "number of sign bit =   %d, %d", debug_izero, debug_qzero);
+            debug_count = 0;
+            debug_izero = 0;
+            debug_qzero = 0;
+        }
             // IQデータはbit[29:2]に格納されている
-        *idata = (pri_ch << 2);                 // プライマリ・チャンネルの場合はマスク不要
+        *idata = (pri_ch << 2) & 0xFFFFFFF0;
         *qdata = (sec_ch << 2) & 0xFFFFFFF0;
             // IQデータが有効であると通知する
         *valid_iq = TRUE;