X-Git-Url: http://average.org/gitweb/?a=blobdiff_plain;f=gps303%2Fgps303proto.py;fp=gps303%2Fgps303proto.py;h=2d777d94fa5bfbec0b4c4b15192a0a56f9427954;hb=f075dbd6eea0e7326d68fd15a103d668baf67c10;hp=2a4ae2ce93b8fe25bf11111c5f73b42505948ce7;hpb=b955a03a2d2146a705ac4d19047cc26b38cdd878;p=loctrkd.git diff --git a/gps303/gps303proto.py b/gps303/gps303proto.py index 2a4ae2c..2d777d9 100755 --- a/gps303/gps303proto.py +++ b/gps303/gps303proto.py @@ -313,8 +313,8 @@ class LOGIN(GPS303Pkt): # 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): @@ -763,7 +763,7 @@ def parse_message(packet: bytes, is_incoming: bool = True) -> 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: @@ -772,7 +772,7 @@ def parse_message(packet: bytes, is_incoming: bool = True) -> GPS303Pkt: 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)