@@ -194,7 +194,11 @@ def decode(self, data):
194194 data_type = data [pointer + 1 ]
195195 data_start = pointer + 2
196196 data_end = data_start + len_data - 1
197- self .value [ADType (data_type )] = data [data_start :data_end ]
197+ try :
198+ self .value [ADType (data_type )] = data [data_start :data_end ]
199+ except ValueError as ex :
200+ raise ValueError (f"EIRData.decode: Invalid ADType: 0x{ data_type :02x} , "
201+ f"data len: { len (data )} , data: { data [pointer :].hex (' ' )} " ) from ex
198202 pointer += data [pointer ] + 1
199203
200204 def encode (self , value , width ):
@@ -235,8 +239,14 @@ def decode(self, pkt):
235239 for index in range (repeated ):
236240 class_ = getattr (current_module , param .bt_type )
237241 data_type = class_ ()
238- data_type .decode (pkt [pointer :pointer + param .width ])
239- self ._add_to_value (param , data_type .value )
242+ try :
243+ data_type .decode (pkt [pointer :pointer + param .width ])
244+ self ._add_to_value (param , data_type .value )
245+ except ValueError as ex :
246+ logger .error (
247+ f"Packet.decode: failed to decode { param .name } as { param .bt_type } . "
248+ f"Offset: { pointer } , width: { param .width } , pkt: { pkt .hex (' ' )} . Error: { ex } "
249+ )
240250 pointer += param .width
241251 if pointer < len (pkt ):
242252 # self.value['parameters'] = pkt[pointer:]
0 commit comments