Skip to content

Ericsson/SUPL-3GPP-LPP-client

Repository files navigation

SUPL 3GPP LPP client

version license

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.

Features

Core Libraries

  • 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

Example Applications

  • Client Demo (example-client): Demonstrates full integration of library functionality Documentation
  • NTRIP Demo (example-ntrip): NTRIP client with integrated GNSS receiver communication Documentation

Getting Started

Prerequisites

The following dependencies are required:

sudo apt install g++ cmake libssl-dev ninja-build

Installation

Clone the repository:

git clone [email protected]:Ericsson/SUPL-3GPP-LPP-client.git
cd SUPL-3GPP-LPP-client

Build

Configure the build:

mkdir build
cd build
cmake .. -GNinja -DCMAKE_BUILD_TYPE=Debug

Build the project:

ninja

Testing

Enable and run tests:

cmake .. -GNinja -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=ON
ninja
ctest --output-on-failure

Fuzzing

Enable 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=60

The corpus directory contains seed inputs for better fuzzing coverage. New interesting inputs discovered during fuzzing are automatically added to the corpus.

Static Analysis (Optional)

Enable static analyzers during build:

cmake .. -GNinja -DENABLE_CLANG_TIDY=ON
cmake .. -GNinja -DENABLE_CPPCHECK=ON
cmake .. -GNinja -DENABLE_IWYU=ON

License

See LICENSE file.

About

This project is a set of libraries, examples and tools to facilitate the development of 3GPP LPP clients.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 5