From 2d8e4a650141cc343689d56b05d5f861f6a9abb1 Mon Sep 17 00:00:00 2001 From: csrichter Date: Tue, 9 May 2017 14:20:47 +0200 Subject: [PATCH] added display of decim-mode to table --- apps/fft-multi-decoder_fixed_hackrf.grc | 2 +- apps/ifft-RDS-decoder_hier-block.grc | 6 ++++++ apps/read_fmdec.grc | 6 ++++++ grc/multirds_sync_decim.xml | 5 +++++ lib/rds_decoder_redsea_impl.cc | 2 +- lib/sync_decim_impl.cc | 23 +++++++++++++++++++---- python/rds_parser_table_qt.py | 15 ++++++++++----- 7 files changed, 48 insertions(+), 11 deletions(-) diff --git a/apps/fft-multi-decoder_fixed_hackrf.grc b/apps/fft-multi-decoder_fixed_hackrf.grc index dbf98ff..de682fb 100644 --- a/apps/fft-multi-decoder_fixed_hackrf.grc +++ b/apps/fft-multi-decoder_fixed_hackrf.grc @@ -3244,7 +3244,7 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in _enabled - 1 + 0 _coordinate diff --git a/apps/ifft-RDS-decoder_hier-block.grc b/apps/ifft-RDS-decoder_hier-block.grc index 89b3354..d64d01f 100644 --- a/apps/ifft-RDS-decoder_hier-block.grc +++ b/apps/ifft-RDS-decoder_hier-block.grc @@ -3488,6 +3488,12 @@ out in + + multirds_sync_decim_0 + pad_sink_0_0 + ctrl + in + multirds_sync_decim_0 blocks_file_sink_0_0_0 diff --git a/apps/read_fmdec.grc b/apps/read_fmdec.grc index ce172c0..0a6f2e0 100644 --- a/apps/read_fmdec.grc +++ b/apps/read_fmdec.grc @@ -2692,6 +2692,12 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in tmc_raw in + + multirds_sync_decim_0 + multirds_rds_parser_table_qt_0 + ctrl + in + multirds_sync_decim_0 digital_binary_slicer_fb_0 diff --git a/grc/multirds_sync_decim.xml b/grc/multirds_sync_decim.xml index fe71ca4..105540e 100644 --- a/grc/multirds_sync_decim.xml +++ b/grc/multirds_sync_decim.xml @@ -58,6 +58,11 @@ * type * vlen * optional (set to 1 for optional inputs) --> + + ctrl + message + 1 + out float diff --git a/lib/rds_decoder_redsea_impl.cc b/lib/rds_decoder_redsea_impl.cc index 384da0a..8e4aaba 100644 --- a/lib/rds_decoder_redsea_impl.cc +++ b/lib/rds_decoder_redsea_impl.cc @@ -187,7 +187,7 @@ uint32_t rds_decoder_redsea_impl::correctBurstErrors(uint32_t block, char offset if (kErrorLookup.count({syndrome, offset}) > 0) { uint32_t err = kErrorLookup.at({syndrome, offset}); //dout << "correcting"<1000){ + if(outbit_counter>4000){ outbit_counter=0; weakout_counter=0; lout<<"mode: "<=SYNC_COUNTER_MAX){ @@ -147,9 +154,17 @@ namespace gr { } if (skip_is_better_counter>3){//2017-05-02 lowered from 6 mode=SKIP; + pmt::pmt_t meta(pmt::from_long(4)); + pmt::pmt_t data(pmt::from_long(mode)); + pmt::pmt_t pdu(pmt::cons(meta, data)); // make PDU: (metadata, data) pair + message_port_pub(pmt::mp("ctrl"), pdu); lout<<"switched to skip"<< std::endl; } else if (skip_is_better_counter<-3){ + pmt::pmt_t meta(pmt::from_long(4)); + pmt::pmt_t data(pmt::from_long(mode)); + pmt::pmt_t pdu(pmt::cons(meta, data)); // make PDU: (metadata, data) pair + message_port_pub(pmt::mp("ctrl"), pdu); mode=NOSKIP; lout<<"switched to noskip"<< std::endl; } diff --git a/python/rds_parser_table_qt.py b/python/rds_parser_table_qt.py index 4f44278..ec99247 100644 --- a/python/rds_parser_table_qt.py +++ b/python/rds_parser_table_qt.py @@ -90,7 +90,7 @@ class rds_parser_table_qt(gr.sync_block):#START self.decoder_frequencies={} self.decoders=[] for i in range(nPorts): - self.decoders.append({'synced':False,'freq':None,'PI':"",'pilot_SNR':0}) + self.decoders.append({'synced':False,'freq':None,'PI':"",'pilot_SNR':0,'decim_mode':0}) #self.decoder_synced={} #self.colorder=['ID','freq','name','PTY','AF','time','text','quality','buttons'] self.colorder=['ID','freq','name','buttons','PTY','AF','time','text','quality','pilot_SNR','RT+'] @@ -180,12 +180,13 @@ class rds_parser_table_qt(gr.sync_block):#START for num in self.decoder_frequencies: freq=self.decoder_frequencies[num] pilot_SNR=self.decoders[num]['pilot_SNR'] + decim_mode=self.decoders[num]['decim_mode'] if self.decoders[num]['synced']: - message_string+="  %i:%0.1fM (%i dB)"% (num,freq/1e6,pilot_SNR) + message_string+="  %i:%0.1fM (%i dB, %i)"% (num,freq/1e6,pilot_SNR,decim_mode) #print("'color:green'>%i:%0.1fM"% (num,freq/1e6)) else:#elif self.decoders[num]['synced']==False: #print("'color:red'>%i:%0.1fM"% (num,freq/1e6)) - message_string+="  %i:%0.1fM (%i dB)"% (num,freq/1e6,pilot_SNR) + message_string+="  %i:%0.1fM (%i dB, %i)"% (num,freq/1e6,pilot_SNR,decim_mode) message_string+="
tuned frequency:%0.1fM"%(self.tuning_frequency/1e6) self.signals.DataUpdateEvent.emit({'decoder_frequencies':message_string}) #print(message_string) @@ -239,7 +240,7 @@ class rds_parser_table_qt(gr.sync_block):#START self.RDS_data[PI]["time"]={"timestring":"88:88","datestring":"00-00-0000","datetime":None} self.RDS_data[PI]["wrong_block_ratio"]=1#100% def handle_msg(self, msg, port):#port from 0 to 3 - if pmt.to_long(pmt.car(msg))==1L: + if pmt.to_long(pmt.car(msg))==1L:#sync/desync messages from RDS decoder synced=pmt.to_python(pmt.cdr(msg)) #print("port:%i, data: %s"%(port,data)) self.decoders[port]['synced']=synced @@ -250,7 +251,7 @@ class rds_parser_table_qt(gr.sync_block):#START wrong_block_ratio=1#100% self.RDS_data[PI]["wrong_block_ratio"]=wrong_block_ratio self.signals.DataUpdateEvent.emit({'PI':PI,'wrong_block_ratio':wrong_block_ratio,'dots':dots}) - elif pmt.to_long(pmt.car(msg))==2L: + elif pmt.to_long(pmt.car(msg))==2L:#wrong_block_ratio messages from RDS decoder wrong_block_ratio=pmt.to_python(pmt.cdr(msg)) PI=self.decoders[port]['PI'] if self.RDS_data.has_key(PI): @@ -264,6 +265,10 @@ class rds_parser_table_qt(gr.sync_block):#START PI=self.decoders[port]['PI'] if self.RDS_data.has_key(PI): self.signals.DataUpdateEvent.emit({'PI':PI,'pilot_SNR':pilot_SNR}) + elif pmt.to_long(pmt.car(msg))==4L:#mode messages from RDS sync_decim + mode=pmt.to_python(pmt.cdr(msg)) + self.decoders[port]['decim_mode']=mode + self.update_freq() else: #elif pmt.to_long(pmt.car(msg))==0L array=pmt.to_python(msg)[1]