MIP SDK  0.0.1
MicroStrain Communications Library for embedded systems
data_sensor.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "descriptors.h"
4 #include "../mip_result.h"
5 
6 #include <stdint.h>
7 #include <stddef.h>
8 #include <stdbool.h>
9 
10 #ifdef __cplusplus
11 namespace mip {
12 namespace C {
13 extern "C" {
14 
15 #endif // __cplusplus
16 struct mip_interface;
17 struct mip_serializer;
18 struct mip_field;
19 
26 
28 // Descriptors
30 
31 enum
32 {
34 
59 
62 };
63 
65 // Shared Type Definitions
67 
68 
70 // Mip Fields
72 
79 
81 {
82  float raw_accel[3];
83 
84 };
88 bool extract_mip_sensor_raw_accel_data_from_field(const struct mip_field* field, void* ptr);
89 
98 
100 {
101  float raw_gyro[3];
102 
103 };
105 void insert_mip_sensor_raw_gyro_data(struct mip_serializer* serializer, const mip_sensor_raw_gyro_data* self);
107 bool extract_mip_sensor_raw_gyro_data_from_field(const struct mip_field* field, void* ptr);
108 
117 
119 {
120  float raw_mag[3];
121 
122 };
124 void insert_mip_sensor_raw_mag_data(struct mip_serializer* serializer, const mip_sensor_raw_mag_data* self);
126 bool extract_mip_sensor_raw_mag_data_from_field(const struct mip_field* field, void* ptr);
127 
136 
138 {
139  float raw_pressure;
140 
141 };
145 bool extract_mip_sensor_raw_pressure_data_from_field(const struct mip_field* field, void* ptr);
146 
155 
157 {
158  float scaled_accel[3];
159 
160 };
164 bool extract_mip_sensor_scaled_accel_data_from_field(const struct mip_field* field, void* ptr);
165 
174 
176 {
177  float scaled_gyro[3];
178 
179 };
183 bool extract_mip_sensor_scaled_gyro_data_from_field(const struct mip_field* field, void* ptr);
184 
193 
195 {
196  float scaled_mag[3];
197 
198 };
202 bool extract_mip_sensor_scaled_mag_data_from_field(const struct mip_field* field, void* ptr);
203 
211 
213 {
215 
216 };
221 
230 
232 {
233  float delta_theta[3];
234 
235 };
239 bool extract_mip_sensor_delta_theta_data_from_field(const struct mip_field* field, void* ptr);
240 
249 
251 {
252  float delta_velocity[3];
253 
254 };
259 
277 
279 {
280  float m[9];
281 
282 };
287 
303 
305 {
306  float q[4];
307 
308 };
313 
322 
324 {
325  float roll;
326  float pitch;
327  float yaw;
328 
329 };
334 
342 
344 {
345  float m[9];
346 
347 };
352 
360 
362 {
363  uint16_t raw_temp[4];
364 
365 };
370 
378 
380 {
381  uint32_t counts;
382 
383 };
388 
396 
398 {
399  uint32_t seconds;
400  uint32_t useconds;
401 
402 };
406 bool extract_mip_sensor_pps_timestamp_data_from_field(const struct mip_field* field, void* ptr);
407 
421 
423 static const mip_sensor_gps_timestamp_data_valid_flags MIP_SENSOR_GPS_TIMESTAMP_DATA_VALID_FLAGS_NONE = 0x0000;
424 static const mip_sensor_gps_timestamp_data_valid_flags MIP_SENSOR_GPS_TIMESTAMP_DATA_VALID_FLAGS_PPS_VALID = 0x0001;
425 static const mip_sensor_gps_timestamp_data_valid_flags MIP_SENSOR_GPS_TIMESTAMP_DATA_VALID_FLAGS_TIME_REFRESH = 0x0002;
426 static const mip_sensor_gps_timestamp_data_valid_flags MIP_SENSOR_GPS_TIMESTAMP_DATA_VALID_FLAGS_TIME_INITIALIZED = 0x0004;
427 static const mip_sensor_gps_timestamp_data_valid_flags MIP_SENSOR_GPS_TIMESTAMP_DATA_VALID_FLAGS_TOW_VALID = 0x0008;
428 static const mip_sensor_gps_timestamp_data_valid_flags MIP_SENSOR_GPS_TIMESTAMP_DATA_VALID_FLAGS_WEEK_NUMBER_VALID = 0x0010;
429 
431 {
432  double tow;
433  uint16_t week_number;
435 
436 };
440 bool extract_mip_sensor_gps_timestamp_data_from_field(const struct mip_field* field, void* ptr);
441 
444 
456 
458 {
459  float min_temp;
460  float max_temp;
461  float mean_temp;
462 
463 };
468 
482 
484 {
485  float up[3];
486 
487 };
491 bool extract_mip_sensor_up_vector_data_from_field(const struct mip_field* field, void* ptr);
492 
503 
505 {
506  float north[3];
507 
508 };
512 bool extract_mip_sensor_north_vector_data_from_field(const struct mip_field* field, void* ptr);
513 
520 
522 static const mip_sensor_overrange_status_data_status MIP_SENSOR_OVERRANGE_STATUS_DATA_STATUS_NONE = 0x0000;
523 static const mip_sensor_overrange_status_data_status MIP_SENSOR_OVERRANGE_STATUS_DATA_STATUS_ACCEL_X = 0x0001;
524 static const mip_sensor_overrange_status_data_status MIP_SENSOR_OVERRANGE_STATUS_DATA_STATUS_ACCEL_Y = 0x0002;
525 static const mip_sensor_overrange_status_data_status MIP_SENSOR_OVERRANGE_STATUS_DATA_STATUS_ACCEL_Z = 0x0004;
526 static const mip_sensor_overrange_status_data_status MIP_SENSOR_OVERRANGE_STATUS_DATA_STATUS_GYRO_X = 0x0010;
527 static const mip_sensor_overrange_status_data_status MIP_SENSOR_OVERRANGE_STATUS_DATA_STATUS_GYRO_Y = 0x0020;
528 static const mip_sensor_overrange_status_data_status MIP_SENSOR_OVERRANGE_STATUS_DATA_STATUS_GYRO_Z = 0x0040;
529 static const mip_sensor_overrange_status_data_status MIP_SENSOR_OVERRANGE_STATUS_DATA_STATUS_MAG_X = 0x0100;
530 static const mip_sensor_overrange_status_data_status MIP_SENSOR_OVERRANGE_STATUS_DATA_STATUS_MAG_Y = 0x0200;
531 static const mip_sensor_overrange_status_data_status MIP_SENSOR_OVERRANGE_STATUS_DATA_STATUS_MAG_Z = 0x0400;
532 static const mip_sensor_overrange_status_data_status MIP_SENSOR_OVERRANGE_STATUS_DATA_STATUS_PRESS = 0x1000;
533 
535 {
537 
538 };
543 
546 
553 
555 {
556  float speed;
557  float uncertainty;
558  uint16_t valid_flags;
559 
560 };
564 bool extract_mip_sensor_odometer_data_data_from_field(const struct mip_field* field, void* ptr);
565 
568 
573 #ifdef __cplusplus
574 } // namespace C
575 } // namespace mip
576 } // extern "C"
577 #endif // __cplusplus
578 
void extract_mip_sensor_comp_euler_angles_data(mip_serializer *serializer, mip_sensor_comp_euler_angles_data *self)
Definition: data_sensor.c:299
void insert_mip_sensor_comp_euler_angles_data(mip_serializer *serializer, const mip_sensor_comp_euler_angles_data *self)
Definition: data_sensor.c:290
void insert_mip_sensor_comp_orientation_matrix_data(mip_serializer *serializer, const mip_sensor_comp_orientation_matrix_data *self)
Definition: data_sensor.c:246
void extract_mip_sensor_comp_orientation_matrix_data(mip_serializer *serializer, mip_sensor_comp_orientation_matrix_data *self)
Definition: data_sensor.c:252
void extract_mip_sensor_comp_orientation_update_matrix_data(mip_serializer *serializer, mip_sensor_comp_orientation_update_matrix_data *self)
Definition: data_sensor.c:324
void insert_mip_sensor_comp_orientation_update_matrix_data(mip_serializer *serializer, const mip_sensor_comp_orientation_update_matrix_data *self)
Definition: data_sensor.c:318
void extract_mip_sensor_comp_quaternion_data(mip_serializer *serializer, mip_sensor_comp_quaternion_data *self)
Definition: data_sensor.c:274
void insert_mip_sensor_comp_quaternion_data(mip_serializer *serializer, const mip_sensor_comp_quaternion_data *self)
Definition: data_sensor.c:268
void extract_mip_sensor_delta_theta_data(mip_serializer *serializer, mip_sensor_delta_theta_data *self)
Definition: data_sensor.c:208
void insert_mip_sensor_delta_theta_data(mip_serializer *serializer, const mip_sensor_delta_theta_data *self)
Definition: data_sensor.c:202
void insert_mip_sensor_delta_velocity_data(mip_serializer *serializer, const mip_sensor_delta_velocity_data *self)
Definition: data_sensor.c:224
void extract_mip_sensor_delta_velocity_data(mip_serializer *serializer, mip_sensor_delta_velocity_data *self)
Definition: data_sensor.c:230
uint16_t mip_sensor_gps_timestamp_data_valid_flags
Definition: data_sensor.h:422
void extract_mip_sensor_gps_timestamp_data_valid_flags(struct mip_serializer *serializer, mip_sensor_gps_timestamp_data_valid_flags *self)
Definition: data_sensor.c:438
void extract_mip_sensor_gps_timestamp_data(mip_serializer *serializer, mip_sensor_gps_timestamp_data *self)
Definition: data_sensor.c:415
void insert_mip_sensor_gps_timestamp_data_valid_flags(struct mip_serializer *serializer, const mip_sensor_gps_timestamp_data_valid_flags self)
Definition: data_sensor.c:434
void insert_mip_sensor_gps_timestamp_data(mip_serializer *serializer, const mip_sensor_gps_timestamp_data *self)
Definition: data_sensor.c:406
void insert_mip_sensor_internal_timestamp_data(mip_serializer *serializer, const mip_sensor_internal_timestamp_data *self)
Definition: data_sensor.c:362
void extract_mip_sensor_internal_timestamp_data(mip_serializer *serializer, mip_sensor_internal_timestamp_data *self)
Definition: data_sensor.c:367
void insert_mip_sensor_north_vector_data(mip_serializer *serializer, const mip_sensor_north_vector_data *self)
Definition: data_sensor.c:495
void extract_mip_sensor_north_vector_data(mip_serializer *serializer, mip_sensor_north_vector_data *self)
Definition: data_sensor.c:501
void extract_mip_sensor_odometer_data_data(mip_serializer *serializer, mip_sensor_odometer_data_data *self)
Definition: data_sensor.c:557
void insert_mip_sensor_odometer_data_data(mip_serializer *serializer, const mip_sensor_odometer_data_data *self)
Definition: data_sensor.c:548
void insert_mip_sensor_orientation_raw_temp_data(mip_serializer *serializer, const mip_sensor_orientation_raw_temp_data *self)
Definition: data_sensor.c:340
void extract_mip_sensor_orientation_raw_temp_data(mip_serializer *serializer, mip_sensor_orientation_raw_temp_data *self)
Definition: data_sensor.c:346
void insert_mip_sensor_overrange_status_data(mip_serializer *serializer, const mip_sensor_overrange_status_data *self)
Definition: data_sensor.c:517
void insert_mip_sensor_overrange_status_data_status(struct mip_serializer *serializer, const mip_sensor_overrange_status_data_status self)
Definition: data_sensor.c:537
void extract_mip_sensor_overrange_status_data_status(struct mip_serializer *serializer, mip_sensor_overrange_status_data_status *self)
Definition: data_sensor.c:541
uint16_t mip_sensor_overrange_status_data_status
Definition: data_sensor.h:521
void extract_mip_sensor_overrange_status_data(mip_serializer *serializer, mip_sensor_overrange_status_data *self)
Definition: data_sensor.c:522
void extract_mip_sensor_pps_timestamp_data(mip_serializer *serializer, mip_sensor_pps_timestamp_data *self)
Definition: data_sensor.c:389
void insert_mip_sensor_pps_timestamp_data(mip_serializer *serializer, const mip_sensor_pps_timestamp_data *self)
Definition: data_sensor.c:382
void insert_mip_sensor_raw_accel_data(mip_serializer *serializer, const mip_sensor_raw_accel_data *self)
Definition: data_sensor.c:30
void extract_mip_sensor_raw_accel_data(mip_serializer *serializer, mip_sensor_raw_accel_data *self)
Definition: data_sensor.c:36
void insert_mip_sensor_raw_gyro_data(mip_serializer *serializer, const mip_sensor_raw_gyro_data *self)
Definition: data_sensor.c:52
void extract_mip_sensor_raw_gyro_data(mip_serializer *serializer, mip_sensor_raw_gyro_data *self)
Definition: data_sensor.c:58
void extract_mip_sensor_raw_mag_data(mip_serializer *serializer, mip_sensor_raw_mag_data *self)
Definition: data_sensor.c:80
void insert_mip_sensor_raw_mag_data(mip_serializer *serializer, const mip_sensor_raw_mag_data *self)
Definition: data_sensor.c:74
void extract_mip_sensor_raw_pressure_data(mip_serializer *serializer, mip_sensor_raw_pressure_data *self)
Definition: data_sensor.c:101
void insert_mip_sensor_raw_pressure_data(mip_serializer *serializer, const mip_sensor_raw_pressure_data *self)
Definition: data_sensor.c:96
void extract_mip_sensor_scaled_accel_data(mip_serializer *serializer, mip_sensor_scaled_accel_data *self)
Definition: data_sensor.c:122
void insert_mip_sensor_scaled_accel_data(mip_serializer *serializer, const mip_sensor_scaled_accel_data *self)
Definition: data_sensor.c:116
void insert_mip_sensor_scaled_gyro_data(mip_serializer *serializer, const mip_sensor_scaled_gyro_data *self)
Definition: data_sensor.c:138
void extract_mip_sensor_scaled_gyro_data(mip_serializer *serializer, mip_sensor_scaled_gyro_data *self)
Definition: data_sensor.c:144
void insert_mip_sensor_scaled_mag_data(mip_serializer *serializer, const mip_sensor_scaled_mag_data *self)
Definition: data_sensor.c:160
void extract_mip_sensor_scaled_mag_data(mip_serializer *serializer, mip_sensor_scaled_mag_data *self)
Definition: data_sensor.c:166
void extract_mip_sensor_scaled_pressure_data(mip_serializer *serializer, mip_sensor_scaled_pressure_data *self)
Definition: data_sensor.c:187
void insert_mip_sensor_scaled_pressure_data(mip_serializer *serializer, const mip_sensor_scaled_pressure_data *self)
Definition: data_sensor.c:182
void extract_mip_sensor_temperature_abs_data(mip_serializer *serializer, mip_sensor_temperature_abs_data *self)
Definition: data_sensor.c:454
void insert_mip_sensor_temperature_abs_data(mip_serializer *serializer, const mip_sensor_temperature_abs_data *self)
Definition: data_sensor.c:445
void insert_mip_sensor_up_vector_data(mip_serializer *serializer, const mip_sensor_up_vector_data *self)
Definition: data_sensor.c:473
void extract_mip_sensor_up_vector_data(mip_serializer *serializer, mip_sensor_up_vector_data *self)
Definition: data_sensor.c:479
@ MIP_DATA_DESC_SENSOR_TEMPERATURE_RAW
Definition: data_sensor.h:47
@ MIP_DATA_DESC_SENSOR_PRESSURE_SCALED
Definition: data_sensor.h:56
@ MIP_DATA_DESC_SENSOR_ACCEL_RAW
Definition: data_sensor.h:35
@ MIP_DATA_DESC_ASPP
Definition: data_sensor.h:60
@ MIP_DATA_DESC_SENSOR_ACCEL_SCALED
Definition: data_sensor.h:38
@ MIP_DATA_DESC_SENSOR_MAG_SCALED
Definition: data_sensor.h:40
@ MIP_DATA_DESC_SENSOR_DELTA_VELOCITY
Definition: data_sensor.h:42
@ MIP_DATA_DESC_SENSOR_COMP_QUATERNION
Definition: data_sensor.h:44
@ MIP_DATA_DESC_SENSOR_STAB_ACCEL
Definition: data_sensor.h:51
@ MIP_DATA_DESC_GXSB
Definition: data_sensor.h:61
@ MIP_DATA_DESC_SENSOR_TEMPERATURE_ABS
Definition: data_sensor.h:53
@ MIP_DATA_DESC_SENSOR_TIME_STAMP_INTERNAL
Definition: data_sensor.h:48
@ MIP_DATA_DESC_SENSOR_TIME_STAMP_GPS
Definition: data_sensor.h:52
@ MIP_DATA_DESC_SENSOR_TIME_STAMP_PPS
Definition: data_sensor.h:49
@ MIP_DATA_DESC_SENSOR_COMP_EULER_ANGLES
Definition: data_sensor.h:46
@ MIP_DATA_DESC_SENSOR_ODOMETER
Definition: data_sensor.h:58
@ MIP_DATA_DESC_SENSOR_RAW_CLIP_DATA
Definition: data_sensor.h:54
@ MIP_DATA_DESC_SENSOR_OVERRANGE_STATUS
Definition: data_sensor.h:57
@ MIP_DATA_DESC_SENSOR_PRESSURE_RAW
Definition: data_sensor.h:55
@ MIP_DATA_DESC_SENSOR_GYRO_RAW
Definition: data_sensor.h:36
@ MIP_DATA_DESC_SENSOR_GYRO_SCALED
Definition: data_sensor.h:39
@ MIP_DATA_DESC_SENSOR_MAG_RAW
Definition: data_sensor.h:37
@ MIP_DATA_DESC_SENSOR_COMP_ORIENTATION_MATRIX
Definition: data_sensor.h:43
@ MIP_SENSOR_DATA_DESC_SET
Definition: data_sensor.h:33
@ MIP_DATA_DESC_SENSOR_COMP_ORIENTATION_UPDATE_MATRIX
Definition: data_sensor.h:45
@ MIP_DATA_DESC_SENSOR_DELTA_THETA
Definition: data_sensor.h:41
@ MIP_DATA_DESC_SENSOR_STAB_MAG
Definition: data_sensor.h:50
bool extract_mip_sensor_comp_orientation_update_matrix_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:330
bool extract_mip_sensor_north_vector_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:507
bool extract_mip_sensor_comp_orientation_matrix_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:258
bool extract_mip_sensor_comp_quaternion_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:280
bool extract_mip_sensor_orientation_raw_temp_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:352
bool extract_mip_sensor_raw_mag_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:86
bool extract_mip_sensor_temperature_abs_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:463
bool extract_mip_sensor_delta_velocity_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:236
bool extract_mip_sensor_raw_accel_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:42
bool extract_mip_sensor_raw_pressure_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:106
bool extract_mip_sensor_pps_timestamp_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:396
bool extract_mip_sensor_scaled_pressure_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:192
bool extract_mip_sensor_delta_theta_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:214
bool extract_mip_sensor_scaled_mag_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:172
bool extract_mip_sensor_raw_gyro_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:64
bool extract_mip_sensor_internal_timestamp_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:372
bool extract_mip_sensor_scaled_accel_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:128
bool extract_mip_sensor_scaled_gyro_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:150
bool extract_mip_sensor_overrange_status_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:527
bool extract_mip_sensor_odometer_data_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:566
bool extract_mip_sensor_up_vector_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:485
bool extract_mip_sensor_comp_euler_angles_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:308
bool extract_mip_sensor_gps_timestamp_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:424
A collection of C++ classes and functions covering the full mip api.
Definition: commands_3dm.c:11
A structure representing a MIP field.
Definition: mip_field.h:53
State of the interface for communicating with a MIP device.
Definition: mip_interface.h:52
Definition: data_sensor.h:324
float yaw
[radians]
Definition: data_sensor.h:327
float pitch
[radians]
Definition: data_sensor.h:326
float roll
[radians]
Definition: data_sensor.h:325
float m[9]
Matrix elements in row-major order.
Definition: data_sensor.h:280
float m[9]
Definition: data_sensor.h:345
Definition: data_sensor.h:305
float q[4]
Quaternion elements EQSTART q = (q_w, q_x, q_y, q_z) EQEND.
Definition: data_sensor.h:306
Definition: data_sensor.h:232
float delta_theta[3]
(x, y, z) [radians]
Definition: data_sensor.h:233
Definition: data_sensor.h:251
float delta_velocity[3]
(x, y, z) [g*sec]
Definition: data_sensor.h:252
Definition: data_sensor.h:431
double tow
GPS Time of Week [seconds].
Definition: data_sensor.h:432
mip_sensor_gps_timestamp_data_valid_flags valid_flags
Definition: data_sensor.h:434
uint16_t week_number
GPS Week Number since 1980 [weeks].
Definition: data_sensor.h:433
Definition: data_sensor.h:380
uint32_t counts
Definition: data_sensor.h:381
Definition: data_sensor.h:505
float north[3]
[Gauss]
Definition: data_sensor.h:506
Definition: data_sensor.h:555
float speed
Average speed over the time interval [m/s]. Can be negative for quadrature encoders.
Definition: data_sensor.h:556
uint16_t valid_flags
If odometer is configured, bit 0 will be set to 1.
Definition: data_sensor.h:558
float uncertainty
Uncertainty of velocity [m/s].
Definition: data_sensor.h:557
uint16_t raw_temp[4]
Definition: data_sensor.h:363
Definition: data_sensor.h:535
mip_sensor_overrange_status_data_status status
Definition: data_sensor.h:536
Definition: data_sensor.h:398
uint32_t seconds
Definition: data_sensor.h:399
uint32_t useconds
Definition: data_sensor.h:400
Definition: data_sensor.h:81
float raw_accel[3]
Native sensor counts.
Definition: data_sensor.h:82
Definition: data_sensor.h:100
float raw_gyro[3]
Native sensor counts.
Definition: data_sensor.h:101
Definition: data_sensor.h:119
float raw_mag[3]
Native sensor counts.
Definition: data_sensor.h:120
Definition: data_sensor.h:138
float raw_pressure
Native sensor counts.
Definition: data_sensor.h:139
Definition: data_sensor.h:157
float scaled_accel[3]
(x, y, z)[g]
Definition: data_sensor.h:158
Definition: data_sensor.h:176
float scaled_gyro[3]
(x, y, z) [radians/second]
Definition: data_sensor.h:177
Definition: data_sensor.h:195
float scaled_mag[3]
(x, y, z) [Gauss]
Definition: data_sensor.h:196
Definition: data_sensor.h:213
float scaled_pressure
[mBar]
Definition: data_sensor.h:214
Definition: data_sensor.h:458
float min_temp
[degC]
Definition: data_sensor.h:459
float mean_temp
[degC]
Definition: data_sensor.h:461
float max_temp
[degC]
Definition: data_sensor.h:460
Definition: data_sensor.h:484
float up[3]
[Gs]
Definition: data_sensor.h:485
Structure used for serialization.
Definition: serialization.h:44