# Default response for ACK, can also respond with STOP_UPLOAD
def in_decode(self, length: int, payload: bytes) -> None:
- self.imei = payload[:-1].hex()
- self.ver = unpack("B", payload[-1:])[0]
+ self.imei = payload[:16].hex()
+ self.ver = payload[16]
class SUPERVISION(GPS303Pkt):
length, proto = unpack("BB", packet[:2])
payload = packet[2:]
if proto not in CLASSES:
- cause: Union[DecodeError, ValueError] = ValueError(
+ cause: Union[DecodeError, ValueError, IndexError] = ValueError(
f"Proto {proto} is unknown"
)
else:
return CLASSES[proto].In(length, payload)
else:
return CLASSES[proto].Out(length, payload)
- except DecodeError as e:
+ except (DecodeError, ValueError, IndexError) as e:
cause = e
if is_incoming:
retobj = UNKNOWN.In(length, payload)