From ed709cef32e57ff60d9b0c9d39070e9ec98ffc0e Mon Sep 17 00:00:00 2001 From: csrichter Date: Tue, 11 Apr 2017 14:40:59 +0200 Subject: [PATCH] sync_decim: reduced freqency of sync calculations, changed handling of psn encoding for tmc message printing --- lib/rds_decoder_redsea_impl.cc | 4 ++-- lib/sync_decim_impl.cc | 12 +++++++++--- lib/sync_decim_impl.h | 1 + python/tmc_classes.py | 20 ++++++++++++++++---- 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/lib/rds_decoder_redsea_impl.cc b/lib/rds_decoder_redsea_impl.cc index d98ce27..3344759 100644 --- a/lib/rds_decoder_redsea_impl.cc +++ b/lib/rds_decoder_redsea_impl.cc @@ -316,9 +316,9 @@ int rds_decoder_redsea_impl::work (int noutput_items, block_number=(block_number+1) % 4; blocks_counter++; /* 1187.5 bps / 104 bits = 11.4 groups/sec, or 45.7 blocks/sec */ - if (blocks_counter==50) { + if (blocks_counter==20) {//reduced from 50 last_wrong_blocks_counter=wrong_blocks_counter; - if (wrong_blocks_counter>35) { + if (wrong_blocks_counter>14) {//reduced from 35 lout << "@@@@@ Lost Sync (Got " << wrong_blocks_counter << " bad blocks on " << blocks_counter << " total)" << std::endl; diff --git a/lib/sync_decim_impl.cc b/lib/sync_decim_impl.cc index 77145e3..b03b59f 100644 --- a/lib/sync_decim_impl.cc +++ b/lib/sync_decim_impl.cc @@ -26,6 +26,7 @@ #include "sync_decim_impl.h" #define DECIM 2 #define lout log && std::cout +#define SYNC_COUNTER_MAX 5//higher value -> slower sync, less cpu load //#include namespace gr { namespace crfa { @@ -54,6 +55,7 @@ namespace gr { //init persistant vars last_input=0; mode=COPY; + dosync_counter=0; } /* * Our virtual destructor. @@ -104,7 +106,8 @@ namespace gr { //lout<std::abs(out_noskip)){ - skip_is_better_counter++; + skip_is_better_counter++; } else{ - skip_is_better_counter--; + skip_is_better_counter--; } //lout<<"state:"<< mode; //lout<<"\t,out_noskip:"<1),N,Q,T,D,U,C,R ,Comment event_array=self.tableobj.ecl_dict[ecn] @@ -390,7 +392,9 @@ class tmc_message: #m=midnight, nm=midnight nex day, same for forecast and info/silent #datetime.timedelta(hours=0.25) def getDuration(self):#returns string - if "D" in self.event.durationType and not self.event.nature=="F": + if not self.event.is_valid: + return "" + elif "D" in self.event.durationType and not self.event.nature=="F": return ", "+tmc_message.duration_dict["Info_dyn"][self.tmc_DP] elif "L" in self.event.durationType and not self.event.nature=="F": return ", "+tmc_message.duration_dict["Info_long"][self.tmc_DP] @@ -442,12 +446,20 @@ class tmc_message: str_list=[str(elem) for elem in self.events] return str(", ".join(str_list)) def log_string(self): - return str(self.event.updateClass)+": "+self.getTime()+": "+self.location_text()+": "+self.events_string()+"; "+self.info_str()+"; "+self.psn.encode("utf-8") + retstr="" + try: + retstr=str(self.event.updateClass)+": "+self.getTime()+": "+self.location_text()+": "+self.events_string()+"; "+self.info_str()+"; "+self.psn + except UnicodeDecodeError as e: + print e + code.interact(local=locals()) + + return retstr #2017-03-16 fix:self.psn.encode("utf-8"), utf8 decoding happens later + #2017-04-10 undid "fix":UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128) #def db_string(self): # return str(self.location)+": "+str(self.event.updateClass)+": "+self.events_string()+"; "+self.info_str() def map_string(self): - return ''%self.getDate()+str(self.event.updateClass)+": "+self.getTime()+''%self.multi_str()+": "+self.events_string()+self.info_str()+"; "+self.psn.encode("utf-8")+"" + return ''%self.getDate()+str(self.event.updateClass)+": "+self.getTime()+''%self.multi_str()+": "+self.events_string()+self.info_str()+"; "+self.psn+"" def end_loc(self): return self.location.get_extent_location(self.location,self.tmc_extent,self.tmc_dir) def location_text(self):