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};
603 static constexpr uint8_t MESSAGE_VERSION = 0;
609 static constexpr uint8_t FLAG_ACTIVE_DIFFERS_FROM_SAVED = 0x1;
623 uint8_t reserved[3] = {0};
626 uint32_t config_length_bytes = 0;
678 uint8_t reserved[2] = {0};
739 switch (vehicle_model) {
743 return "DATASPEED_CD4";
747 return "LEXUS_CT200H";
749 return "KIA_SORENTO";
751 return "KIA_SPORTAGE";
757 return "TESLA_MODEL_X";
759 return "TESLA_MODEL_3";
761 return "HYUNDAI_ELANTRA";
763 return "PEUGEOT_206";
771 return "LINCOLN_MKZ";
775 return "BMW_MOTORRAD";
781 return "FLEXRAY_DEVICE_AUDI_ETRON";
783 return "UNRECOGNIZED";
792 stream <<
to_string(vehicle_model) <<
" (" << (int)vehicle_model <<
")";
802 uint8_t reserved[10] = {0};
805 float wheelbase_m = NAN;
808 float front_track_width_m = NAN;
811 float rear_track_width_m = NAN;
854 switch (wheel_sensor_type) {
862 return "Wheel Speed";
865 return "Vehicle Speed";
868 return "Vehicle Ticks";
882 stream <<
to_string(wheel_sensor_type) <<
" (" << (int)wheel_sensor_type
914 switch (applied_speed_type) {
919 return "Rear Wheels";
922 return "Front Wheels";
925 return "Front and Rear Wheels";
928 return "Vehicle Body";
931 return "Unrecognized";
942 stream <<
to_string(applied_speed_type) <<
" (" << (int)applied_speed_type
969 switch (steering_type) {
971 return "Unknown Steering";
974 return "Front Steering";
977 return "Front and Rear Steering";
980 return "Unrecognized";
990 stream <<
to_string(steering_type) <<
" (" << (int)steering_type <<
")";
1032 uint8_t reserved1[1] = {0};
1043 float wheel_update_interval_sec = NAN;
1059 float wheel_tick_output_interval_sec = NAN;
1068 float steering_ratio = NAN;
1077 float wheel_ticks_to_m = NAN;
1094 uint32_t wheel_tick_max_value = 0;
1105 bool wheel_ticks_signed =
false;
1115 bool wheel_ticks_always_increase =
true;
1117 uint8_t reserved2[2] = {0};
1134 switch (tick_mode) {
1138 return "RISING_EDGE";
1140 return "FALLING_EDGE";
1142 return "UNRECOGNIZED";
1151 stream <<
to_string(tick_mode) <<
" (" << (int)tick_mode <<
")";
1176 switch (tick_direction) {
1180 return "FORWARD_ACTIVE_HIGH";
1182 return "FORWARD_ACTIVE_LOW";
1184 return "UNRECOGNIZED";
1194 stream <<
to_string(tick_direction) <<
" (" << (int)tick_direction <<
")";
1242 uint8_t reserved1[2] = {0};
1248 float wheel_ticks_to_m = NAN;
1267 switch (iono_delay_model) {
1277 return "UNRECOGNIZED";
1287 stream <<
to_string(iono_delay_model) <<
" (" << (int)iono_delay_model <<
")";
1299 uint8_t reserved[3] = {0};
1316 switch (tropo_delay_model) {
1322 return "SAASTAMOINEN";
1324 return "UNRECOGNIZED";
1334 stream <<
to_string(tropo_delay_model) <<
" (" << (int)tropo_delay_model
1347 uint8_t reserved[3] = {0};
1381 return "CalibrationState";
1385 return "FilterState";
1387 return "UserConfig";
1398 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1420 static constexpr uint8_t MESSAGE_VERSION = 0;
1430 uint8_t reserved1[2] = {0};
1433 uint8_t reserved2[4] = {0};
1435 uint32_t data_length_bytes = 0;
1448 static constexpr uint8_t MESSAGE_VERSION = 0;
1458 uint8_t reserved[2] = {0};
1484 static constexpr uint8_t MESSAGE_VERSION = 3;
1487 static constexpr uint8_t FLAG_USER_CONFIG_PLATFORM_NOT_SPECIFIED = 0;
1489 static constexpr uint8_t FLAG_USER_CONFIG_PLATFORM_POSIX = 1;
1491 static constexpr uint8_t FLAG_USER_CONFIG_PLATFORM_EMBEDDED = 2;
1493 static constexpr uint8_t FLAG_USER_CONFIG_PLATFORM_EMBEDDED_SSR = 3;
1495 static constexpr uint8_t FLAG_USER_CONFIG_SSR_CLIENT = 254;
1524 uint32_t data_length_bytes = 0;
1641 return "Diagnostic Messages Enabled";
1644 return "Serial Baud Rate";
1647 return "Remote Network Address";
1650 return "Network Port";
1653 return "Interface Enabled";
1656 return "Transport Direction";
1659 return "Socket Type";
1662 return "Unrecognized Configuration";
1671 stream <<
to_string(type) <<
" (" << (int)type <<
")";
1705 return "FusionEngine";
1713 return "Unrecognized";
1722 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1831 return "Unrecognized";
1839 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1873 return "Unrecognized";
1881 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1928 return "Unrecognized";
1936 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1955 uint8_t reserved[2] = {0};
1960 : type(type), index(index) {}
1963 return type == other.
type && index == other.
index;
1967 return !(*
this == other);
1971 if (type == other.
type) {
1972 return index < other.
index;
1974 return type < other.
type;
1979 return other < *
this;
1983 return !(*
this < other);
1987 return !(*
this > other);
1996 stream <<
"[type=" << val.
type <<
", index=" << (int)val.
index <<
"]";
2069 return "P1CALSTATUS";
2079 return "PQTMVERNO_SUB";
2081 return "PQTMVER_SUB";
2085 return "Unrecognized";
2094 stream <<
to_string(val) <<
" (" << (int)val <<
")";
2200 return "INTERVAL_10_MS";
2202 return "INTERVAL_20_MS";
2204 return "INTERVAL_40_MS";
2206 return "INTERVAL_50_MS";
2208 return "INTERVAL_100_MS";
2210 return "INTERVAL_200_MS";
2212 return "INTERVAL_500_MS";
2214 return "INTERVAL_1_S";
2216 return "INTERVAL_2_S";
2218 return "INTERVAL_5_S";
2220 return "INTERVAL_10_S";
2222 return "INTERVAL_30_S";
2224 return "INTERVAL_60_S";
2228 return "Unrecognized";
2237 stream <<
to_string(val) <<
" (" << (int)val <<
")";
2286 uint8_t reserved[3] = {0};
2383 static constexpr uint8_t MESSAGE_VERSION = 0;
2386 static constexpr uint8_t FLAG_APPLY_AND_SAVE = 0x01;
2392 static constexpr uint8_t FLAG_INCLUDE_DISABLED_MESSAGES = 0x02;
2420 uint8_t reserved2[3] = {0};
2439 static constexpr uint8_t MESSAGE_VERSION = 0;
2475 static constexpr uint8_t MESSAGE_VERSION = 0;
2478 uint8_t num_interfaces = 0;
2480 uint8_t reserved1[7] = {0};
2495 static constexpr uint8_t FLAG_ACTIVE_DIFFERS_FROM_SAVED = 0x1;
2508 uint16_t message_id = 0;
2520 uint8_t reserved1[2] = {0};
2538 static constexpr uint8_t MESSAGE_VERSION = 1;
2547 uint16_t num_rates = 0;
2567 double center_frequency_hz = 1555492500.0;
2576 float search_window_hz = 2000.0;
2582 bool filter_data_by_service_id =
true;
2585 bool use_descrambler =
true;
2588 uint16_t pmp_service_id = 0x5555;
2591 uint64_t pmp_unique_word = 0xE15AE893E15AE893ull;
2594 uint16_t pmp_data_rate_bps = 4800;
2597 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
@ FLEXRAY_DEVICE_AUDI_ETRON
@ 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