SUPL-3GPP-LPP-client is an example client for that connects to a location server using SUPL and requests assistance data using 3GPP LPP (Release 16.4). The code contains libraries for building a custom client for your specific needs. The example client is written in C++ and is designed to be portable and easy to use. It should be sufficient to get started or use as a simple client for testing.
The source code for the ASN.1 definitions from 3GPP LPP Release 16.4 are generated by ASN.1 C (https://github.com/vlm/asn1c). All other code is in C++ and should be portable to must unix-like systems. The example client is tested on Ubuntu 20.04 and Raspberry PI OS (32-bit) with gcc-4.8.
The repository has a few examples:
- LPP - Example client that requests assistance data from a location server. It supports OSR, SSR, and AGNSS requests. The assistance data can be outputted to a file, serial port, TCP, UDP or stdout. It can also be converted to RTCM messages that can be transmitted to any GNSS receiver that supports it.
- u-blox - Example program that demonstrates how to use the u-Blox receiver library. The program takes an interface and port associated with the receiver as arguments. It will the connect, configure the u-blox to output UBX-NAV-PVT, and print all received messages to stdout.
These are the prerequisites required for building:
sudo apt install g++ cmake libssl-dev ninja-build
Building using CMake and Ninja:
cmake -S . -B build -G Ninja
cmake --build build --config Debug
After a successful build, the example executables should be located in the build
folder with a prefix of example-
. E.g., build/example-lpp
.
To verify compatibility with gcc-4.8 and older compilers, use the build script (build-with-gcc4.8.sh
), that will build the client with gcc 4.8. This help guarantee that the source code will compile on smaller devices such as a Raspberry PI or BeagleBone. This is done with the help of a docker image with the compiler preinstalled. (This requires that you have docker installed)
See LICENSE file.