diff --git a/.github/workflows/checkpr.yml b/.github/workflows/checkpr.yml index 09adb5d..7b476c0 100644 --- a/.github/workflows/checkpr.yml +++ b/.github/workflows/checkpr.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.8, 3.9, "3.10", "3.11", "3.12", "3.13.0-beta.3"] + python-version: [3.9, "3.10", "3.11", "3.12", "3.13.0-rc.3"] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index cdd8c2d..a48e399 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.8, 3.9, "3.10", "3.11", "3.12", "3.13.0-beta.3"] + python-version: [3.9, "3.10", "3.11", "3.12", "3.13.0-rc.3"] steps: - uses: actions/checkout@v4 diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 0000000..c4dc76f --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,34 @@ +# Read the Docs configuration file for Sphinx projects +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +# Set the OS, Python version and other tools you might need +build: + os: ubuntu-22.04 + tools: + python: "3.12" + # You can also specify other tool versions: + # nodejs: "20" + # rust: "1.70" + # golang: "1.20" + +# Build documentation in the "docs/" directory with Sphinx +sphinx: + configuration: docs/conf.py + # You can configure Sphinx to use a different builder, for instance use the dirhtml builder for simpler URLs + # builder: "dirhtml" + # Fail on all warnings to avoid broken references + # fail_on_warning: true +# Optionally build your docs in additional formats such as PDF and ePub +# formats: +# - pdf +# - epub + +# Optional but recommended, declare the Python requirements required +# to build your documentation +# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html +python: + install: + - requirements: docs/requirements.txt diff --git a/.vscode/settings.json b/.vscode/settings.json index edcec39..c6945a1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,5 +4,5 @@ "editor.formatOnSave": true, "modulename": "${workspaceFolderBasename}", "distname": "${workspaceFolderBasename}", - "moduleversion": "1.2.46", + "moduleversion": "1.2.47", } \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1ad67b6..0d4daaa 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,7 +17,7 @@ If you're adding or amending UBX payload definitions or configuration database k ## Coding conventions * This is open source software. Code should be as simple and transparent as possible. Favour clarity over brevity. -* The code should be compatible with Python >= 3.8. +* The code should be compatible with Python >= 3.9. * The core code should be as generic and reusable as possible. We endeavour to limit the amount of processing dedicated to specific UBX message types, though this is sometimes unavoidable. * Avoid external library dependencies unless there's a compelling reason not to. * We use and recommend [Visual Studio Code](https://code.visualstudio.com/) with the [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python) for development and testing. @@ -37,7 +37,7 @@ Please write unitttest examples for new code you create and add them to the `/te We test on the following platforms using a variety of u-blox devices from Generation 7 throught Generation 10: * Windows 11 -* MacOS (Ventura & Sonoma, Intel & Apple Silicon) +* MacOS (Intel & Apple Silicon) * Linux (Ubuntu 22.04 LTS Jammy Jellyfish, 24.04 LTS Noble Numbat) * Raspberry Pi OS (32-bit & 64-bit) diff --git a/README.md b/README.md index 093ddd9..7520c7f 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ This is an independent project and we have no affiliation whatsoever with u-blox The library implements a comprehensive set of inbound (SET/POLL) and outbound (GET) messages for u-blox GPS/GNSS devices from [generation 6 through generation 10](https://www.u-blox.com/en/positioning-chips-and-modules), but is readily [extensible](#extensibility). Refer to `UBX_MSGIDS` in [ubxtypes_core.py](https://github.com/semuconsulting/pyubx2/blob/master/src/pyubx2/ubxtypes_core.py) for the complete dictionary of messages currently supported. UBX protocol information sourced from public domain u-blox Interface Specifications © 2013-2021, u-blox AG. -Sphinx API Documentation in HTML format is available at [https://www.semuconsulting.com/pyubx2](https://www.semuconsulting.com/pyubx2). +Sphinx API Documentation in HTML format is available at [Read the Docs](https://pyubx2.readthedocs.io/). Contributions welcome - please refer to [CONTRIBUTING.MD](https://github.com/semuconsulting/pyubx2/blob/master/CONTRIBUTING.md). Feel free to discuss any proposed changes beforehand in the [Discussion Channel](https://github.com/semuconsulting/pyubx2/discussions/categories/ideas). @@ -49,7 +49,7 @@ Contributions welcome - please refer to [CONTRIBUTING.MD](https://github.com/sem [![PyPI version](https://img.shields.io/pypi/v/pyubx2.svg?style=flat)](https://pypi.org/project/pyubx2/) ![PyPI downloads](https://img.shields.io/pypi/dm/pyubx2.svg?style=flat) -`pyubx2` is compatible with Python 3.8 - 3.13 and has no third-party library dependencies. +`pyubx2` is compatible with Python 3.9 - 3.13 and has no third-party library dependencies. In the following, `python3` & `pip` refer to the Python 3 executables. You may need to substitute `python` for `python3`, depending on your particular environment (*on Windows it's generally `python`*). diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 1ce5735..2184b28 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,5 +1,12 @@ # pyubx2 Release Notes +### RELEASE 1.2.47 + +ENHANCEMENTS: + +1. Add 37 additional config database keys for F9P HPG 1.50 (FYI UBX NAV-TIMETRUSTED message type 0x0164 added in this firmware version, but definition not yet publicly documented). +1. Drop active support for Python 3.8, which is now End of Life. + ### RELEASE 1.2.46 ENHANCEMENTS: diff --git a/docs/conf.py b/docs/conf.py index fdb7aef..fa5cb36 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -56,7 +56,20 @@ html_static_path = ["_static"] html_last_updated_fmt = "%b %d %Y" html_theme_options = { - "display_version": True, + "logo_only": False, + "prev_next_buttons_location": "bottom", + "style_external_links": False, + "vcs_pageview_mode": "", + "style_nav_header_background": "white", + "flyout_display": "hidden", + "version_selector": True, + "language_selector": True, + # Toc options + "collapse_navigation": True, + "sticky_navigation": True, + "navigation_depth": 4, + "includehidden": True, + "titles_only": False, } autodoc_default_options = { diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 0000000..4170c03 --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1 @@ +sphinx-rtd-theme \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 5b9c87f..415ed60 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,10 +7,10 @@ name = "pyubx2" authors = [{ name = "semuadmin", email = "semuadmin@semuconsulting.com" }] maintainers = [{ name = "semuadmin", email = "semuadmin@semuconsulting.com" }] description = "UBX protocol parser and generator" -version = "1.2.46" +version = "1.2.47" license = { file = "LICENSE" } readme = "README.md" -requires-python = ">=3.8" +requires-python = ">=3.9" classifiers = [ "Operating System :: OS Independent", "Development Status :: 5 - Production/Stable", @@ -22,7 +22,6 @@ classifiers = [ "Intended Audience :: Science/Research", "Intended Audience :: End Users/Desktop", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", @@ -34,11 +33,11 @@ classifiers = [ "Topic :: Scientific/Engineering :: GIS", ] -dependencies = ["pynmeagps >= 1.0.42", "pyrtcm >= 1.1.1"] +dependencies = ["pynmeagps >= 1.0.43", "pyrtcm >= 1.1.2"] [project.urls] homepage = "https://github.com/semuconsulting/pyubx2" -documentation = "https://www.semuconsulting.com/pyubx2/" +documentation = "https://pyubx2.readthedocs.io/" repository = "https://github.com/semuconsulting/pyubx2" changelog = "https://github.com/semuconsulting/pyubx2/blob/master/RELEASE_NOTES.md" @@ -56,10 +55,10 @@ test = [ ] [tool.black] -target-version = ['py38'] +target-version = ['py39'] [tool.isort] -py_version = 38 +py_version = 39 profile = "black" [tool.bandit] @@ -70,7 +69,7 @@ skips = [] jobs = 0 reports = "y" recursive = "y" -py-version = "3.8" +py-version = "3.9" fail-under = "9.8" fail-on = "E,F" clear-cache-post-run = "y" diff --git a/src/pyubx2/_version.py b/src/pyubx2/_version.py index c30ef68..08d072f 100644 --- a/src/pyubx2/_version.py +++ b/src/pyubx2/_version.py @@ -8,4 +8,4 @@ :license: BSD 3-Clause """ -__version__ = "1.2.46" +__version__ = "1.2.47" diff --git a/src/pyubx2/ubxtypes_configdb.py b/src/pyubx2/ubxtypes_configdb.py index bfce9f3..5342413 100644 --- a/src/pyubx2/ubxtypes_configdb.py +++ b/src/pyubx2/ubxtypes_configdb.py @@ -90,6 +90,9 @@ "CFG_BATCH_WARNTHRS": (0x30260016, U2), "CFG_BDS_USE_GEO_PRN": (0x10340014, L), "CFG_BDS_USE_PRN_1_TO_5": (0x10340014, L), # aka CFG_BDS_USE_GEO_PRN + "CFG_GAL_OSNMA_MINTAGLENGTH": (0x20350007, U1), + "CFG_GAL_OSNMA_TIMESYNC": (0x10350009, L), + "CFG_GAL_USE_OSNMA": (0x10350005, L), "CFG_GEOFENCE_CONFLVL": (0x20240011, E1), "CFG_GEOFENCE_FENCE1_LAT": (0x40240021, I4), "CFG_GEOFENCE_FENCE1_LON": (0x40240022, I4), @@ -689,6 +692,11 @@ "CFG_MSGOUT_UBX_NAV_TIMEQZSS_UART1": (0x20910387, U1), "CFG_MSGOUT_UBX_NAV_TIMEQZSS_UART2": (0x20910388, U1), "CFG_MSGOUT_UBX_NAV_TIMEQZSS_USB": (0x20910389, U1), + "CFG_MSGOUT_UBX_NAV_TIMETRUSTED_I2C": (0x209103A8, U1), + "CFG_MSGOUT_UBX_NAV_TIMETRUSTED_SPI": (0x209103AC, U1), + "CFG_MSGOUT_UBX_NAV_TIMETRUSTED_UART1": (0x209103A9, U1), + "CFG_MSGOUT_UBX_NAV_TIMETRUSTED_UART2": (0x209103AA, U1), + "CFG_MSGOUT_UBX_NAV_TIMETRUSTED_USB": (0x209103AB, U1), "CFG_MSGOUT_UBX_NAV_TIMEUTC_I2C": (0x2091005B, U1), "CFG_MSGOUT_UBX_NAV_TIMEUTC_SPI": (0x2091005F, U1), "CFG_MSGOUT_UBX_NAV_TIMEUTC_UART1": (0x2091005C, U1), @@ -921,6 +929,11 @@ "CFG_MSGOUT_UBX_SEC_ECSIGN_UART1": (0x2091034B, U1), "CFG_MSGOUT_UBX_SEC_ECSIGN_UART2": (0x2091034C, U1), "CFG_MSGOUT_UBX_SEC_ECSIGN_USB": (0x2091034D, U1), + "CFG_MSGOUT_UBX_SEC_OSNMA_I2C": (0x209106CA, U1), + "CFG_MSGOUT_UBX_SEC_OSNMA_SPI": (0x209106CE, U1), + "CFG_MSGOUT_UBX_SEC_OSNMA_UART1": (0x209106CB, U1), + "CFG_MSGOUT_UBX_SEC_OSNMA_UART2": (0x209106CC, U1), + "CFG_MSGOUT_UBX_SEC_OSNMA_USB": (0x209106CD, U1), "CFG_MSGOUT_UBX_SEC_SIG_I2C": (0x20910634, U1), "CFG_MSGOUT_UBX_SEC_SIG_SPI": (0x20910638, U1), "CFG_MSGOUT_UBX_SEC_SIG_UART1": (0x20910635, U1), @@ -951,6 +964,7 @@ "CFG_MSGOUT_UBX_TIM_VRFY_UART1": (0x20910093, U1), "CFG_MSGOUT_UBX_TIM_VRFY_UART2": (0x20910094, U1), "CFG_MSGOUT_UBX_TIM_VRFY_USB": (0x20910095, U1), + "CFG_NAV2_NAVSPG_ONLY_AUTHDATA": (0x10170003, L), "CFG_NAV2_OUT_ENABLED": (0x10170001, L), "CFG_NAV2_SBAS_USE_INTEGRITY": (0x10170002, L), "CFG_NAVHPG_DGNSSMODE": (0x20140011, E1), @@ -992,6 +1006,8 @@ "CFG_NAVSPG_INFIL_MINSVS": (0x201100A1, U1), "CFG_NAVSPG_INFIL_NCNOTHRS": (0x201100AA, U1), "CFG_NAVSPG_INIFIX3D": (0x10110013, L), + "CFG_NAVSPG_MAX_TIMETRUSTED_ACC": (0x301100DE, U2), + "CFG_NAVSPG_ONLY_AUTHDATA": (0x101100DD, L), "CFG_NAVSPG_OUTFIL_FACC": (0x301100B5, U2), "CFG_NAVSPG_OUTFIL_PACC": (0x301100B3, U2), "CFG_NAVSPG_OUTFIL_PDOP": (0x301100B1, U2), @@ -1103,6 +1119,7 @@ "CFG_SEC_CFG_LOCK_UNLOCKGRP2": (0x30F6000B, U2), "CFG_SEC_CFG_LOCK": (0x10F60009, L), "CFG_SEC_JAMDET_SENSITIVITY_HI": (0x10F60051, L), + "CFG_SEC_SPOOFDET_SIM_SIG_DIS": (0x10F6005D, L), "CFG_SFCORE_HNR_RATE": (0x2008001A, U1), "CFG_SFCORE_USE_SF": (0x10080001, L), "CFG_SFIMU_ACCEL_ACCURACY": (0x30060018, U2), diff --git a/src/pyubx2/ubxtypes_core.py b/src/pyubx2/ubxtypes_core.py index 7b0b0a9..343bc99 100644 --- a/src/pyubx2/ubxtypes_core.py +++ b/src/pyubx2/ubxtypes_core.py @@ -341,6 +341,7 @@ b"\x01\x26": "NAV-TIMELS", b"\x01\x63": "NAV-TIMENAVIC", b"\x01\x27": "NAV-TIMEQZSS", + # b"\x01\x64": "NAV-TIMETRUSTED", # not publicly documented b"\x01\x21": "NAV-TIMEUTC", b"\x01\x11": "NAV-VELECEF", b"\x01\x12": "NAV-VELNED", diff --git a/src/pyubx2/ubxtypes_get.py b/src/pyubx2/ubxtypes_get.py index d98ddf9..f3941eb 100644 --- a/src/pyubx2/ubxtypes_get.py +++ b/src/pyubx2/ubxtypes_get.py @@ -2912,6 +2912,15 @@ ), "tAcc": U4, }, + # nominal definition, excluded from public HPG 1.50 interface manual: + # "NAV-TIMETRUSTED": { + # "group": ( + # "None", + # { + # "data": X1, + # }, + # ), + # }, "NAV-TIMEUTC": { "iTOW": U4, "tAcc": U4,