Go to the documentation of this file.
13 namespace fusion_engine {
261 return "Device Lever Arm";
264 return "Device Coarse Orientation";
267 return "GNSS Lever Arm";
270 return "Output Lever Arm";
273 return "Vehicle Details";
276 return "Wheel Config";
279 return "Hardware Tick Config";
282 return "Heading Bias";
285 return "Enabled GNSS Systems";
288 return "Enabled GNSS Frequency Bands";
291 return "Leap Second";
294 return "GPS Week Rollover";
297 return "Ionosphere Config";
300 return "Troposphere Config";
303 return "UART1 Baud Rate";
306 return "UART2 Baud Rate";
309 return "UART1 Diagnostic Messages Enabled";
312 return "UART2 Diagnostic Messages Enabled";
315 return "Watchdog Timer Enabled";
318 return "User Device ID";
321 return "Interface Submessage";
324 return "LBand Parameters";
327 return "Unrecognized Configuration";
335 stream <<
to_string(type) <<
" (" << (int)type <<
")";
446 return "Diagnostic Messages Enabled";
449 return "Serial Baud Rate";
452 return "Remote Network Address";
455 return "Network Port";
458 return "Interface Enabled";
461 return "Transport Direction";
464 return "Socket Type";
467 return "Unrecognized Configuration";
476 stream <<
to_string(type) <<
" (" << (int)type <<
")";
515 return "Unrecognized Source";
524 stream <<
to_string(source) <<
" (" << (int)source <<
")";
555 return "Revert To Saved";
558 return "Revert To Default";
570 stream <<
to_string(action) <<
" (" << (int)action <<
")";
598 static constexpr uint8_t MESSAGE_VERSION = 0;
601 static constexpr uint8_t FLAG_APPLY_AND_SAVE = 0x01;
612 static constexpr uint8_t FLAG_REVERT_TO_DEFAULT = 0x02;
620 uint8_t reserved[1] = {0};
623 uint32_t config_length_bytes = 0;
646 static constexpr uint8_t MESSAGE_VERSION = 1;
654 uint8_t reserved[1] = {0};
675 static constexpr uint8_t MESSAGE_VERSION = 0;
680 uint8_t reserved[3] = {0};
706 static constexpr uint8_t MESSAGE_VERSION = 0;
712 static constexpr uint8_t FLAG_ACTIVE_DIFFERS_FROM_SAVED = 0x1;
726 uint8_t reserved[3] = {0};
729 uint32_t config_length_bytes = 0;
784 uint8_t reserved[2] = {0};
842 switch (vehicle_model) {
846 return "DATASPEED_CD4";
850 return "LEXUS_CT200H";
852 return "KIA_SORENTO";
854 return "KIA_SPORTAGE";
860 return "TESLA_MODEL_X";
862 return "TESLA_MODEL_3";
864 return "HYUNDAI_ELANTRA";
866 return "PEUGEOT_206";
872 return "LINCOLN_MKZ";
876 return "BMW_MOTORRAD";
882 return "UNRECOGNIZED";
891 stream <<
to_string(vehicle_model) <<
" (" << (int)vehicle_model <<
")";
901 uint8_t reserved[10] = {0};
904 float wheelbase_m = NAN;
907 float front_track_width_m = NAN;
910 float rear_track_width_m = NAN;
953 switch (wheel_sensor_type) {
961 return "Wheel Speed";
964 return "Vehicle Speed";
967 return "Vehicle Ticks";
981 stream <<
to_string(wheel_sensor_type) <<
" (" << (int)wheel_sensor_type
1013 switch (applied_speed_type) {
1018 return "Rear Wheels";
1021 return "Front Wheels";
1024 return "Front and Rear Wheels";
1027 return "Vehicle Body";
1030 return "Unrecognized";
1041 stream <<
to_string(applied_speed_type) <<
" (" << (int)applied_speed_type
1068 switch (steering_type) {
1070 return "Unknown Steering";
1073 return "Front Steering";
1076 return "Front and Rear Steering";
1079 return "Unrecognized";
1089 stream <<
to_string(steering_type) <<
" (" << (int)steering_type <<
")";
1131 uint8_t reserved1[1] = {0};
1142 float wheel_update_interval_sec = NAN;
1158 float wheel_tick_output_interval_sec = NAN;
1167 float steering_ratio = NAN;
1176 float wheel_ticks_to_m = NAN;
1193 uint32_t wheel_tick_max_value = 0;
1204 bool wheel_ticks_signed =
false;
1214 bool wheel_ticks_always_increase =
true;
1216 uint8_t reserved2[2] = {0};
1233 switch (tick_mode) {
1237 return "RISING_EDGE";
1239 return "FALLING_EDGE";
1241 return "UNRECOGNIZED";
1250 stream <<
to_string(tick_mode) <<
" (" << (int)tick_mode <<
")";
1275 switch (tick_direction) {
1279 return "FORWARD_ACTIVE_HIGH";
1281 return "FORWARD_ACTIVE_LOW";
1283 return "UNRECOGNIZED";
1293 stream <<
to_string(tick_direction) <<
" (" << (int)tick_direction <<
")";
1341 uint8_t reserved1[2] = {0};
1347 float wheel_ticks_to_m = NAN;
1377 float horizontal_bias_deg = NAN;
1389 float vertical_bias_deg = NAN;
1408 switch (iono_delay_model) {
1418 return "UNRECOGNIZED";
1428 stream <<
to_string(iono_delay_model) <<
" (" << (int)iono_delay_model <<
")";
1440 uint8_t reserved[3] = {0};
1457 switch (tropo_delay_model) {
1463 return "SAASTAMOINEN";
1465 return "UNRECOGNIZED";
1475 stream <<
to_string(tropo_delay_model) <<
" (" << (int)tropo_delay_model
1488 uint8_t reserved[3] = {0};
1499 double center_frequency_hz = 1555492500.0;
1508 float search_window_hz = 2000.0;
1514 bool filter_data_by_service_id =
true;
1517 bool use_descrambler =
true;
1520 uint16_t pmp_service_id = 0x5555;
1523 uint64_t pmp_unique_word = 0xE15AE893E15AE893ull;
1526 uint16_t pmp_data_rate_bps = 4800;
1529 uint16_t descrambler_init = 0x6969;
1568 return "FusionEngine";
1576 return "Unrecognized";
1585 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1693 return "Unrecognized";
1701 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1734 return "Unrecognized";
1742 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1788 return "Unrecognized";
1796 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1814 uint8_t reserved[2] = {0};
1819 : type(type), index(index) {}
1822 return type == other.
type && index == other.
index;
1826 return !(*
this == other);
1830 if (type == other.
type) {
1831 return index < other.
index;
1833 return type < other.
type;
1838 return other < *
this;
1842 return !(*
this < other);
1846 return !(*
this > other);
1855 stream <<
"[type=" << val.
type <<
", index=" << (int)val.
index <<
"]";
1924 return "P1CALSTATUS";
1934 return "PQTMVERNO_SUB";
1936 return "PQTMVER_SUB";
1940 return "Unrecognized";
1949 stream <<
to_string(val) <<
" (" << (int)val <<
")";
2054 return "INTERVAL_10_MS";
2056 return "INTERVAL_20_MS";
2058 return "INTERVAL_40_MS";
2060 return "INTERVAL_50_MS";
2062 return "INTERVAL_100_MS";
2064 return "INTERVAL_200_MS";
2066 return "INTERVAL_500_MS";
2068 return "INTERVAL_1_S";
2070 return "INTERVAL_2_S";
2072 return "INTERVAL_5_S";
2074 return "INTERVAL_10_S";
2076 return "INTERVAL_30_S";
2078 return "INTERVAL_60_S";
2082 return "Unrecognized";
2091 stream <<
to_string(val) <<
" (" << (int)val <<
")";
2190 static constexpr uint8_t MESSAGE_VERSION = 0;
2193 static constexpr uint8_t FLAG_APPLY_AND_SAVE = 0x01;
2199 static constexpr uint8_t FLAG_INCLUDE_DISABLED_MESSAGES = 0x02;
2227 uint8_t reserved2[3] = {0};
2246 static constexpr uint8_t MESSAGE_VERSION = 0;
2282 static constexpr uint8_t MESSAGE_VERSION = 0;
2285 uint8_t num_interfaces = 0;
2287 uint8_t reserved1[7] = {0};
2302 static constexpr uint8_t FLAG_ACTIVE_DIFFERS_FROM_SAVED = 0x1;
2315 uint16_t message_id = 0;
2327 uint8_t reserved1[2] = {0};
2338 static constexpr uint8_t MESSAGE_VERSION = 1;
2347 uint16_t num_rates = 0;
2377 return "CalibrationState";
2381 return "FilterState";
2383 return "UserConfig";
2394 stream <<
to_string(val) <<
" (" << (int)val <<
")";
2409 static constexpr uint8_t MESSAGE_VERSION = 0;
2419 uint8_t reserved1[2] = {0};
2422 uint8_t reserved2[4] = {0};
2424 uint32_t data_length_bytes = 0;
2443 static constexpr uint8_t MESSAGE_VERSION = 0;
2453 uint8_t reserved[2] = {0};
2471 static constexpr uint8_t MESSAGE_VERSION = 2;
2487 uint8_t reserved[1] = {0};
2491 uint32_t data_length_bytes = 0;
2535 uint8_t reserved[3] = {0};
@ INTERVAL_10_S
Output this message every 10 seconds.
P1_CONSTEXPR_FUNC InterfaceID()=default
@ IMPORT_DATA
ImportDataMessage
@ DIRECTION
Set the interface direction (client/server).
@ INTERVAL_10_MS
Output this message every 10 milliseconds.
ConfigType
An identifier for the contents of a parameter configuration message.
@ VEHICLE_TICKS
A single wheel rotational angle, reported as accumulated encoder ticks.
@ ALL
Set/get the configuration for the all I/O interfaces.
A 3-dimensional vector (used for lever arms, etc.).
@ INTERVAL_5_S
Output this message every 5 seconds.
P1_CONSTEXPR_FUNC InterfaceID(TransportType type, uint8_t index=0)
Identifies an I/O interface.
TransportType type
The interface's transport type.
MessageType
Identifiers for the defined output message types.
@ GPS_WEEK_ROLLOVER
Specify a GPS legacy week rollover count override to use when converting all legacy 10-bit GPS week n...
Library portability helper definitions.
Response to a GetConfigMessage request (MessageType::CONFIG_RESPONSE, version 1.0).
@ SAVE
Save all active parameters to persistent storage.
@ MAX_RATE
Alias for MessageRate::ON_CHANGE.
The orientation of a device with respect to the vehicle body axes.
@ DEFAULT
Restore this message's rate back to its default value.
@ ENABLED_GNSS_FREQUENCY_BANDS
A bitmask indicating which GNSS frequency bands are enabled.
@ IONOSPHERE_CONFIG
Ionospheric delay model configuration.
Hardware wheel tick encoder configuration settings.
@ NONE
Wheel/vehicle speed data not available.
@ DEVICE_LEVER_ARM
The location of the device IMU with respect to the vehicle body frame (in meters).
TickMode
The signal edge to use when capturing a wheel tick voltage signal.
@ TROPOSPHERE_CONFIG
Tropospheric delay model configuration.
@ UNIX
A UNIX domain socket client or server.
Tropospheric delay model configuration.
@ AUTO
Select the best available ionospheric delay model.
@ FORWARD_ACTIVE_LOW
Assume vehicle is moving forward when direction signal voltage is low, and backward when direction si...
@ REVERT_TO_SAVED
Revert the active configuration to previously saved values.
@ AUTO
Select the best available tropospheric delay model.
@ FILE
A interface that writes to a file.
@ UART1_BAUD
Configure the UART1 serial baud rate (in bits/second).
@ VEHICLE_BODY
Individual vehicle speed to be applied to the system.
@ UART1_OUTPUT_DIAGNOSTICS_MESSAGES
Enable/disable output of diagnostic data on UART1.
@ SUPPORTED_IO_INTERFACES
SupportedIOInterfacesMessage
Response to a GetMessageRate request (MessageType::MESSAGE_RATE_RESPONSE, version 1....
SteeringType
Indication of which of the vehicle's wheels are steered.
@ HARDWARE_TICK_CONFIG
Indicates the mode and direction used when capturing vehicle wheel tick data from a voltage pulse on ...
@ STREAM
Operate in connection-oriented streaming mode and do not preserve message boundaries (similar to TCP)...
@ INTERVAL_500_MS
Output this message every 500 milliseconds.
InterfaceConfigType
An identifier for the contents of a output interface configuration submessage.
@ USER_DEVICE_ID
A string for identifying a device.
SaveAction
The type configuration save operation to be performed.
Information about the vehicle including model and dimensions.
IonoDelayModel
The ionospheric delay model to use.
@ INTERVAL_60_S
Output this message every 60 seconds.
Set the output rate for the requested message types (MessageType::SET_MESSAGE_RATE,...
@ REVERT_TO_DEFAULT
Reset the active and saved configuration to default values.
@ WEBSOCKET
A WebSocket client or server.
@ HEADING_BIAS
Used to set horizontal (yaw) & vertical (pitch) biases (in degrees) on a dual-antenna heading platfor...
A submessage header for configuration data associated with the ConfigType::INTERFACE_CONFIG.
Import data from the host to the device (MessageType::IMPORT_DATA, version 1.0).
@ MESSAGE_RATE_RESPONSE
MessageRateResponse
@ SAVE_CONFIG
SaveConfigMessage
MessageRate
The output rate for a message type on an interface.
@ REMOTE_ADDRESS
Configure the network address for a client to connect to.
DataType
Type of data stored on device.
@ INTERFACE_CONFIG
Change a configuration setting for a specified output interface.
P1_CONSTEXPR_FUNC bool operator<(const InterfaceID &other) const
@ ACTIVE
Active configuration currently in use by the device.
@ FRONT
Front wheels are steered.
P1_CONSTEXPR_FUNC bool operator!=(const InterfaceID &other) const
TransportType
Type of I/O interface transport.
The base class for all message payloads.
@ INTERVAL_1_S
Output this message every second.
Query the value of a user configuration parameter (MessageType::GET_CONFIG, version 1....
@ ON_CHANGE
Output this message each time a new value is available.
@ INTERVAL_50_MS
Output this message every 50 milliseconds.
@ INTERVAL_2_S
Output this message every 2 seconds.
@ OFF
Tropospheric delay model disabled.
@ INTERVAL_100_MS
Output this message every 100 milliseconds.
@ SERIAL
A serial data interface (e.g.
@ INTERVAL_30_S
Output this message every 30 seconds.
@ OFF
Wheel tick capture disabled.
SocketType
The socket type specifying how data is transmitted for UNIX domain sockets.
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).
@ FRONT_WHEELS
Front wheel speed data to be applied to the system.
@ DEFAULT
Read only device defaults.
uint8_t index
An identifier for the instance of this transport.
P1_CONSTEXPR_FUNC bool operator>(const InterfaceID &other) const
@ FRONT_AND_REAR_WHEELS
Front and rear wheel speed data to be applied to the system.
@ TCP
A TCP client or server.
@ CURRENT
Set/get the configuration for the interface on which the command was received.
P1_CONSTEXPR_FUNC bool operator<=(const InterfaceID &other) const
@ UART2_BAUD
Configure the UART2 serial baud rate (in bits/second).
P1_CONSTEXPR_FUNC const char * to_string(ConfigType type)
Get a human-friendly string name for the specified ConfigType.
@ SERVER
A server listening for one or more incoming remote connections.
@ TICKS
Individual rotational angle measurements for multiple wheels, reported as accumulated encoder ticks.
@ INTERVAL_200_MS
Output this message every 200 milliseconds.
VehicleModel
The make and model of the vehicle.
@ GET_MESSAGE_RATE
GetMessageRate
@ DEVICE_COARSE_ORIENTATION
The orientation of the device IMU with respect to the vehicle body axes.
@ INTERVAL_40_MS
Output this message every 40 milliseconds.
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,...
TickDirection
The way to interpret an incoming voltage signal, used to indicate direction of a hardware wheel tick ...
@ OFF
Disable output of this message.
p1_ostream & operator<<(p1_ostream &stream, ConfigType type)
ConfigType stream operator.
@ EXPORT_DATA
ExportDataMessage
@ VEHICLE_SPEED
A single value indicating the vehicle speed (in meters/second).
@ LBAND_PARAMETERS
Configuration of L-band Demodulator Parameters.
@ KLOBUCHAR
Use the Klobuchar ionospheric model.
Heading bias horizontal/vertical configuration settings.
An element of a MessageRateResponse message.
@ SBAS
Use the SBAS ionospheric model.
NmeaMessageType
Integer ID for NMEA messages.
@ SET_MESSAGE_RATE
SetMessageRate
Save or reload configuration settings (MessageType::SAVE_CONFIG, version 1.0).
ProtocolType
The framing protocol of a message.
#define P1_CONSTEXPR_FUNC
Configuration of the L-band demodulator parameters.
Set a user configuration parameter (MessageType::SET_CONFIG, version 1.0).
@ CLIENT
A client connecting to a specified remote server.
@ ENABLE_WATCHDOG_TIMER
Enable watchdog timer to restart device after fatal errors.
WheelSensorType
The type of vehicle/wheel speed measurements produced by the vehicle.
TropoDelayModel
The tropospheric delay model to use.
@ SEQPACKET
Operate in sequenced packet mode, which is both connection-oriented and preserves message boundaries.
@ GET_CONFIG
GetConfigMessage
@ FRONT_AND_REAR
Front and rear wheels are steered.
@ OUTPUT_LEVER_ARM
The offset of the desired output location with respect to the vehicle body frame (in meters).
@ OUTPUT_DIAGNOSTICS_MESSAGES
Enable/disable output of diagnostic data on this interface.
@ SAVED
Settings currently saved to persistent storage.
@ DATAGRAM
Operate in datagram mode, preserving message boundaries but not maintaining client connections (simil...
@ SET_CONFIG
SetConfigMessage
@ ENABLED
Enable/disable the interface.
@ VEHICLE_DETAILS
Information about the vehicle including model and dimensions.
@ NONE
Speed data not applied to the system.
@ OFF
Ionospheric delay model disabled.
P1_CONSTEXPR_FUNC bool operator==(const InterfaceID &other) const
@ FORWARD
The vehicle is in a forward gear.
@ WHEEL_CONFIG
Information pertaining to wheel speed/rotation measurements when wheel data is transmitted via softwa...
Point One FusionEngine output message common definitions.
Software vehicle/wheel speed measurement configuration settings.
@ SAASTAMOINEN
Use the Saastamoinen tropospheric model.
TransportDirection
The direction (client/server) for an individual interface.
Ionospheric delay model configuration.
@ PLATFORM_STORAGE_DATA
PlatformStorageDataMessage
@ WHEEL_SPEED
Individual speed measurements for multiple wheels, reported in meters/second.
@ FALLING_EDGE
Capture a wheel tick on the falling edge of the incoming pulse.
@ FORWARD_ACTIVE_HIGH
Assume vehicle is moving forward when direction signal voltage is high, and backward when direction s...
DataVersion data_version
Version of data contents.
ConfigurationSource
The type of a device's configuration settings.
@ INTERVAL_20_MS
Output this message every 20 milliseconds.
@ REAR_WHEELS
Rear wheel speed data to be applied to the system (recommended).
@ UDP
A UDP client or server.
@ GNSS_LEVER_ARM
The location of the GNSS antenna with respect to the vehicle body frame (in meters).
@ BAUD_RATE
Configure the serial baud rate (in bits/second).
@ ENABLED_GNSS_SYSTEMS
A bitmask indicating which GNSS constellations are enabled.
@ SOCKET_TYPE
Set the UNIX domain socket type (streaming/datagram/sequenced).
A struct representing the version of a data object.
@ OFF
Wheel tick direction not provided.
P1_CONSTEXPR_FUNC bool operator>=(const InterfaceID &other) const
@ LEAP_SECOND
Specify a UTC leap second count override value to use for all UTC time conversions.
@ RISING_EDGE
Capture a wheel tick on the rising edge of the incoming pulse.
@ PORT
Configure the network port.
@ UART2_OUTPUT_DIAGNOSTICS_MESSAGES
Enable/disable output of diagnostic data on UART2.
@ ALL
This is used for requesting the configuration for all protocols.
constexpr uint16_t ALL_MESSAGES_ID
Setting message_id to this value acts as a wild card.
AppliedSpeedType
The type of vehicle/wheel speed measurements to be applied.
@ UNKNOWN
Steered wheels unknown.
@ CONFIG_RESPONSE
ConfigResponseMessage