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: