From 2bf1040d09982ffa268956c91f194d8c5194c1b6 Mon Sep 17 00:00:00 2001 From: suikan Date: Sun, 26 Jul 2015 09:38:30 +0900 Subject: [PATCH] =?utf8?q?IQ=E4=BF=A1=E5=8F=B7=E3=81=AE=E7=AC=A6=E5=8F=B7?= =?utf8?q?=E3=83=93=E3=83=83=E3=83=88=E3=81=AE=E6=95=B0=E3=82=92=E6=95=B0?= =?utf8?q?=E3=81=88=E3=82=8B=E3=83=87=E3=83=90=E3=83=83=E3=82=B0=E3=82=B3?= =?utf8?q?=E3=83=BC=E3=83=89=E3=82=92=E5=85=A5=E3=82=8C=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- trx305/demodulator.c | 6 +++--- trx305/framework.c | 21 ++++++++++++++++++++- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/trx305/demodulator.c b/trx305/demodulator.c index 2f3f513..f562a37 100644 --- a/trx305/demodulator.c +++ b/trx305/demodulator.c @@ -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; diff --git a/trx305/framework.c b/trx305/framework.c index 639dd48..8a2b3ec 100644 --- a/trx305/framework.c +++ b/trx305/framework.c @@ -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; -- 2.11.0