You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+5-13Lines changed: 5 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ If you're intending to make significant changes, please raise them in the [Discu
6
6
7
7
Being one of our contributors, you agree and confirm that:
8
8
9
-
* The work is all your own.
9
+
* The work is all your own. For the avoidance of doubt, this means **no AI coding agents such as Copilot**.
10
10
* Your work will be distributed under a BSD 3-Clause License once your pull request is merged.
11
11
* You submitted work fulfils or mostly fulfils our coding conventions, styles and standards.
12
12
@@ -15,29 +15,21 @@ Please help us keep our issue list small by adding fixes: #{$ISSUE_NO} to the co
15
15
## Coding conventions
16
16
17
17
* This is open source software. Code should be as simple and transparent as possible. Favour clarity over brevity.
18
-
* The code should be compatible with Python >= 3.9.
18
+
* The code should be compatible with Python >= 3.10.
19
19
* Avoid external library dependencies unless there's a compelling reason not to.
20
20
* 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.
21
21
* Code should be documented in accordance with [Sphinx](https://www.sphinx-doc.org/en/master/) docstring conventions.
22
-
* Code should formatted using [black](https://pypi.org/project/black/) (>= 24.4).
23
-
* We use and recommend [pylint](https://pypi.org/project/pylint/)(>=3.0.1) for code analysis.
24
-
* We use and recommend [bandit](https://pypi.org/project/bandit/)(>=1.7.5) for security vulnerability analysis.
22
+
* Code should formatted using [black](https://pypi.org/project/black/).
23
+
* We use and recommend [pylint](https://pypi.org/project/pylint/) for code analysis.
24
+
* We use and recommend [bandit](https://pypi.org/project/bandit/) for security vulnerability analysis.
25
25
* Commits must be [signed](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits).
26
26
27
27
## Testing
28
28
29
-
While we endeavour to test on as wide a variety of u-blox devices as possible, as a volunteer project we only have a limited number of devices available. We particularly welcome testing contributions relating to specialised devices (e.g. high precision HP, real-time kinematics RTK, automotive dead-reckoning ADR, etc.).
30
-
31
29
We use python's native pytest framework for local unit testing, complemented by the GitHub Actions automated build and testing workflow.
32
30
33
31
Please write pytest examples for new code you create and add them to the `/tests` folder following the naming convention `test_*.py`.
34
32
35
-
We test on the following platforms using a variety of u-blox devices from Generation 7 throught Generation 10:
Please send a [GitHub Pull Request to pygnssutils](https://github.com/semuconsulting/pygnssutils/pulls) with a clear list of what you've done (read more about [pull requests](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/about-pull-requests)). Please follow our coding conventions (above) and make sure all of your commits are atomic (one feature per commit).
Copy file name to clipboardExpand all lines: README.md
+27-1Lines changed: 27 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,6 +8,7 @@ pygnssutils
8
8
[gnssserver CLI](#gnssserver) |
9
9
[gnssntripclient CLI](#gnssntripclient) |
10
10
[gnssmqttclient CLI](#gnssmqttclient) |
11
+
[socketserver](#socketserver) |
11
12
[RTK Demonstration](#rtkdemo) |
12
13
[Troubleshooting](#troubleshooting) |
13
14
[Graphical Client](#gui) |
@@ -33,6 +34,7 @@ designated output stream.
33
34
1.`GNSSMQTTClient` class and its associated [`gnssmqttclient`](#gnssmqttclient) CLI utility. This implements
34
35
a simple SPARTN IP (MQTT) Client which receives SPARTN correction data from an SPARTN IP location service and (optionally) sends this to a
35
36
designated output stream.
37
+
1.`SocketServer` class based on the native Python `ThreadingTCPServer`. Capable of operating in two modes - Socket Server or NTRIP Caster. Provides two alternate client request handler classes - `ClientHandler` (HTTP) or `ClientHandlerTLS` (HTTPS).
36
38
37
39
The pygnssutils homepage is located at [https://github.com/semuconsulting/pygnssutils](https://github.com/semuconsulting/pygnssutils).
38
40
@@ -456,6 +458,31 @@ gnssmqttclient -h
456
458
457
459
Refer to the [pyspartn documentation](https://github.com/semuconsulting/pyspartn?tab=readme-ov-file#reading) for further details on decrypting encrypted (`eaf=1`) SPARTN payloads.
458
460
461
+
---
462
+
## <aname="socketserver">SocketServer</a>
463
+
464
+
```
465
+
class pygnssutils.socketserver.SocketServer(app, ntripmode, maxclients, msgqueue, **kwargs)
466
+
```
467
+
468
+
A helper class based on the native Python [`ThreadingTCPServer`](https://docs.python.org/3/library/socketserver.html) class, which streams GNSS data from an inbound message queue `msgqueue` to a maximum of `maxclients` TCP clients.
469
+
470
+
Capable of operating in either of two modes, according to the `ntripmode` argument:
471
+
1. ntripmode = 0 - Socket Server; streams incoming GNSS data to any TCP client, without authentication.
472
+
2. ntripmode = 1 - NTRIP Caster; acts as a simple NTRIP Server/Caster, streaming incoming RTCM3 data to any authenticated NTRIP client.
**NB:** HTTPS requires a valid x509 TLS certificate/key pair (in pem format) to be located at a path designated by environment variable `PYGNSSUTILS_PEMPATH`. The default path is `$HOME\pygnssutils.pem`. The following openssl command can be used to create a suitable pem file for test and demonstration purposes:
Refer to the [Sphinx API documentation](https://www.semuconsulting.com/pygnssutils/pygnssutils.html#module-pygnssutils.socket_server) for further details.
485
+
459
486
---
460
487
## <aname="rtkdemo">NTRIP RTK demonstration using `gnssserver` and `gnssntripclient`</a>
Copy file name to clipboardExpand all lines: RELEASE_NOTES.md
+13Lines changed: 13 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,9 +1,22 @@
1
1
# pygnssutils
2
2
3
+
### RELEASE 1.1.19
4
+
5
+
ENHANCEMENTS:
6
+
7
+
1. Add support for TLS connections in SocketServer. Introduces two alternative client request handler classes - ClientHandler (HTTP) or ClientHandlerTLS (HTTPS). TLS operation requires a suitable TLS certificate/key pair (in pem format) to be located at a path designated by
8
+
environment variable `PYGNSSUTILS_PEMPATH` - the default path is $HOME/pygnssutils.pem. See Sphinx documentation for details.
9
+
10
+
A self-signed pem file suitable for test and demonstration purposes can be created thus:
0 commit comments