UP2DATE CLIENT C++ Library
INTRODUCTION
RITMS UP2DATE is a cloud ready solution for unified software and firmware management. Use this for implementing lifecycle management for the full stack of drivers and firmware of connected devices.
RITMS UP2DATE is based on open and worldwide adopted building blocks, the most important is Eclipse Hawkbit which provides open and flexible Direct Device Integration (DDI) API and Management API.
RITMS UP2DATE extends Eclipse Hawkbit API with zero-cost maintenance device provisioning based on X509 certificates. The Public Key Infrastructure deployed to cloud governs digital certificates to secure end-to-end communications. Devices are automatically provisioned to connect the update service in a secure way.
This C++ client library is a reference implementation of RITMS UP2DATE API for connected constrained devices.
QUICK START
- Contact RITMS UP2DATE to get access and keys for a tenant service deployed in a cloud.
- Using provided (or generated)
client.conf
docker run --rm -v "$(pwd)/client.conf:/opt/client.conf" rtsoft/up2date_cpp:latest
in Windows Command Line (cmd):
docker run --rm -v "%cd%/client.conf:/opt/client.conf" rtsoft/up2date_cpp:latest
- Log in UP2DATE Management UI, upload a firmware bundle and assign it to the device.
BUILDING CUSTOMIZED CLIENT
git clone https://github.com/rtsoft-gmbh/up2date-cpp.git
Finally use Visual Studio Code Remote-Containers to build and develop in dedicated pre-configured contanerized environment.
if you do not use Visual Studio Code environment install dependencies and then run cmake:
cd up2date-cpp
[path to vcpkg]/vcpkg install
mkdir build
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=[path to vcpkg]/scripts/buildsystems/vcpkg.cmake
cd build && make
CONFIGURATION
To connect RITMS UP2DATE cloud service the device must be configured with 1. X509 Device Provisioning Certificate. 2. Provisioning endpoint (API URL and API token)
The example provides a ready to start implementation of a client simulator, it uses a single client.conf
containing all configuration data:
To prepare
client.conf
file put device certificate tocert
directory and run:
./mkconfig.sh -c cert/my-controller.crt > client.conf
For Tenant Owners
(assume tenant.crt
, tenant.key
, password
are in cert
) create certificates for each device:
./gen_cert.sh -n my-controller-1
./gen_cert.sh -n my-controller-2
...
delete .key
files and deliver my-controller-X.crt
to each device.
WARNING: Keep tenant key-pair (
tenant.crt
,tenant.key
) in a secret place and do not storepassword
permanently along with key-pair!