Go to the documentation of this file.
13 namespace fusion_engine {
291 return "Device Lever Arm";
294 return "Device Coarse Orientation";
297 return "GNSS Lever Arm";
300 return "Output Lever Arm";
303 return "Vehicle Details";
306 return "Wheel Config";
309 return "Hardware Tick Config";
312 return "Heading Bias";
315 return "GNSS Aux Lever Arm";
318 return "Enabled GNSS Systems";
321 return "Enabled GNSS Frequency Bands";
324 return "Leap Second";
327 return "GPS Week Rollover";
330 return "Ionosphere Config";
333 return "Troposphere Config";
336 return "UART1 Baud Rate";
339 return "UART2 Baud Rate";
342 return "UART1 Diagnostic Messages Enabled";
345 return "UART2 Diagnostic Messages Enabled";
348 return "Watchdog Timer Enabled";
351 return "User Device ID";
354 return "Profiling Features Enabled";
357 return "Interface Submessage";
360 return "LBand Parameters";
363 return "Unrecognized Configuration";
371 stream <<
to_string(type) <<
" (" << (int)type <<
")";
410 return "Unrecognized Source";
419 stream <<
to_string(source) <<
" (" << (int)source <<
")";
450 return "Revert To Saved";
453 return "Revert To Default";
465 stream <<
to_string(action) <<
" (" << (int)action <<
")";
499 static constexpr uint8_t MESSAGE_VERSION = 0;
502 static constexpr uint8_t FLAG_APPLY_AND_SAVE = 0x01;
513 static constexpr uint8_t FLAG_REVERT_TO_DEFAULT = 0x02;
521 uint8_t reserved[1] = {0};
524 uint32_t config_length_bytes = 0;
539 static constexpr uint8_t MESSAGE_VERSION = 1;
547 uint8_t reserved[1] = {0};
568 static constexpr uint8_t MESSAGE_VERSION = 0;
573 uint8_t reserved[3] = {0};
599 static constexpr uint8_t MESSAGE_VERSION = 0;
605 static constexpr uint8_t FLAG_ACTIVE_DIFFERS_FROM_SAVED = 0x1;
619 uint8_t reserved[3] = {0};
622 uint32_t config_length_bytes = 0;
674 uint8_t reserved[2] = {0};
733 switch (vehicle_model) {
737 return "DATASPEED_CD4";
741 return "LEXUS_CT200H";
743 return "KIA_SORENTO";
745 return "KIA_SPORTAGE";
751 return "TESLA_MODEL_X";
753 return "TESLA_MODEL_3";
755 return "HYUNDAI_ELANTRA";
757 return "PEUGEOT_206";
765 return "LINCOLN_MKZ";
769 return "BMW_MOTORRAD";
775 return "UNRECOGNIZED";
784 stream <<
to_string(vehicle_model) <<
" (" << (int)vehicle_model <<
")";
794 uint8_t reserved[10] = {0};
797 float wheelbase_m = NAN;
800 float front_track_width_m = NAN;
803 float rear_track_width_m = NAN;
846 switch (wheel_sensor_type) {
854 return "Wheel Speed";
857 return "Vehicle Speed";
860 return "Vehicle Ticks";
874 stream <<
to_string(wheel_sensor_type) <<
" (" << (int)wheel_sensor_type
906 switch (applied_speed_type) {
911 return "Rear Wheels";
914 return "Front Wheels";
917 return "Front and Rear Wheels";
920 return "Vehicle Body";
923 return "Unrecognized";
934 stream <<
to_string(applied_speed_type) <<
" (" << (int)applied_speed_type
961 switch (steering_type) {
963 return "Unknown Steering";
966 return "Front Steering";
969 return "Front and Rear Steering";
972 return "Unrecognized";
982 stream <<
to_string(steering_type) <<
" (" << (int)steering_type <<
")";
1024 uint8_t reserved1[1] = {0};
1035 float wheel_update_interval_sec = NAN;
1051 float wheel_tick_output_interval_sec = NAN;
1060 float steering_ratio = NAN;
1069 float wheel_ticks_to_m = NAN;
1086 uint32_t wheel_tick_max_value = 0;
1097 bool wheel_ticks_signed =
false;
1107 bool wheel_ticks_always_increase =
true;
1109 uint8_t reserved2[2] = {0};
1126 switch (tick_mode) {
1130 return "RISING_EDGE";
1132 return "FALLING_EDGE";
1134 return "UNRECOGNIZED";
1143 stream <<
to_string(tick_mode) <<
" (" << (int)tick_mode <<
")";
1168 switch (tick_direction) {
1172 return "FORWARD_ACTIVE_HIGH";
1174 return "FORWARD_ACTIVE_LOW";
1176 return "UNRECOGNIZED";
1186 stream <<
to_string(tick_direction) <<
" (" << (int)tick_direction <<
")";
1234 uint8_t reserved1[2] = {0};
1240 float wheel_ticks_to_m = NAN;
1259 switch (iono_delay_model) {
1269 return "UNRECOGNIZED";
1279 stream <<
to_string(iono_delay_model) <<
" (" << (int)iono_delay_model <<
")";
1291 uint8_t reserved[3] = {0};
1308 switch (tropo_delay_model) {
1314 return "SAASTAMOINEN";
1316 return "UNRECOGNIZED";
1326 stream <<
to_string(tropo_delay_model) <<
" (" << (int)tropo_delay_model
1339 uint8_t reserved[3] = {0};
1373 return "CalibrationState";
1377 return "FilterState";
1379 return "UserConfig";
1390 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1412 static constexpr uint8_t MESSAGE_VERSION = 0;
1422 uint8_t reserved1[2] = {0};
1425 uint8_t reserved2[4] = {0};
1427 uint32_t data_length_bytes = 0;
1440 static constexpr uint8_t MESSAGE_VERSION = 0;
1450 uint8_t reserved[2] = {0};
1476 static constexpr uint8_t MESSAGE_VERSION = 3;
1479 static constexpr uint8_t FLAG_USER_CONFIG_PLATFORM_NOT_SPECIFIED = 0;
1481 static constexpr uint8_t FLAG_USER_CONFIG_PLATFORM_POSIX = 1;
1483 static constexpr uint8_t FLAG_USER_CONFIG_PLATFORM_EMBEDDED = 2;
1485 static constexpr uint8_t FLAG_USER_CONFIG_PLATFORM_EMBEDDED_SSR = 3;
1487 static constexpr uint8_t FLAG_USER_CONFIG_SSR_CLIENT = 254;
1516 uint32_t data_length_bytes = 0;
1633 return "Diagnostic Messages Enabled";
1636 return "Serial Baud Rate";
1639 return "Remote Network Address";
1642 return "Network Port";
1645 return "Interface Enabled";
1648 return "Transport Direction";
1651 return "Socket Type";
1654 return "Unrecognized Configuration";
1663 stream <<
to_string(type) <<
" (" << (int)type <<
")";
1697 return "FusionEngine";
1705 return "Unrecognized";
1714 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1823 return "Unrecognized";
1831 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1865 return "Unrecognized";
1873 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1920 return "Unrecognized";
1928 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1947 uint8_t reserved[2] = {0};
1952 : type(type), index(index) {}
1955 return type == other.
type && index == other.
index;
1959 return !(*
this == other);
1963 if (type == other.
type) {
1964 return index < other.
index;
1966 return type < other.
type;
1971 return other < *
this;
1975 return !(*
this < other);
1979 return !(*
this > other);
1988 stream <<
"[type=" << val.
type <<
", index=" << (int)val.
index <<
"]";
2061 return "P1CALSTATUS";
2071 return "PQTMVERNO_SUB";
2073 return "PQTMVER_SUB";
2077 return "Unrecognized";
2086 stream <<
to_string(val) <<
" (" << (int)val <<
")";
2192 return "INTERVAL_10_MS";
2194 return "INTERVAL_20_MS";
2196 return "INTERVAL_40_MS";
2198 return "INTERVAL_50_MS";
2200 return "INTERVAL_100_MS";
2202 return "INTERVAL_200_MS";
2204 return "INTERVAL_500_MS";
2206 return "INTERVAL_1_S";
2208 return "INTERVAL_2_S";
2210 return "INTERVAL_5_S";
2212 return "INTERVAL_10_S";
2214 return "INTERVAL_30_S";
2216 return "INTERVAL_60_S";
2220 return "Unrecognized";
2229 stream <<
to_string(val) <<
" (" << (int)val <<
")";
2278 uint8_t reserved[3] = {0};
2375 static constexpr uint8_t MESSAGE_VERSION = 0;
2378 static constexpr uint8_t FLAG_APPLY_AND_SAVE = 0x01;
2384 static constexpr uint8_t FLAG_INCLUDE_DISABLED_MESSAGES = 0x02;
2412 uint8_t reserved2[3] = {0};
2431 static constexpr uint8_t MESSAGE_VERSION = 0;
2467 static constexpr uint8_t MESSAGE_VERSION = 0;
2470 uint8_t num_interfaces = 0;
2472 uint8_t reserved1[7] = {0};
2487 static constexpr uint8_t FLAG_ACTIVE_DIFFERS_FROM_SAVED = 0x1;
2500 uint16_t message_id = 0;
2512 uint8_t reserved1[2] = {0};
2530 static constexpr uint8_t MESSAGE_VERSION = 1;
2539 uint16_t num_rates = 0;
2559 double center_frequency_hz = 1555492500.0;
2568 float search_window_hz = 2000.0;
2574 bool filter_data_by_service_id =
true;
2577 bool use_descrambler =
true;
2580 uint16_t pmp_service_id = 0x5555;
2583 uint64_t pmp_unique_word = 0xE15AE893E15AE893ull;
2586 uint16_t pmp_data_rate_bps = 4800;
2589 uint16_t descrambler_init = 0x6969;
@ INTERVAL_1_S
Output this message every second.
@ OFF
Tropospheric delay model disabled.
@ INTERVAL_5_S
Output this message every 5 seconds.
P1_CONSTEXPR_FUNC InterfaceID()=default
@ IMPORT_DATA
ImportDataMessage
@ AUTO
Select the best available ionospheric delay model.
@ ALL
Set/get the configuration for the all I/O interfaces.
@ WHEEL_SPEED
Individual speed measurements for multiple wheels, reported in meters/second.
@ FRONT_WHEELS
Front wheel speed data to be applied to the system.
ConfigurationSource
The type of a device's configuration settings.
@ INTERVAL_50_MS
Output this message every 50 milliseconds.
A 3-dimensional vector (used for lever arms, etc.).
P1_CONSTEXPR_FUNC InterfaceID(TransportType type, uint8_t index=0)
Identifier for an I/O interface.
@ FORWARD_ACTIVE_HIGH
Assume vehicle is moving forward when direction signal voltage is high, and backward when direction s...
TransportType type
The interface's transport type.
@ VEHICLE_DETAILS
Information about the vehicle including model and dimensions.
MessageType
Identifiers for the defined output message types.
@ DEVICE_LEVER_ARM
The location of the device IMU with respect to the vehicle body frame, resolved in the vehicle body f...
@ NONE
Wheel/vehicle speed data not available.
Library portability helper definitions.
@ INTERVAL_100_MS
Output this message every 100 milliseconds.
Response to a GetConfigMessage request (MessageType::CONFIG_RESPONSE, version 1.0).
@ ENABLED
Enable/disable the interface.
TropoDelayModel
The tropospheric delay model to use.
The orientation of a device with respect to the vehicle body axes.
@ UNIX
A UNIX domain socket client or server.
Hardware wheel tick encoder configuration settings.
P1_CONSTEXPR_FUNC const char * to_string(ConfigType type)
Get a human-friendly string name for the specified ConfigType.
Tropospheric delay model configuration.
VehicleModel
The make and model of the vehicle.
@ GNSS_AUX_LEVER_ARM
The location of the secondary GNSS antenna with respect to the vehicle body frame on a dual-antenna p...
@ HARDWARE_TICK_CONFIG
Indicates the mode and direction used when capturing vehicle wheel tick data from a voltage pulse on ...
@ OFF
Wheel tick capture disabled.
@ OFF
Disable output of this message.
@ REMOTE_ADDRESS
Configure the network address for a client to connect to.
@ SAASTAMOINEN
Use the Saastamoinen tropospheric model.
@ DATAGRAM
Operate in datagram mode, preserving message boundaries but not maintaining client connections (simil...
@ SUPPORTED_IO_INTERFACES
SupportedIOInterfacesMessage
@ REVERT_TO_SAVED
Revert the active configuration to previously saved values.
Response to a GetMessageRate request (MessageType::MESSAGE_RATE_RESPONSE, version 1....
@ FRONT
Front wheels are steered.
@ FALLING_EDGE
Capture a wheel tick on the falling edge of the incoming pulse.
MessageRate
The output rate for a message type on an interface.
@ INTERVAL_60_S
Output this message every 60 seconds.
@ FRONT_AND_REAR
Front and rear wheels are steered.
Information about the vehicle including model and dimensions.
@ REVERT_TO_DEFAULT
Reset the active and saved configuration to default values.
AppliedSpeedType
The type of vehicle/wheel speed measurements to be applied.
@ SAVED
Settings currently saved to persistent storage.
@ DIRECTION
Set the interface direction (client/server).
@ UNKNOWN
Steered wheels unknown.
Set the output rate for the requested message types (MessageType::SET_MESSAGE_RATE,...
I/O interface parameter configuration submessage (used when sending a SetConfigMessage or GetConfigMe...
@ SERIAL
A serial data interface (e.g.
@ SBAS
Use the SBAS ionospheric model.
Import data from the host to the device (MessageType::IMPORT_DATA, version 1.0).
@ MESSAGE_RATE_RESPONSE
MessageRateResponse
@ SAVE_CONFIG
SaveConfigMessage
@ STREAM
Operate in connection-oriented streaming mode and do not preserve message boundaries (similar to TCP)...
@ FILE
A interface that writes to a file.
P1_CONSTEXPR_FUNC bool operator<(const InterfaceID &other) const
P1_CONSTEXPR_FUNC bool operator!=(const InterfaceID &other) const
@ RISING_EDGE
Capture a wheel tick on the rising edge of the incoming pulse.
@ REAR_WHEELS
Rear wheel speed data to be applied to the system (recommended).
The base class for all message payloads.
@ VEHICLE_TICKS
A single wheel rotational angle, reported as accumulated encoder ticks.
Query the value of a user configuration parameter (MessageType::GET_CONFIG, version 1....
@ DEFAULT
Restore this message's rate back to its default value.
@ IONOSPHERE_CONFIG
Ionospheric delay model configuration.
@ INTERVAL_20_MS
Output this message every 20 milliseconds.
TickMode
The signal edge to use when capturing a wheel tick voltage signal.
@ INTERFACE_CONFIG
Change a configuration setting for a specified output interface.
@ ENABLED_GNSS_FREQUENCY_BANDS
A bitmask indicating which GNSS frequency bands are enabled.
@ LBAND_PARAMETERS
Configuration of L-band Demodulator Parameters.
@ OFF
Wheel tick direction not provided.
@ FRONT_AND_REAR_WHEELS
Front and rear wheel speed data to be applied to the system.
@ OUTPUT_LEVER_ARM
The offset of the desired output location with respect to the vehicle body frame, resolved in the veh...
GNSS signal and frequency type definitions.
Get the configured output rate for the he requested message type on the specified interface (MessageT...
Export data from the device (MessageType::EXPORT_DATA, version 1.0).
@ UDP
A UDP client or server.
@ DEVICE_COARSE_ORIENTATION
The orientation of the device IMU with respect to the vehicle body axes.
@ TCP
A TCP client or server.
@ TROPOSPHERE_CONFIG
Tropospheric delay model configuration.
uint8_t index
An identifier for the instance of this transport.
P1_CONSTEXPR_FUNC bool operator>(const InterfaceID &other) const
@ DEFAULT
Read only device defaults.
ConfigType
An identifier for the contents of a parameter configuration message.
@ GPS_WEEK_ROLLOVER
Specify a GPS legacy week rollover count override to use when converting all legacy 10-bit GPS week n...
@ WHEEL_CONFIG
Information pertaining to wheel speed/rotation measurements when wheel data is transmitted via softwa...
P1_CONSTEXPR_FUNC bool operator<=(const InterfaceID &other) const
@ GNSS_LEVER_ARM
The location of the primary GNSS antenna with respect to the vehicle body frame, resolved in the vehi...
WheelSensorType
The type of vehicle/wheel speed measurements produced by the vehicle.
@ UART2_BAUD
Configure the UART2 serial baud rate (in bits/second).
SaveAction
The type configuration save operation to be performed.
@ GET_MESSAGE_RATE
GetMessageRate
@ NONE
Speed data not applied to the system.
@ BAUD_RATE
Configure the serial baud rate (in bits/second).
@ ENABLED_GNSS_SYSTEMS
A bitmask indicating which GNSS constellations are enabled.
ConfigType config_type
The type of parameter to be configured.
Response
Command response status indicators.
A list of transport interfaces supported by the device (MessageType::SUPPORTED_IO_INTERFACES,...
@ SOCKET_TYPE
Set the UNIX domain socket type (streaming/datagram/sequenced).
@ EXPORT_DATA
ExportDataMessage
@ PROFILING_MASK
A bitmask indicating which profiling features are enabled.
@ SAVE
Save all active parameters to persistent storage.
@ UART2_OUTPUT_DIAGNOSTICS_MESSAGES
Enable/disable output of diagnostic data on UART2.
@ MAX_RATE
Alias for MessageRate::ON_CHANGE.
p1_ostream & operator<<(p1_ostream &stream, ConfigType type)
ConfigType stream operator.
TickDirection
The way to interpret an incoming voltage signal, used to indicate direction of a hardware wheel tick ...
@ ENABLE_WATCHDOG_TIMER
Enable watchdog timer to restart device after fatal errors.
An element of a MessageRateResponse message.
NmeaMessageType
Integer ID for NMEA messages.
@ INTERVAL_500_MS
Output this message every 500 milliseconds.
DataType
Type of data stored on device.
@ SET_MESSAGE_RATE
SetMessageRate
@ CURRENT
Set/get the configuration for the interface on which the command was received.
Save or reload configuration settings (MessageType::SAVE_CONFIG, version 1.0).
@ INTERVAL_10_S
Output this message every 10 seconds.
InterfaceConfigType
An identifier for the contents of a output interface configuration submessage.
@ OFF
Ionospheric delay model disabled.
#define P1_CONSTEXPR_FUNC
L-band demodulator configuration parameters.
Set a user configuration parameter (MessageType::SET_CONFIG, version 1.0).
ProtocolType
The framing protocol of a message.
@ CLIENT
A client connecting to a specified remote server.
TransportType
Type of I/O interface transport.
@ WEBSOCKET
A WebSocket client or server.
TransportDirection
The direction (client/server) for an individual interface.
@ GET_CONFIG
GetConfigMessage
@ OUTPUT_DIAGNOSTICS_MESSAGES
Enable/disable output of diagnostic data on this interface.
@ SERVER
A server listening for one or more incoming remote connections.
@ SET_CONFIG
SetConfigMessage
@ TICKS
Individual rotational angle measurements for multiple wheels, reported as accumulated encoder ticks.
@ ON_CHANGE
Output this message each time a new value is available.
@ VEHICLE_SPEED
A single value indicating the vehicle speed (in meters/second).
@ KLOBUCHAR
Use the Klobuchar ionospheric model.
@ LEAP_SECOND
Specify a UTC leap second count override value to use for all UTC time conversions.
@ ACTIVE
Active configuration currently in use by the device.
P1_CONSTEXPR_FUNC bool operator==(const InterfaceID &other) const
@ FORWARD
The vehicle is in a forward gear.
SteeringType
Indication of which of the vehicle's wheels are steered.
Point One FusionEngine output message common definitions.
Software vehicle/wheel speed measurement configuration settings.
@ INTERVAL_2_S
Output this message every 2 seconds.
@ SEQPACKET
Operate in sequenced packet mode, which is both connection-oriented and preserves message boundaries.
Ionospheric delay model configuration.
@ PLATFORM_STORAGE_DATA
PlatformStorageDataMessage
IonoDelayModel
The ionospheric delay model to use.
@ ALL
This is used for requesting the configuration for all protocols.
SocketType
The socket type specifying how data is transmitted for UNIX domain sockets.
DataVersion data_version
Version of data contents.
@ INTERVAL_30_S
Output this message every 30 seconds.
@ DEPRECATED_HEADING_BIAS
Used to set horizontal (yaw) & vertical (pitch) biases (in degrees) on a dual-antenna heading platfor...
@ AUTO
Select the best available tropospheric delay model.
@ UART1_OUTPUT_DIAGNOSTICS_MESSAGES
Enable/disable output of diagnostic data on UART1.
@ FORWARD_ACTIVE_LOW
Assume vehicle is moving forward when direction signal voltage is low, and backward when direction si...
@ INTERVAL_40_MS
Output this message every 40 milliseconds.
A struct representing the version of a data object.
@ INTERVAL_200_MS
Output this message every 200 milliseconds.
P1_CONSTEXPR_FUNC bool operator>=(const InterfaceID &other) const
@ PORT
Configure the network port.
constexpr uint16_t ALL_MESSAGES_ID
Setting message_id to this value acts as a wild card.
@ INTERVAL_10_MS
Output this message every 10 milliseconds.
@ VEHICLE_BODY
Individual vehicle speed to be applied to the system.
@ UART1_BAUD
Configure the UART1 serial baud rate (in bits/second).
@ USER_DEVICE_ID
A string for identifying a device.
@ CONFIG_RESPONSE
ConfigResponseMessage