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 <<
")";
413 return "Diagnostic Messages Enabled";
416 return "Serial Baud Rate";
419 return "Remote Network Address";
422 return "Network Port";
425 return "Unrecognized Configuration";
434 stream <<
to_string(type) <<
" (" << (int)type <<
")";
465 return "Unrecognized Source";
474 stream <<
to_string(source) <<
" (" << (int)source <<
")";
505 return "Revert To Saved";
508 return "Revert To Default";
520 stream <<
to_string(action) <<
" (" << (int)action <<
")";
548 static constexpr uint8_t MESSAGE_VERSION = 0;
551 static constexpr uint8_t FLAG_APPLY_AND_SAVE = 0x01;
562 static constexpr uint8_t FLAG_REVERT_TO_DEFAULT = 0x02;
570 uint8_t reserved[1] = {0};
573 uint32_t config_length_bytes = 0;
596 static constexpr uint8_t MESSAGE_VERSION = 1;
604 uint8_t reserved[1] = {0};
625 static constexpr uint8_t MESSAGE_VERSION = 0;
630 uint8_t reserved[3] = {0};
656 static constexpr uint8_t MESSAGE_VERSION = 0;
662 static constexpr uint8_t FLAG_ACTIVE_DIFFERS_FROM_SAVED = 0x1;
676 uint8_t reserved[3] = {0};
679 uint32_t config_length_bytes = 0;
734 uint8_t reserved[2] = {0};
792 switch (vehicle_model) {
796 return "DATASPEED_CD4";
800 return "LEXUS_CT200H";
802 return "KIA_SORENTO";
804 return "KIA_SPORTAGE";
810 return "TESLA_MODEL_X";
812 return "TESLA_MODEL_3";
814 return "HYUNDAI_ELANTRA";
816 return "PEUGEOT_206";
822 return "LINCOLN_MKZ";
826 return "BMW_MOTORRAD";
832 return "UNRECOGNIZED";
841 stream <<
to_string(vehicle_model) <<
" (" << (int)vehicle_model <<
")";
851 uint8_t reserved[10] = {0};
854 float wheelbase_m = NAN;
857 float front_track_width_m = NAN;
860 float rear_track_width_m = NAN;
903 switch (wheel_sensor_type) {
911 return "Wheel Speed";
914 return "Vehicle Speed";
917 return "Vehicle Ticks";
931 stream <<
to_string(wheel_sensor_type) <<
" (" << (int)wheel_sensor_type
963 switch (applied_speed_type) {
968 return "Rear Wheels";
971 return "Front Wheels";
974 return "Front and Rear Wheels";
977 return "Vehicle Body";
980 return "Unrecognized";
991 stream <<
to_string(applied_speed_type) <<
" (" << (int)applied_speed_type
1018 switch (steering_type) {
1020 return "Unknown Steering";
1023 return "Front Steering";
1026 return "Front and Rear Steering";
1029 return "Unrecognized";
1039 stream <<
to_string(steering_type) <<
" (" << (int)steering_type <<
")";
1081 uint8_t reserved1[1] = {0};
1092 float wheel_update_interval_sec = NAN;
1108 float wheel_tick_output_interval_sec = NAN;
1117 float steering_ratio = NAN;
1126 float wheel_ticks_to_m = NAN;
1143 uint32_t wheel_tick_max_value = 0;
1154 bool wheel_ticks_signed =
false;
1164 bool wheel_ticks_always_increase =
true;
1166 uint8_t reserved2[2] = {0};
1183 switch (tick_mode) {
1187 return "RISING_EDGE";
1189 return "FALLING_EDGE";
1191 return "UNRECOGNIZED";
1200 stream <<
to_string(tick_mode) <<
" (" << (int)tick_mode <<
")";
1225 switch (tick_direction) {
1229 return "FORWARD_ACTIVE_HIGH";
1231 return "FORWARD_ACTIVE_LOW";
1233 return "UNRECOGNIZED";
1243 stream <<
to_string(tick_direction) <<
" (" << (int)tick_direction <<
")";
1291 uint8_t reserved1[2] = {0};
1297 float wheel_ticks_to_m = NAN;
1327 float horizontal_bias_deg = NAN;
1339 float vertical_bias_deg = NAN;
1356 switch (iono_delay_model) {
1364 return "UNRECOGNIZED";
1374 stream <<
to_string(iono_delay_model) <<
" (" << (int)iono_delay_model <<
")";
1386 uint8_t reserved[3] = {0};
1403 switch (tropo_delay_model) {
1409 return "SAASTAMOINEN";
1411 return "UNRECOGNIZED";
1421 stream <<
to_string(tropo_delay_model) <<
" (" << (int)tropo_delay_model
1434 uint8_t reserved[3] = {0};
1445 double center_frequency_hz = 1555492500.0;
1454 float search_window_hz = 2000.0;
1460 bool filter_data_by_service_id =
true;
1463 bool use_descrambler =
true;
1466 uint16_t pmp_service_id = 0x5555;
1469 uint64_t pmp_unique_word = 0xE15AE893E15AE893ull;
1472 uint16_t pmp_data_rate_bps = 4800;
1475 uint16_t descrambler_init = 0x6969;
1514 return "FusionEngine";
1522 return "Unrecognized";
1531 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1581 return "TCP Client";
1583 return "TCP Server";
1585 return "UDP Client";
1587 return "UDP Server";
1589 return "Websocket Server";
1595 return "Unrecognized";
1603 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1621 uint8_t reserved[2] = {0};
1626 : type(type), index(index) {}
1629 return type == other.
type && index == other.
index;
1633 return !(*
this == other);
1637 if (type == other.
type) {
1638 return index < other.
index;
1640 return type < other.
type;
1645 return other < *
this;
1649 return !(*
this < other);
1653 return !(*
this > other);
1662 stream <<
"[type=" << val.
type <<
", index=" << (int)val.
index <<
"]";
1731 return "P1CALSTATUS";
1741 return "PQTMVERNO_SUB";
1743 return "PQTMVER_SUB";
1747 return "Unrecognized";
1756 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1861 return "INTERVAL_10_MS";
1863 return "INTERVAL_20_MS";
1865 return "INTERVAL_40_MS";
1867 return "INTERVAL_50_MS";
1869 return "INTERVAL_100_MS";
1871 return "INTERVAL_200_MS";
1873 return "INTERVAL_500_MS";
1875 return "INTERVAL_1_S";
1877 return "INTERVAL_2_S";
1879 return "INTERVAL_5_S";
1881 return "INTERVAL_10_S";
1883 return "INTERVAL_30_S";
1885 return "INTERVAL_60_S";
1889 return "Unrecognized";
1898 stream <<
to_string(val) <<
" (" << (int)val <<
")";
1997 static constexpr uint8_t MESSAGE_VERSION = 0;
2000 static constexpr uint8_t FLAG_APPLY_AND_SAVE = 0x01;
2006 static constexpr uint8_t FLAG_INCLUDE_DISABLED_MESSAGES = 0x02;
2034 uint8_t reserved2[3] = {0};
2053 static constexpr uint8_t MESSAGE_VERSION = 0;
2089 static constexpr uint8_t MESSAGE_VERSION = 0;
2092 uint8_t num_interfaces = 0;
2094 uint8_t reserved1[7] = {0};
2109 static constexpr uint8_t FLAG_ACTIVE_DIFFERS_FROM_SAVED = 0x1;
2122 uint16_t message_id = 0;
2134 uint8_t reserved1[2] = {0};
2145 static constexpr uint8_t MESSAGE_VERSION = 1;
2154 uint16_t num_rates = 0;
2184 return "CalibrationState";
2188 return "FilterState";
2190 return "UserConfig";
2201 stream <<
to_string(val) <<
" (" << (int)val <<
")";
2216 static constexpr uint8_t MESSAGE_VERSION = 0;
2226 uint8_t reserved1[2] = {0};
2229 uint8_t reserved2[4] = {0};
2231 uint32_t data_length_bytes = 0;
2250 static constexpr uint8_t MESSAGE_VERSION = 0;
2260 uint8_t reserved[2] = {0};
2278 static constexpr uint8_t MESSAGE_VERSION = 2;
2294 uint8_t reserved[1] = {0};
2298 uint32_t data_length_bytes = 0;
2342 uint8_t reserved[3] = {0};
@ INTERVAL_10_S
Output this message every 10 seconds.
P1_CONSTEXPR_FUNC InterfaceID()=default
@ IMPORT_DATA
ImportDataMessage
@ 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.
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 ...
@ 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.
@ 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.
@ TCP_SERVER
An interface that will communicate with connected clients.
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.
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.
@ 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.
@ 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).
@ UDP_SERVER
An interface that will communicate with connected clients.
@ LBAND_PARAMETERS
Configuration of L-band Demodulator Parameters.
@ KLOBUCHAR
Use the Klobuchar ionospheric model.
Heading bias horizontal/vertical configuration settings.
@ WEBSOCKET_SERVER
An interface that will communicate with connected clients.
An element of a MessageRateResponse message.
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).
@ 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.
@ 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.
@ SET_CONFIG
SetConfigMessage
@ 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.
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.
@ TCP_CLIENT
An interface that will try to connect to a remote TCP server.
@ INTERVAL_20_MS
Output this message every 20 milliseconds.
@ REAR_WHEELS
Rear wheel speed data to be applied to the system (recommended).
@ 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.
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.
@ UDP_CLIENT
An interface that will try to connect to a remote UDP server.
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