diff --git a/apps/fft-multi-decoder_fixed_hackrf.grc b/apps/fft-multi-decoder_fixed_hackrf.grc index 6f15ef8..877d4c1 100644 --- a/apps/fft-multi-decoder_fixed_hackrf.grc +++ b/apps/fft-multi-decoder_fixed_hackrf.grc @@ -1217,7 +1217,7 @@ gui_hint - + tabs@0 _rotation diff --git a/apps/read_sync_decim.grc b/apps/read_sync_decim.grc index c8b4e2c..a160c7b 100644 --- a/apps/read_sync_decim.grc +++ b/apps/read_sync_decim.grc @@ -344,7 +344,7 @@ file - /tmp/cr/sync_decim_out_11221 + /user/wire2/richter/abgabe/crash-examples/tmc decoder crash/sync_decim_out_11221 _coordinate @@ -777,7 +777,7 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in writeDB - True + False diff --git a/python/tmc_classes.py b/python/tmc_classes.py index c0be51e..1ca13b7 100644 --- a/python/tmc_classes.py +++ b/python/tmc_classes.py @@ -613,9 +613,7 @@ class tmc_dict: return False return True def add(self,message): - self.list_lock.acquire() - self.message_list.append(message) - self.list_lock.release() + print_message=True self.dict_lock.acquire() try: lcn=message.location.lcn @@ -625,19 +623,26 @@ class tmc_dict: if message.event.is_cancellation: try: self.messages[lcn][updateClass].cancellation_time=message.getTime()#cancellation_time = rx time of cancellation message + print_message=False#dont print cancellation messages except KeyError:#no message to cancel message.event.name="no message to cancel" self.messages[lcn][updateClass]=message else: if self.messages[lcn].has_key(updateClass) and self.messages[lcn][updateClass].tmc_hash ==message.tmc_hash:#if same message -> add confirmation self.messages[lcn][updateClass].add_confirmation(message) + print_message=False#dont print repeats else:#(over)write message self.messages[lcn][updateClass]=message #print("added message: "+str(message)) + if print_message: + self.list_lock.acquire() + self.message_list.append(message) + self.list_lock.release() except AttributeError: print("ERROR, not adding: "+str(message)) finally: self.dict_lock.release() + return print_message def getLogString(self,showInvalid,filters): self.list_lock.acquire() retStr="" @@ -790,7 +795,7 @@ class tmc_message: def log_string(self): retstr="" try: - retstr=str(self.event.updateClass)+": "+self.getTime()+": "+self.location_text()+": "+self.events_string()+"; "+self.info_str()+"; "+self.psn + retstr=str(self.event.updateClass)+": "+self.getTime()+": "+self.location_text()+": "+self.events_string()+"; "+self.info_str()+"; "+str(list(self.psns))+"x%i"%self.confirmations except UnicodeDecodeError as e: print e code.interact(local=locals()) @@ -885,6 +890,7 @@ class tmc_message: tmc_F=int((tmc_x>>3)&0x1) #identifies the message as a Single Group (F = 1) or Multi Group (F = 0) self.is_single=(tmc_F==1) self.is_multi=(tmc_F==0) + #check LTN try: msg_ltn=ltn#tableobj.RDS_data[PI]["AID_list"][52550]["LTN"] @@ -913,6 +919,7 @@ class tmc_message: self.ci=int(tmc_x&0x7) #continuity index self.data_arr=BitArray() self.mgm_list=[] + #self.length=0# attribute error is catched and signals incomplete mgm self.location=tmc_location(tmc_z,tableobj) #self.event=int(tmc_y&0x7ff) #Y10-Y0 self.event=tmc_event(int(tmc_y&0x7ff),self.tableobj) #Y10-Y0 diff --git a/python/tmc_parser.py b/python/tmc_parser.py index a1199a5..9c96170 100644 --- a/python/tmc_parser.py +++ b/python/tmc_parser.py @@ -176,18 +176,20 @@ class tmc_parser(gr.sync_block): if tmc_F==1:#single group tmc_msg=tmc_message(PI,psn,ltn,tmc_x,tmc_y,tmc_z,datetime_received,self) self.dataLock.acquire(1) - self.tmc_messages.add(tmc_msg) + print_message=self.tmc_messages.add(tmc_msg) self.dataLock.release(1) - self.print_tmc_msg(tmc_msg) + if print_message:#ignore duplicates + self.print_tmc_msg(tmc_msg) elif tmc_F==0 and Y15==1:#1st group of multigroup ci=int(tmc_x&0x7) tmc_msg=tmc_message(PI,psn,ltn,tmc_x,tmc_y,tmc_z,datetime_received,self) self.dataLock.acquire(1) - self.tmc_messages.add(tmc_msg) + print_message=self.tmc_messages.add(tmc_msg) self.dataLock.release(1) #if self.RDS_data[PI]["internals"]["unfinished_TMC"].has_key(ci): #print("overwriting parital message") - self.unfinished_messages[PI][ci]={"msg":tmc_msg,"time":time.time()} + if print_message:#save unfinished message only once (dont overwrite collected additional groups) + self.unfinished_messages[PI][ci]={"msg":tmc_msg,"time":time.time()} else: ci=int(tmc_x&0x7) if self.unfinished_messages[PI].has_key(ci): @@ -202,6 +204,7 @@ class tmc_parser(gr.sync_block): if tmc_msg.is_complete: self.print_tmc_msg(tmc_msg)#print message self.dataLock.acquire(1)#wait for print before delete + print_dbg("deleted finished (multi-group) message") del self.unfinished_messages[PI][tmc_msg.ci]#delete finished message self.dataLock.release(1) else: