1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/*
* Software Name : libits-client
* SPDX-FileCopyrightText: Copyright (c) Orange SA
* SPDX-License-Identifier: MIT
*
* This software is distributed under the MIT license,
* see the "LICENSE.txt" file for more details or https://opensource.org/license/MIT/
*
* Authors: see CONTRIBUTORS.md
*/
//! Generic IoT3 messaging and telemetry for V2X
//!
//! MQTT
//! ----
//!
//! Generic MQTT exchanges can be managed using both [MqttClient][1] to publish and subscribe and
//! [MqttRouter][2] to handle messages using different callbacks depending the [Topic][3] a message is
//! received on.
//!
//! If the `telemetry` feature is enabled:
//! - message reception and publishing will be traced[^1]
//! - the [W3C Context][4] will be injected as an MQTTv5 user property before publishing a message
//!
//! Telemetry
//! ---------
//!
//! **Available with the `telemetry` feature**
//!
//! Provides functions to send traces to an OpenTelemetry collector
//!
//! V2X
//! ---
//!
//! **Available with the `mobility` feature**
//!
//! Provides traits and functions to create applications that will listen to MQTT messages
//!
//! ### Geo routing
//!
//! **Available with the `geo_routing` feature**
//!
//! Provides topic management using queue system and quadkey positioning
//!
//! [^1]: For now, two traces are sent, but the aim is to send a single trace carrying (at least)
//! two spans: one for reception and one for publishing
//!
//! [1]: transport::mqtt::mqtt_client::MqttClient
//! [2]: transport::mqtt::mqtt_router::MqttRouter
//! [3]: transport::mqtt::topic::Topic
//! [4]: https://www.w3.org/TR/trace-context/
use ;
/// Client implementation and configuration
///
/// Provides structs to load configuration from file or bootstrap sequence and traits and functions
/// to implement V2X application
/// V2X and ETSI messages definition
/// Generic mobility structs and functions
///
/// Structs and helper functions to manipulate objects on a geodesic referential computing distance,
/// bearing, ...
///
/// Everything here is using [SI units][1]
///
/// [1]: https://en.wikipedia.org/wiki/International_System_of_Units
pub
/// MQTT and Telemetry clients implementation
/// Returns the current UTC timestamp in milliseconds