DriveWorks SDK Reference
5.20.37 Release
For Test and Development only

Reading IMU data from raw (binary) data

The dwSensorIMU_processRawData() and dwSensorIMU_popFrame() functions can be used to parse raw sensor data and read the measurements in the dwIMUFrame format. dwSensorIMU_processRawData() copies parsed data, therefore the raw data can be returned after the call.

Example

The following code shows the general structure of a program reading raw data from a sensor, serializing it and parsing it.

dwSensorHandle_t imuSensor;
dwSAL_createSensor(&imuSensor, ..., ...);
dwSensor_start(imuSensor);
const uint8_t *data = nullptr;
size_t size = 0;
while(loop)
{
while (status == DW_NOT_READY)
{
dwSensor_readRawData(&data, &size, 1000000, imuSensor);
status = dwSensorIMU_processRawData(data, size, imuSensor);
dwSensor_returnRawData(data, imuSensor);
}
dwIMUFrame frame{};
dwSensorIMU_popFrame(&frame, imuSensor);
...
}
dwSensor_stop(imuSensor);
dwSAL_releaseSensor(&imuSensor);
dwStatus
Status definition.
Definition: ErrorDefs.h:44
@ DW_NOT_READY
The processing is not finished or ready.
Definition: ErrorDefs.h:64
This structure contains one frame of data from a IMU sensor.
Definition: IMUTypes.h:369
DW_API_PUBLIC dwStatus dwSensorIMU_processRawData(uint8_t const *const data, size_t const size, dwSensorHandle_t const sensor)
Decodes IMU frames from received IMU sensor raw data/packets.
DW_API_PUBLIC dwStatus dwSensorIMU_popFrame(dwIMUFrame *const frame, dwSensorHandle_t const sensor)
Returns the earliest IMU frame previously processed from previous IMU sensor packets.
DW_API_PUBLIC dwStatus dwSensorSerializer_serializeDataAsync(uint8_t const *const data, size_t const size, dwSensorSerializerHandle_t const serializer)
Pushes data to the serializer.
DW_API_PUBLIC dwStatus dwSAL_createSensor(dwSensorHandle_t *const sensor, dwSensorParams const params, dwSALHandle_t const sal)
Creates a new sensor managed by the SAL module with the given parameters.
DW_API_PUBLIC dwStatus dwSensor_start(dwSensorHandle_t const sensor)
Starts the sensor previously successfully created with 'dwSAL_createSensor()'.
DW_API_PUBLIC dwStatus dwSensor_stop(dwSensorHandle_t const sensor)
Stops the sensor.
DW_API_PUBLIC dwStatus dwSensor_readRawData(const uint8_t **const data, size_t *const size, dwTime_t const timeoutUs, dwSensorHandle_t const sensor)
Reads RAW data from sensor as byte array at a given time (TimeoutUs).
DW_API_PUBLIC dwStatus dwSensor_returnRawData(const uint8_t *const data, dwSensorHandle_t const sensor)
Returns RAW data to sensor as a byte array.
DW_API_PUBLIC dwStatus dwSAL_releaseSensor(dwSensorHandle_t const sensor)
Releases a sensor managed by the SAL module.
struct dwSensorObject * dwSensorHandle_t
Handle representing a sensor.
Definition: SensorTypes.h:75

For more details see Simple Sensor Recording Sample