@@ -76,6 +76,8 @@ def _extract_header(self):
7676 file_version = line .split ("=" )[1 ]
7777 if file_version == "1.1" :
7878 self .file_version = TRCFileVersion .V1_1
79+ elif file_version == "1.3" :
80+ self .file_version = TRCFileVersion .V1_3
7981 elif file_version == "2.0" :
8082 self .file_version = TRCFileVersion .V2_0
8183 elif file_version == "2.1" :
@@ -121,6 +123,8 @@ def _extract_header(self):
121123 self ._parse_cols = self ._parse_msg_v1_0
122124 elif self .file_version == TRCFileVersion .V1_1 :
123125 self ._parse_cols = self ._parse_cols_v1_1
126+ elif self .file_version == TRCFileVersion .V1_3 :
127+ self ._parse_cols = self ._parse_cols_v1_3
124128 elif self .file_version in [TRCFileVersion .V2_0 , TRCFileVersion .V2_1 ]:
125129 self ._parse_cols = self ._parse_cols_v2_x
126130 else :
@@ -161,6 +165,24 @@ def _parse_msg_v1_1(self, cols: List[str]) -> Optional[Message]:
161165 msg .is_rx = cols [2 ] == "Rx"
162166 return msg
163167
168+ def _parse_msg_v1_3 (self , cols : List [str ]) -> Optional [Message ]:
169+ arbit_id = cols [4 ]
170+
171+ msg = Message ()
172+ if isinstance (self .start_time , datetime ):
173+ msg .timestamp = (
174+ self .start_time + timedelta (milliseconds = float (cols [1 ]))
175+ ).timestamp ()
176+ else :
177+ msg .timestamp = float (cols [1 ]) / 1000
178+ msg .arbitration_id = int (arbit_id , 16 )
179+ msg .is_extended_id = len (arbit_id ) > 4
180+ msg .channel = int (cols [2 ])
181+ msg .dlc = int (cols [6 ])
182+ msg .data = bytearray ([int (cols [i + 7 ], 16 ) for i in range (msg .dlc )])
183+ msg .is_rx = cols [3 ] == "Rx"
184+ return msg
185+
164186 def _parse_msg_v2_x (self , cols : List [str ]) -> Optional [Message ]:
165187 type_ = cols [self .columns ["T" ]]
166188 bus = self .columns .get ("B" , None )
@@ -203,6 +225,14 @@ def _parse_cols_v1_1(self, cols: List[str]) -> Optional[Message]:
203225 logger .info ("TRCReader: Unsupported type '%s'" , dtype )
204226 return None
205227
228+ def _parse_cols_v1_3 (self , cols : List [str ]) -> Optional [Message ]:
229+ dtype = cols [3 ]
230+ if dtype in ("Tx" , "Rx" ):
231+ return self ._parse_msg_v1_3 (cols )
232+ else :
233+ logger .info ("TRCReader: Unsupported type '%s'" , dtype )
234+ return None
235+
206236 def _parse_cols_v2_x (self , cols : List [str ]) -> Optional [Message ]:
207237 dtype = cols [self .columns ["T" ]]
208238 if dtype in ["DT" , "FD" , "FB" ]:
0 commit comments