diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 4b1a38b..dbf84cd 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,5 +1,26 @@ # pynmeagps Release Notes +### RELEASE 1.1.5 + +1. Add support for additional proprietary Quectel PQTM configuration messages from LG290/LG580 firmware version 1.3. + + - PQTMAIDINI: Inputs aiding position and time data + - PQTMAIDPOS: Inputs aiding position data + - PQTMAIDTIME: Inputs aiding time data + - PQTMCFGANTENNA: Sets/gets GNSS antenna power supply + - PQTMCFGCNRTHD: Sets/gets the CNR threshold for position engine + - PQTMCFGEVENT: Sets/gets external interrupt event + - PQTMCFGPINALT: Sets/gets the function of module's pin 14 + - PQTMCFGPPP: Sets/gets the PPP feature + - PQTMCFGPPS2: Sets/gets the PPS extend feature + - PQTMCFGRTKRL: Sets/gets the RTK reliability level + - PQTMCFGSTANDALONE: Sets/gets the Standalone mode + - PQTMCLRMSG: Disables serial message output. (2 variants) + - PQTMENV: Outputs the environment information. + - PQTMLSTMSG: Queries message output of serial port (2 variants) + - PQTMPPPNAV: Outputs the PPP navigation information + - PQTMRTCMIS: Outputs the RTCM input status + ### RELEASE 1.1.4 1. Add `modwno` boolean argument to wnotow2utc and utc2wnotow helper functions - True => modular week number, False => continuous week number. The default is True (modular week no). diff --git a/src/pynmeagps/_version.py b/src/pynmeagps/_version.py index b3528e0..959799a 100644 --- a/src/pynmeagps/_version.py +++ b/src/pynmeagps/_version.py @@ -8,4 +8,4 @@ :license: BSD 3-Clause """ -__version__ = "1.1.4" +__version__ = "1.1.5" diff --git a/src/pynmeagps/nmeamessage.py b/src/pynmeagps/nmeamessage.py index 6532411..83fa960 100644 --- a/src/pynmeagps/nmeamessage.py +++ b/src/pynmeagps/nmeamessage.py @@ -356,6 +356,10 @@ def _get_dict_prop(self, key: str, **kwargs) -> dict: key = self._get_dict_qtmcfgsat(key, self._mode, **kwargs) elif key == "QTMCFGUART": key = self._get_dict_qtmcfguart(key, self._mode, **kwargs) + elif key == "QTMCLRMSG": + key = self._get_dict_qtmclrmsg(key, self._mode, **kwargs) + elif key == "QTMLSTMSG": + key = self._get_dict_qtmlstmsg(key, self._mode, **kwargs) elif key == "QTMSN": key = self._get_dict_qtmsn(key, self._mode, **kwargs) elif key == "STMDRSENMSG": @@ -397,6 +401,46 @@ def _get_dict_qtmcfguart(self, key: str, mode: int, **kwargs) -> str: key += "_CURR" return key + def _get_dict_qtmclrmsg(self, key: str, mode: int, **kwargs) -> str: + """ + Get payload dictionary for proprietary Quectel QTMCLRMSG + command and query variants. + + :param str key: msgid + :param int mode: msgmode 1/2 + :return: key of payload definition + :rtype: str + """ + + lp = len(self._payload) + py = self._streaming + pt = "porttype" in kwargs + pi = "portid" in kwargs + if mode == nmt.SET: + if (py and lp == 0) or (not py and not pt and not pi): + key += "_CURR" + return key + + def _get_dict_qtmlstmsg(self, key: str, mode: int, **kwargs) -> str: + """ + Get payload dictionary for proprietary Quectel QTMLSTMSG + command and query variants. + + :param str key: msgid + :param int mode: msgmode 1/2 + :return: key of payload definition + :rtype: str + """ + + lp = len(self._payload) + py = self._streaming + pt = "porttype" in kwargs + pi = "portid" in kwargs + if mode == nmt.POLL: + if (py and lp == 0) or (not py and not pi and not pt): + key += "_CURR" + return key + def _get_dict_qtmcfgmsgrate(self, key: str, mode: int, **kwargs) -> str: """ Get payload dictionary for proprietary Quectel QTMCFGMSGRATE diff --git a/src/pynmeagps/nmeatypes_core.py b/src/pynmeagps/nmeatypes_core.py index efd71ed..a84ad36 100644 --- a/src/pynmeagps/nmeatypes_core.py +++ b/src/pynmeagps/nmeatypes_core.py @@ -523,18 +523,24 @@ # *************************************************************** # Quectel PQTM Proprietary message types LG290P/LG580P # *************************************************************** + "QTMAIDINI": "Inputs aiding position and time data", + "QTMAIDPOS": "Inputs aiding position data", + "QTMAIDTIME": "Inputs aiding time data", "QTMANTENNASTATUS": "Report Antenna Status", "QTMBKP": "Set Backup Mode", "QTMCFGAIC": "Sets/Gets AIC Function", "QTMCFGANTDELTA": "Sets/Gets Delta Between Ref Point and Antenna", + "QTMCFGANTENNA": "Sets/gets GNSS antenna power supply", "QTMCFGANTINF": "Sets/Gets Antenna Information", "QTMCFGBLD": "Sets/Gets Baseline Between Two Antennas", + "QTMCFGCNRTHD": "Sets/gets the CNR threshold for position engine", "QTMCFGCNST": "Sets/Gets Constellation Configuration", "QTMCFGDR": "Sets/Gets DR State", "QTMCFGDRHOT": "Sets/Gets DR Hot Start Feature", "QTMCFGDRRTD": "Sets/Gets DR Running TIme and Distance", "QTMCFGEINSMSG": "Sets/Gets INS, IMU, GPS Status", "QTMCFGELETHD": "Sets/Gets Elevation Threshold for Position Engine", + "QTMCFGEVENT": "Sets/gets external interrupt event", "QTMCFGFIXRATE": "Sets/Gets Fix Interval", "QTMCFGGEOFENCE": "Sets/Gets Geofence Feature", "QTMCFGGEOSEP": "Sets/Gets Geoidal Separation", @@ -547,24 +553,29 @@ "QTMCFGNMEADP": "Sets/Gets NMEA Precision", "QTMCFGNMEATID": "Sets/Gets NMEA Talker ID", "QTMCFGODO": "Sets/Gets Odometer Feature", + "QTMCFGPINALT": "Sets/gets the function of module's pin 14", + "QTMCFGPPP": "Sets/gets the PPP feature", "QTMCFGPPS": "Sets/Gets PPS (Pulse Per Second) Feature", + "QTMCFGPPS2": "Sets/gets the PPS extend feature", "QTMCFGPROT": "Sets/Gets I/O Protocol for Specified Port", "QTMCFGRCVRMODE": "Sets/Gets Receiver Working Mode", # Rover, Base "QTMCFGRSID": "Sets/Gets Reference Station ID", "QTMCFGRTCM": "Sets/Gets RTCM", "QTMCFGRTK": "Sets/Gets RTK Mode", # Absolute, Relative + "QTMCFGRTKRL": "Sets/gets the RTK reliability level", "QTMCFGRTKSRCTYPE": "Sets/Gets RTK Source Type", - "QTMMCFGRTKSRCTYPE": "Sets/Gets RTK Source Type", # typo in LG580P firmware? "QTMCFGSAT": "Sets/Gets GNSS Satellite Mask", "QTMCFGSBAS": "Sets/Gets SBAS", "QTMCFGSIGGRP": "Sets/Gets GNSS Signal Group", "QTMCFGSIGNAL": "Sets/Gets Antenna1 Signal Mask", "QTMCFGSIGNAL2": "Sets/Gets Antenna2 Signal Mask", + "QTMCFGSTANDALONE": "Sets/gets the Standalone mode", "QTMCFGSTATICHOLD": "Sets/Gets Parking Static Hold", "QTMCFGSVIN": "Sets/Gets Survey-In Feature", # Survey-In or Fixed "QTMCFGUART": "Configure UART Interface", "QTMCFGVEHMOT": "Sets/Gets Vehicle Motion Detection", "QTMCFGWN": "Sets/Gets Reference Start Week No", + "QTMCLRMSG": "Disables serial message output.", "QTMCOLD": "Cold Start", "QTMDEBUGOFF": "Disable Debug Log Output", "QTMDEBUGON": "Enable Debug Log Output", @@ -573,6 +584,7 @@ "QTMDRCLR": "Clear DR Calibration Data", "QTMDRPVA": "DR Postion, Velosity and Attitude", "QTMDRSAVE": "Save DR Calibration Data", + "QTMENV": "Outputs the environment information.", "QTMEOE": "Output End of Epoch Information", "QTMEPE": "Output Estimated Position Error", "QTMGEOFENCESTATUS": "Outputs Geofence Status", @@ -586,13 +598,17 @@ "QTMINS": "Navigation Results", "QTMJAMMINGSTATUS": "Jamming Detection Status", "QTMLS": "Outputs Leap Second Forecast Information", + "QTMLSTMSG": "Queries message output of serial port", + "QTMMCFGRTKSRCTYPE": "Sets/Gets RTK Source Type", # typo in LG580P firmware? "QTMNAV": "Output Navigation Information", "QTMODO": "Outputs Odometer Information", "QTMPL": "Outputs Protection Level Information", + "QTMPPPNAV": "Outputs the PPP navigation information", "QTMPVT": "Outputs PVT (GNSS) Result", # Position, Velocity, Track "QTMQVER": "Queries Version Information", "QTMRESETODO": "Reset Odometer Distance", "QTMRESTOREPAR": "Restore to Default Values after Restart", + "QTMRTCMIS": "Outputs the RTCM input status", "QTMSAVEPAR": "Save Configuration to Non-Volatile Memory", "QTMSENMSG": "Sensor Information", "QTMSN": "Queries Module Serial Number Code", diff --git a/src/pynmeagps/nmeatypes_get_prop.py b/src/pynmeagps/nmeatypes_get_prop.py index b9f76e1..d81a6b1 100644 --- a/src/pynmeagps/nmeatypes_get_prop.py +++ b/src/pynmeagps/nmeatypes_get_prop.py @@ -1391,6 +1391,28 @@ "heading": DE, }, "QTMDRSAVE": {"status": QS}, + "QTMENV": { + "msgver": IN, + "tow": IN, + "wn": IN, + "date": ST, + "time": ST, + "basescore": IN, + "conflevel": DE, + "satvis": IN, + "satslo": IN, + "movedflag": IN, + "movingflag": IN, + "posdiff": ST, # IN + "slotype": IN, + "basesatnum": IN, + "pubsatnum": IN, + "reserved1": IN, + "reserved2": IN, + "reserved3": IN, + "reserved4": IN, + "reserved5": IN, + }, "QTMEOE": { "msgver": IN, # always 2 for this version "utc": DE, @@ -1547,6 +1569,51 @@ "reserved4": IN, "pltime": IN, }, + "QTMPPPNAV": { + "msgver": IN, + "timestatus": IN, + "timeref": IN, + "utc": ST, + "date": ST, + "tow": IN, + "wn": IN, + "leapsec": IN, + "datumid": ST, + "reserved1": ST, + "soltype": IN, + "reserved2": ST, + "lat": DE, + "lon": DE, + "alt": DE, + "sep": DE, + "reserved3": ST, + "reserved4": ST, + "latstd": DE, + "lonstd": DE, + "altstd": DE, + "reserved5": ST, + "reserved6": ST, + "diffid": IN, + "diffage": DE, + "reserved7": ST, + "satview": IN, + "satused": IN, + "reserved8": ST, + "reserved9": ST, + "reserved10": ST, + "reserved11": ST, + "reserved12": ST, + "reserved13": ST, + "hvel": DE, + "vvel": DE, + "hvelstd": DE, + "vvelstd": DE, + "reserved14": ST, + "reserved15": ST, + "cog": DE, + "reserved16": ST, + "reserved17": ST, + }, "QTMPVT": { "msgver": IN, # always 1 for this version "tow": IN, @@ -1568,6 +1635,27 @@ "hdop": DE, "pdop": DE, }, + "QTMRTCMIS": { + "msgver": IN, + "recvutc": ST, + "porttype": IN, + "portid": IN, + "msgtype": IN, + "subtype": IN, + "refstaid": IN, + "flag": HX, + "msglen": IN, + "msgnum": IN, + "satnum": IN, + "signum": IN, + "siggroup": ( + "signum", + { + "sigid": IN, + "sigsatnum": IN, + }, + ), + }, "QTMQVER": { "status": QS, "msgver": IN, @@ -1711,6 +1799,74 @@ "builddate": ST, # yyyy/mm/dd "buildtime": ST, # hh:mm:ss }, + # set and get... + "QTMCFGSTANDALONE": { + "status": QS, + "mode": IN, + "time": IN, + "timeout": IN, + "lat": DE, + "lon": DE, + "alt": DE, + }, + "QTMCFGRTKRL": { + "status": QS, + "reliability": IN, + "reserved1": IN, + "reserved2": IN, + "reserved3": IN, + }, + "QTMCFGPPS2": { + "status": QS, + "index": IN, + "enable": IN, + "duration": IN, + "mode": IN, + "reserved1": IN, + "period": IN, + "userdelay": IN, + "reserved2": IN, + "reserved3": IN, + "reserved4": IN, + "reserved5": IN, + }, + "QTMCFGPPP": { + "status": QS, + "mode": HX, + "datum": IN, + "timeout": IN, + "horstd": DE, + "verstd": DE, + }, + "QTMCFGPINALT": { + "status": QS, + "pinnum": IN, + "mode": IN, + }, + "QTMCFGEVENT": { + "status": QS, + "index": IN, + "mode": IN, + "edge": IN, + "guard": IN, + }, + "QTMCFGCNRTHD": { + "status": QS, + "cnr": DE, + }, + "QTMCFGANTENNA": { + "status": QS, + "power": IN, + "reserved": IN, + }, + "QTMLSTMSG": { + "status": QS, + "porttype": IN, + "portid": IN, + "msgname": ST, + "rate": IN, + "msgver/offset": IN, + }, # *************************************************************** # Quectel LG69T PSTM Proprietary message types # https://quectel.com/content/uploads/2024/09/quectel_lg69taaadafaiajar_gnss_protocol_specification_v1-5.pdf diff --git a/src/pynmeagps/nmeatypes_poll_prop.py b/src/pynmeagps/nmeatypes_poll_prop.py index f4d3e4f..8229bd7 100644 --- a/src/pynmeagps/nmeatypes_poll_prop.py +++ b/src/pynmeagps/nmeatypes_poll_prop.py @@ -112,4 +112,36 @@ "QTMUNIQID": {}, "QTMVEHATT": {}, "QTMVERNO": {}, + "QTMLSTMSG_CURR": {}, # TODO + "QTMLSTMSG": { + "porttype": IN, + "portid": IN, + }, # TODO + "QTMCFGSTANDALONE": { + "status": QS, + }, + "QTMCFGRTKRL": { + "status": QS, + }, + "QTMCFGPPS2": { + "status": QS, + "index": IN, + }, + "QTMCFGPPP": { + "status": QS, + }, + "QTMCFGPINALT": { + "status": QS, + "pinnum": IN, + }, + "QTMCFGEVENT": { + "status": QS, + "index": IN, + }, + "QTMCFGCNRTHD": { + "status": QS, + }, + "QTMCFGANTENNA": { + "status": QS, + }, } diff --git a/src/pynmeagps/nmeatypes_set_prop.py b/src/pynmeagps/nmeatypes_set_prop.py index d4e8858..439f90c 100644 --- a/src/pynmeagps/nmeatypes_set_prop.py +++ b/src/pynmeagps/nmeatypes_set_prop.py @@ -224,14 +224,17 @@ }, "QTMCFGAIC": NMEA_PAYLOADS_GET_PROP["QTMCFGAIC"], "QTMCFGANTDELTA": NMEA_PAYLOADS_GET_PROP["QTMCFGANTDELTA"], + "QTMCFGANTENNA": NMEA_PAYLOADS_GET_PROP["QTMCFGANTENNA"], "QTMCFGANTINF": NMEA_PAYLOADS_GET_PROP["QTMCFGANTINF"], "QTMCFGBLD": NMEA_PAYLOADS_GET_PROP["QTMCFGBLD"], + "QTMCFGCNRTHD": NMEA_PAYLOADS_GET_PROP["QTMCFGCNRTHD"], "QTMCFGCNST": NMEA_PAYLOADS_GET_PROP["QTMCFGCNST"], "QTMCFGDR": NMEA_PAYLOADS_GET_PROP["QTMCFGDR"], "QTMCFGDRHOT": NMEA_PAYLOADS_GET_PROP["QTMCFGDRHOT"], "QTMCFGDRRTD": NMEA_PAYLOADS_GET_PROP["QTMCFGDRRTD"], "QTMCFGEINSMSG": NMEA_PAYLOADS_GET_PROP["QTMCFGEINSMSG"], "QTMCFGELETHD": NMEA_PAYLOADS_GET_PROP["QTMCFGELETHD"], + "QTMCFGEVENT": NMEA_PAYLOADS_GET_PROP["QTMCFGEVENT"], "QTMCFGFIXRATE": NMEA_PAYLOADS_GET_PROP["QTMCFGFIXRATE"], "QTMCFGGEOFENCE_DIS": NMEA_PAYLOADS_GET_PROP["QTMCFGGEOFENCE_DIS"], "QTMCFGGEOFENCE_POLY": NMEA_PAYLOADS_GET_PROP["QTMCFGGEOFENCE_POLY"], @@ -249,14 +252,19 @@ "QTMCFGNMEADP": NMEA_PAYLOADS_GET_PROP["QTMCFGNMEADP"], "QTMCFGNMEATID": NMEA_PAYLOADS_GET_PROP["QTMCFGNMEATID"], "QTMCFGODO": NMEA_PAYLOADS_GET_PROP["QTMCFGODO"], + "QTMCFGPINALT": NMEA_PAYLOADS_GET_PROP["QTMCFGPINALT"], "QTMCFGPPS": NMEA_PAYLOADS_GET_PROP["QTMCFGPPS"], + "QTMCFGRTKRL": NMEA_PAYLOADS_GET_PROP["QTMCFGRTKRL"], "QTMCFGSBAS": NMEA_PAYLOADS_GET_PROP["QTMCFGSBAS"], "QTMCFGSIGGRP": NMEA_PAYLOADS_GET_PROP["QTMCFGSIGGRP"], + "QTMCFGSTANDALONE": NMEA_PAYLOADS_GET_PROP["QTMCFGSTANDALONE"], "QTMCFGPPS_DIS": { "status": QS, "ppsindex": IN, "enable": IN, # should be 0 }, + "QTMCFGPPP": NMEA_PAYLOADS_GET_PROP["QTMCFGPPP"], + "QTMCFGPPS2": NMEA_PAYLOADS_GET_PROP["QTMCFGPPS2"], "QTMCFGPROT": NMEA_PAYLOADS_GET_PROP["QTMCFGPROT"], "QTMCFGRCVRMODE": NMEA_PAYLOADS_GET_PROP["QTMCFGRCVRMODE"], "QTMCFGRSID": NMEA_PAYLOADS_GET_PROP["QTMCFGRSID"], @@ -272,7 +280,6 @@ "QTMCFGWN": NMEA_PAYLOADS_GET_PROP["QTMCFGWN"], # sets all parms for specified interface: "QTMCFGUART": NMEA_PAYLOADS_GET_PROP["QTMCFGUART"], - "QTMCFGVEHMOT": NMEA_PAYLOADS_GET_PROP["QTMCFGVEHMOT"], # sets baud rate for specified interface "QTMCFGUART_BAUD": { "status": QS, @@ -293,6 +300,7 @@ "status": QS, "baudrate": IN, }, + "QTMCFGVEHMOT": NMEA_PAYLOADS_GET_PROP["QTMCFGVEHMOT"], "QTMCOLD": {}, "QTMDEBUGOFF": {}, "QTMDEBUGON": {}, @@ -306,6 +314,49 @@ "QTMSAVEPAR": {}, "QTMSRR": {}, "QTMWARM": {}, + "QTMAIDINI": { + "postype": IN, + "pos1": DE, + "pos2": DE, + "pos3": DE, + "posacc": DE, + "timetype": IN, + "leapsec": IN, + "year": IN, + "month": IN, + "day": IN, + "hour": IN, + "minute": IN, + "second": IN, + "millisecond": IN, + "tacc_s": IN, + "reserved": ST, + }, + "QTMAIDPOS": { + "postype": IN, + "pos1": DE, + "pos2": DE, + "pos3": DE, + "posacc": DE, + }, + "QTMAIDTIME": { + "timetype": IN, + "leapsec": IN, + "year": IN, + "month": IN, + "day": IN, + "hour": IN, + "minute": IN, + "second": IN, + "millisecond": IN, + "tacc_s": IN, + "reserved": ST, + }, + "QTMCLRMSG": { + "porttype": IN, + "portid": IN, + }, + "QTMCLRMSG_CURR": {}, # *************************************************************** # Quectel LG69T PSTM Proprietary message types # https://quectel.com/content/uploads/2024/09/quectel_lg69taaadafaiajar_gnss_protocol_specification_v1-5.pdf diff --git a/tests/quectel_nmea_command.log b/tests/quectel_nmea_command.log index 272e550..caadbad 100644 --- a/tests/quectel_nmea_command.log +++ b/tests/quectel_nmea_command.log @@ -80,3 +80,16 @@ $PSTMSETPAR,32,6,0,1,0x400000*4D $PSTMINITGPS,3149.121,N,11707.883,E,0530,05,08,2022,09,44,12*5E $PSTMINITTIME,05,08,2022,09,44,12*10 $PSTMEPHEM,12,64,0f06bc34bc3437373790f40045a7ff00fcf5d522480b4bf71b00fbff8931000096126f271f869101c3870ca107afce79a763e13e360a1ce8e7003100380ff903*36 +$PQTMAIDINI,1,31.821692,117.115337,131.88,0,1,18,2023,11,10,06,05,11,636,0,0*3D +$PQTMAIDTIME,1,18,2023,11,10,06,05,11,636,0,0*67 +$PQTMAIDPOS,1,31.821692,117.115337,131.88,0*19 +$PQTMCLRMSG*1C +$PQTMCLRMSG,1,1*1C +$PQTMCFGSTANDALONE,W,1,100,86400,31.82200600,117.11544530,44.51*0C +$PQTMCFGRTKRL,W,3,0,0,0*71 +$PQTMCFGPPS2,W,1,1,100,1,1,0,1000,0,1,0,0,0*71 +$PQTMCFGPPP,W,1,2,120,0.10,0.15*68 +$PQTMCFGPINALT,W,14,1*1B +$PQTMCFGEVENT,W,1,1,1,150*68 +$PQTMCFGCNRTHD,W,10.0*15 +$PQTMCFGANTENNA,W,0,0*7E diff --git a/tests/quectel_nmea_get.log b/tests/quectel_nmea_get.log index 3e841cd..716d192 100644 --- a/tests/quectel_nmea_get.log +++ b/tests/quectel_nmea_get.log @@ -101,3 +101,6 @@ $PSTMDRSENMSG,24,3248649605,-486,1*28 $PSTMDRSENMSG,30,3248512115,299,-35,16514*02 $PSTMDRSENMSG,31,5855224,62,-119,-49*2A $PQTMSN,1,16,OK,1234567890ABCDEF*31 +$PQTMPPPNAV,1,1,1,190423.000,20241224,212681000,2346,18,1,,7,,31.45874521,117.41532415,45.1254,-6.1245,,,1.2451,2.1254,5.1242,,,9001,1.0,,78,56,,,,,,,1.2101,1.2148,0.4578,1.1547,,,45.124,,*25 +$PQTMENV,1,212681000,2236,20241224,190423.000,90,34.52,64,34,0,0,0.000,50,51,27,,,,,*55 +$PQTMRTCMIS,1,190423.412,1,1,1074,,290,04,82,1451,9,3,2,9,15,5,24,3*1C diff --git a/tests/quectel_nmea_poll.log b/tests/quectel_nmea_poll.log index f5da4df..ba19457 100644 --- a/tests/quectel_nmea_poll.log +++ b/tests/quectel_nmea_poll.log @@ -39,3 +39,14 @@ $PQTMCFGMSGRATE,R,RTCM3-107X*2B $PQTMCFGMSGRATE,R,RTCM3-1019*4C $PQTMCFGMSGRATE,R,1,1,GGA*12 $PQTMCFGMSGRATE,R,1,1,0AB2,1*4F +$PQTMCFGSTANDALONE,R*21 +$PQTMCFGRTKRL,R*77 +$PQTMCFGPPS2,R,1*58 +$PQTMCFGPPP,R*74 +$PQTMCFGPINALT,R,14*03 +$PQTMCFGANTENNA,R*7B +$PQTMCFGEVENT,R,1*75 +$PQTMCFGCNRTHD,R*23 +$PQTMCFGANTENNA,R*7B +$PQTMLSTMSG*0A +$PQTMLSTMSG,1,1*0A diff --git a/tests/quectel_nmea_response.log b/tests/quectel_nmea_response.log index 32ebd5d..a536b33 100644 --- a/tests/quectel_nmea_response.log +++ b/tests/quectel_nmea_response.log @@ -98,3 +98,12 @@ $PSTMSETPAROK,P35,L00,F02,00000001*40 $PSTMSETPAROK,P35,L00,F00,00000007*44 $PSTMINITGPSOK*40 $PSTMINITTIMEOK*11 +$PQTMCFGSTANDALONE,OK,1,100,86400,31.82200600,117.11544530,44.51*5F +$PQTMCFGRTKRL,OK,3,0,0,0*22 +$PQTMCFGPPS2,OK,1,1,100,1,1,0,1000,0,1,0,0,0*22 +$PQTMCFGPPP,OK,01,2,120,0.10,0.15*0B +$PQTMCFGPINALT,OK,14,1*48 +$PQTMCFGEVENT,OK,1,1,1,150*3B +$PQTMCFGCNRTHD,OK,10.0*46 +$PQTMCFGANTENNA,OK,0,0*2D +$PQTMLSTMSG,OK,1,1,RTCM3-107X,1,0*77 diff --git a/tests/test_quectel.py b/tests/test_quectel.py index 1ab06db..67312dc 100644 --- a/tests/test_quectel.py +++ b/tests/test_quectel.py @@ -155,6 +155,9 @@ def testNMEAQUECTELGET(self): # test proprietary Quectel LG290P GET messages "", "", "", + "", + "", + "", ) i = 0 raw = 0 @@ -164,7 +167,7 @@ def testNMEAQUECTELGET(self): # test proprietary Quectel LG290P GET messages ) for raw, parsed in nmr: if raw is not None: - # print(f'"{parsed}",') + #print(f'"{parsed}",') self.assertEqual(str(parsed), EXPECTED_RESULTS[i]) i += 1 self.assertEqual(i, len(EXPECTED_RESULTS)) @@ -212,6 +215,17 @@ def testNMEAQUECTELPOLL(self): # test proprietary Quectel LG290P POLL messages "", "", "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", ) i = 0 raw = 0 @@ -221,7 +235,7 @@ def testNMEAQUECTELPOLL(self): # test proprietary Quectel LG290P POLL messages ) for raw, parsed in nmr: if raw is not None: - # print(f'"{parsed}",') + #print(f'"{parsed}",') self.assertEqual(str(parsed), EXPECTED_RESULTS[i]) i += 1 self.assertEqual(i, len(EXPECTED_RESULTS)) @@ -312,6 +326,19 @@ def testNMEAQUECTELCOMMAND( "", "", "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", ) i = 0 raw = 0 @@ -430,6 +457,15 @@ def testNMEAQUECTELRESPONSE( "", "", "", + "", + "", + "", + "", + "", + "", + "", + "", + "", ) i = 0 raw = 0 @@ -439,7 +475,7 @@ def testNMEAQUECTELRESPONSE( ) for raw, parsed in nmr: if raw is not None: - # print(f'"{parsed}",') + #print(f'"{parsed}",') self.assertEqual(str(parsed), EXPECTED_RESULTS[i]) i += 1