diff --git a/README.rst b/README.rst index 73c81c1..bb2d7a6 100644 --- a/README.rst +++ b/README.rst @@ -8,6 +8,7 @@ Parsing of packets is also possible, but the entire spec is not fully implemenet The following is supported: - normal/compressed position reports +- objects - mic-e position report - messages (inc. telemetry, bulletins, etc) - base91 comment telemetry extention diff --git a/aprslib/__init__.py b/aprslib/__init__.py index 781c80a..01dc51e 100644 --- a/aprslib/__init__.py +++ b/aprslib/__init__.py @@ -37,7 +37,7 @@ from datetime import date as _date __date__ = str(_date.today()) del _date -__version__ = "0.6.35" +__version__ = "0.6.36" __author__ = "Rossen Georgiev" __all__ = ['IS', 'parse', 'passcode'] diff --git a/aprslib/parse.py b/aprslib/parse.py index 43a5bf4..37b47d9 100644 --- a/aprslib/parse.py +++ b/aprslib/parse.py @@ -119,7 +119,6 @@ def parse(packet): # , - invalid/test format # - - unused # . - reserved - # ; - object report # < - station capabilities # ? - general query format # T - telemetry report @@ -130,7 +129,7 @@ def parse(packet): # _ - positionless weather report # { - user defined # } - 3rd party traffic - if packet_type in '#$%)*,; 0: + logger.debug("Parsed as compressed position report") + else: body, result = _parse_normal(body) parsed.update(result) - if len(result) == 0: + if len(result) > 0: + logger.debug("Parsed as normal position report") + else: raise ParseError("invalid format") # decode comment body, result = _parse_comment(body) parsed.update(result) + if packet_type == ';': + parsed.update({ + 'object_format': parsed['format'], + 'format': 'object', + }) + # capture ParseErrors and attach the packet except ParseError as exp: exp.packet = packet @@ -316,7 +337,7 @@ def _parse_timestamp(body, packet_type=''): try: # zulu hhmmss format if form == 'h': - timestamp = "%d%02d02d%s" % (utc.year, utc.month, utc.day, ts) + timestamp = "%d%02d%02d%s" % (utc.year, utc.month, utc.day, ts) # zulu ddhhmm format # '/' local ddhhmm format elif form in 'z/':