A comprehensive toolkit for developing 3GPP LPP (LTE Positioning Protocol) clients. This project provides libraries and tools for handling SUPL (Secure User Plane Location) communication and various positioning-related message conversions.
Important
Version 4.0 introduces breaking changes from version 3.4. Please consult the Upgrade Guide before updating, particularly if you're using example-lpp.
- 3GPP LPP Client Library: Enables SUPL server communication and assistance data retrieval
- Message Converters:
- LPP to RTCM: Converts 3GPP LPP messages to RTCM format
- LPP to SPARTN: Transforms 3GPP LPP messages to SPARTN format
- LPP SSR to OSR RTCM: Handles conversion from 3GPP LPP SSR to OSR RTCM messages
- Client Demo (
example-client): Demonstrates full integration of library functionality Documentation - NTRIP Demo (
example-ntrip): NTRIP client with integrated GNSS receiver communication Documentation
The following dependencies are required:
sudo apt install g++ cmake libssl-dev ninja-buildClone the repository:
git clone [email protected]:Ericsson/SUPL-3GPP-LPP-client.git
cd SUPL-3GPP-LPP-clientConfigure the build:
mkdir build
cd build
cmake .. -GNinja -DCMAKE_BUILD_TYPE=DebugBuild the project:
ninjaEnable and run tests:
cmake .. -GNinja -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=ON
ninja
ctest --output-on-failureEnable and run fuzzing (requires Clang with libFuzzer):
cmake .. -GNinja -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=ON -DENABLE_FUZZING=ON
ninja fuzz_nmea fuzz_ubx fuzz_rtcm
./tests/fuzz_nmea ../tests/corpus/nmea -max_total_time=60
./tests/fuzz_ubx ../tests/corpus/ubx -max_total_time=60
./tests/fuzz_rtcm ../tests/corpus/rtcm -max_total_time=60The corpus directory contains seed inputs for better fuzzing coverage. New interesting inputs discovered during fuzzing are automatically added to the corpus.
Enable static analyzers during build:
cmake .. -GNinja -DENABLE_CLANG_TIDY=ON
cmake .. -GNinja -DENABLE_CPPCHECK=ON
cmake .. -GNinja -DENABLE_IWYU=ONSee LICENSE file.