CV7_example.c
Go to the documentation of this file.
1 
3 //
4 // CV7_Example.c
5 //
6 // C Example set-up program for the CV7
7 //
8 // This example shows a typical setup for the CV7 sensor using C.
9 // It is not an exhaustive example of all CV7 settings.
10 // If your specific setup needs are not met by this example, please consult
11 // the MSCL-embedded API documentation for the proper commands.
12 //
13 //
22 //
24 
25 
27 // Include Files
29 
30 #include <mip/mip_all.h>
31 #include <mip/utils/serial_port.h>
32 #include <stdio.h>
33 #include <stdlib.h>
34 #include <errno.h>
35 #include <time.h>
36 
37 
39 // Global Variables
41 
43 clock_t start_time;
44 
45 int port = -1;
46 uint8_t parse_buffer[1024];
48 
49 //Sensor-to-vehicle frame transformation (Euler Angles)
50 float sensor_to_vehicle_transformation_euler[3] = {0.0, 0.0, 0.0};
51 
52 //Device data stores
57 
61 
62 bool filter_state_ahrs = false;
63 
64 const uint8_t FILTER_ROLL_EVENT_ACTION_ID = 1;
65 const uint8_t FILTER_PITCH_EVENT_ACTION_ID = 2;
66 
67 
69 // Function Prototypes
71 
72 
73 //Required MIP interface user-defined functions
75 
76 bool mip_interface_user_recv_from_device(mip_interface* device, uint8_t* buffer, size_t max_length, mip_timeout wait_time, size_t* out_length, mip_timestamp* timestamp_out);
77 bool mip_interface_user_send_to_device(mip_interface* device, const uint8_t* data, size_t length);
78 
79 int usage(const char* argv0);
80 
81 void exit_gracefully(const char *message);
82 bool should_exit();
83 
84 void handle_filter_event_source(void* user, const mip_field* field, mip_timestamp timestamp);
85 
86 
88 // Main Function
90 
91 
92 int main(int argc, const char* argv[])
93 {
94 
95  //
96  //Process arguments
97  //
98 
99  if(argc != 3)
100  return usage(argv[0]);
101 
102  const char* port_name = argv[1];
103  uint32_t baudrate = atoi(argv[2]);
104 
105  if(baudrate == 0)
106  return usage(argv[0]);
107 
108  //
109  //Get the program start time
110  //
111 
112  start_time = clock();
113 
114  printf("Connecting to and configuring sensor.\n");
115 
116  //
117  //Open the device port
118  //
119 
120  if(!serial_port_open(&device_port, port_name, baudrate))
121  exit_gracefully("ERROR: Could not open device port!");
122 
123 
124  //
125  //Initialize the MIP interface
126  //
127 
129  &device, parse_buffer, sizeof(parse_buffer), mip_timeout_from_baudrate(baudrate), 1000,
131  );
132 
133 
134  //
135  //Ping the device (note: this is good to do to make sure the device is present)
136  //
137 
139  exit_gracefully("ERROR: Could not ping the device!");
140 
141 
142  //
143  //Idle the device (note: this is good to do during setup)
144  //
145 
147  exit_gracefully("ERROR: Could not set the device to idle!");
148 
149 
150  //
151  //Load the device default settings (so the device is in a known state)
152  //
153 
155  exit_gracefully("ERROR: Could not load default device settings!");
156 
157 
158  //
159  //Setup Sensor data format to 100 Hz
160  //
161 
162  uint16_t sensor_base_rate;
163 
164  //Note: Querying the device base rate is only one way to calculate the descriptor decimation.
165  //We could have also set it directly with information from the datasheet (shown in GNSS setup).
166 
168  exit_gracefully("ERROR: Could not get sensor base rate format!");
169 
170  const uint16_t sensor_sample_rate = 100; // Hz
171  const uint16_t sensor_decimation = sensor_base_rate / sensor_sample_rate;
172 
173  const mip_descriptor_rate sensor_descriptors[4] = {
174  { MIP_DATA_DESC_SHARED_GPS_TIME, sensor_decimation },
175  { MIP_DATA_DESC_SENSOR_ACCEL_SCALED, sensor_decimation },
176  { MIP_DATA_DESC_SENSOR_GYRO_SCALED, sensor_decimation },
177  { MIP_DATA_DESC_SENSOR_MAG_SCALED, sensor_decimation },
178  };
179 
181  exit_gracefully("ERROR: Could not set sensor message format!");
182 
183 
184  //
185  //Setup FILTER data format
186  //
187 
188  uint16_t filter_base_rate;
189 
191  exit_gracefully("ERROR: Could not get filter base rate format!");
192 
193  const uint16_t filter_sample_rate = 100; // Hz
194  const uint16_t filter_decimation = filter_base_rate / filter_sample_rate;
195 
196  const mip_descriptor_rate filter_descriptors[3] = {
197  { MIP_DATA_DESC_SHARED_GPS_TIME, filter_decimation },
198  { MIP_DATA_DESC_FILTER_FILTER_STATUS, filter_decimation },
199  { MIP_DATA_DESC_FILTER_ATT_EULER_ANGLES, filter_decimation },
200  };
201 
203  exit_gracefully("ERROR: Could not set filter message format!");
204 
205 
206  //
207  // Setup event triggers/actions on > 45 degrees filter pitch and roll Euler angles
208  // (Note 1: we are reusing the event and action structs, since the settings for pitch/roll are so similar)
209  // (Note 2: we are using the same value for event and action ids. This is not necessary, but done here for convenience)
210  //
211 
212  //EVENTS
213 
214  //Roll
215  union mip_3dm_event_trigger_command_parameters event_params;
219  event_params.threshold.param_id = 1;
220  event_params.threshold.high_thres = -0.7853981;
221  event_params.threshold.low_thres = 0.7853981;
222 
224  exit_gracefully("ERROR: Could not set pitch event parameters!");
225 
226  //Pitch
227  event_params.threshold.param_id = 2;
228 
230  exit_gracefully("ERROR: Could not set roll event parameters!");
231 
232  //ACTIONS
233 
234  //Roll
235  union mip_3dm_event_action_command_parameters event_action;
237  event_action.message.num_fields = 1;
239  event_action.message.decimation = 0;
240 
242  exit_gracefully("ERROR: Could not set roll action parameters!");
243 
244  //Pitch
246  exit_gracefully("ERROR: Could not set pitch action parameters!");
247 
248  //ENABLE EVENTS
249 
250  //Roll
252  exit_gracefully("ERROR: Could not enable roll event!");
253 
254  //Pitch
256  exit_gracefully("ERROR: Could not enable pitch event!");
257 
258 
259  //
260  //Setup the sensor to vehicle transformation
261  //
262 
264  exit_gracefully("ERROR: Could not set sensor-to-vehicle transformation!");
265 
266 
267  //
268  //Setup the filter aiding measurements (GNSS position/velocity and dual antenna [aka gnss heading])
269  //
270 
272  exit_gracefully("ERROR: Could not set filter aiding measurement enable!");
273 
274 
275  //
276  //Reset the filter (note: this is good to do after filter setup is complete)
277  //
278 
280  exit_gracefully("ERROR: Could not reset the filter!");
281 
282 
283  //
284  // Register data callbacks
285  //
286 
287  //Sensor Data
288  mip_dispatch_handler sensor_data_handlers[4];
289 
294 
295  //Filter Data
296  mip_dispatch_handler filter_data_handlers[4];
297 
301 
303 
304  //
305  //Resume the device
306  //
307 
309  exit_gracefully("ERROR: Could not resume the device!");
310 
311 
312  //
313  //Main Loop: Update the interface and process data
314  //
315 
316  bool running = true;
317  mip_timestamp prev_print_timestamp = 0;
318 
319  printf("Sensor is configured... waiting for filter to enter AHRS mode.\n");
320 
321  while(running)
322  {
323  mip_interface_update(&device, false);
324 
325  //Check Filter State
327  {
328  printf("NOTE: Filter has entered AHRS mode.\n");
329  filter_state_ahrs = true;
330  }
331 
332  //Once in full nav, print out data at 10 Hz
334  {
335  mip_timestamp curr_time = get_current_timestamp();
336 
337  if(curr_time - prev_print_timestamp >= 100)
338  {
339  printf("TOW = %f: ATT_EULER = [%f %f %f]\n",
341 
342  prev_print_timestamp = curr_time;
343  }
344  }
345 
346  running = !should_exit();
347  }
348 
349 
350  exit_gracefully("Example Completed Successfully.");
351 }
352 
353 
355 // Filter Event Source Field Handler
357 
358 void handle_filter_event_source(void* user, const mip_field* field, mip_timestamp timestamp)
359 {
361 
363  {
364  if(data.trigger_id == FILTER_ROLL_EVENT_ACTION_ID)
365  printf("WARNING: Roll event triggered!\n");
366  else if(data.trigger_id == FILTER_PITCH_EVENT_ACTION_ID)
367  printf("WARNING: Pitch event triggered!\n");
368  }
369 }
370 
371 
373 // MIP Interface Time Access Function
375 
377 {
378  clock_t curr_time;
379  curr_time = clock();
380 
381  return (mip_timestamp)((double)(curr_time - start_time) / (double)CLOCKS_PER_SEC * 1000.0);
382 }
383 
384 
386 // MIP Interface User Recv Data Function
388 
389 bool mip_interface_user_recv_from_device(mip_interface* device, uint8_t* buffer, size_t max_length, mip_timeout wait_time, size_t* out_length, mip_timestamp* timestamp_out)
390 {
391  *timestamp_out = get_current_timestamp();
392  return serial_port_read(&device_port, buffer, max_length, wait_time, out_length);
393 }
394 
395 
397 // MIP Interface User Send Data Function
399 
400 bool mip_interface_user_send_to_device(mip_interface* device, const uint8_t* data, size_t length)
401 {
402  size_t bytes_written;
403 
404  return serial_port_write(&device_port, data, length, &bytes_written);
405 }
406 
407 
409 // Print Usage Function
411 
412 int usage(const char* argv0)
413 {
414  printf("Usage: %s <port> <baudrate>\n", argv0);
415  return 1;
416 }
417 
418 
420 // Exit Function
422 
423 void exit_gracefully(const char *message)
424 {
425  if(message)
426  printf("%s\n", message);
427 
428  //Close com port
431 
432 #ifdef _WIN32
433  int dummy = getchar();
434 #endif
435 
436  exit(0);
437 }
438 
439 
441 // Check for Exit Condition
443 
445 {
446  return false;
447 
448 }
449 
mip_filter_euler_angles_data
Definition: data_filter.h:329
filter_gps_time
mip_shared_gps_timestamp_data filter_gps_time
Definition: CV7_example.c:58
mip_3dm_event_action_command_message_params::descriptors
uint8_t descriptors[20]
List of field descriptors.
Definition: commands_3dm.h:1637
mip_filter_status_data::filter_state
mip_filter_mode filter_state
Device-specific filter state. Please consult the user manual for definition.
Definition: data_filter.h:527
mip_interface_register_extractor
void mip_interface_register_extractor(mip_interface *device, mip_dispatch_handler *handler, uint8_t descriptor_set, uint8_t field_descriptor, mip_dispatch_extractor extractor, void *field_ptr)
Registers a callback for packets of the specified descriptor set.
Definition: mip_interface.c:725
mip_sensor_scaled_gyro_data
Definition: data_sensor.h:181
mip_3dm_event_trigger_command_threshold_params::high_thres
double high_thres
Definition: commands_3dm.h:1522
extract_mip_shared_event_source_data_from_field
bool extract_mip_shared_event_source_data_from_field(const mip_field *field, void *ptr)
Definition: data_shared.c:40
start_time
clock_t start_time
Definition: CV7_example.c:43
mip_all.h
mip_base_set_idle
mip_cmd_result mip_base_set_idle(struct mip_interface *device)
Definition: commands_base.c:97
MIP_FILTER_AIDING_MEASUREMENT_ENABLE_COMMAND_AIDING_SOURCE_MAGNETOMETER
static const mip_filter_aiding_measurement_enable_command_aiding_source MIP_FILTER_AIDING_MEASUREMENT_ENABLE_COMMAND_AIDING_SOURCE_MAGNETOMETER
Magnetometer (built-in sensor)
Definition: commands_filter.h:1764
FILTER_PITCH_EVENT_ACTION_ID
const uint8_t FILTER_PITCH_EVENT_ACTION_ID
Definition: CV7_example.c:65
MIP_3DM_EVENT_TRIGGER_COMMAND_THRESHOLD_PARAMS_TYPE_WINDOW
static const mip_3dm_event_trigger_command_threshold_params_type MIP_3DM_EVENT_TRIGGER_COMMAND_THRESHOLD_PARAMS_TYPE_WINDOW
Window comparison. Trigger is active if low_thres <= value <= high_thres. If the thresholds are rever...
Definition: commands_3dm.h:1506
mip_3dm_default_device_settings
mip_cmd_result mip_3dm_default_device_settings(struct mip_interface *device)
Definition: commands_3dm.c:1126
mip_3dm_event_trigger_command_parameters::threshold
mip_3dm_event_trigger_command_threshold_params threshold
Definition: commands_3dm.h:1557
mip_filter_euler_angles_data::pitch
float pitch
[radians]
Definition: data_filter.h:332
serial_port.h
time.h
extract_mip_shared_gps_timestamp_data_from_field
bool extract_mip_shared_gps_timestamp_data_from_field(const mip_field *field, void *ptr)
Definition: data_shared.c:108
serial_port_open
bool serial_port_open(serial_port *port, const char *port_str, int baudrate)
Definition: serial_port.c:73
mip_3dm_write_sensor_2_vehicle_transform_euler
mip_cmd_result mip_3dm_write_sensor_2_vehicle_transform_euler(struct mip_interface *device, float roll, float pitch, float yaw)
Definition: commands_3dm.c:4425
extract_mip_sensor_scaled_mag_data_from_field
bool extract_mip_sensor_scaled_mag_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:172
mip_3dm_write_event_action
mip_cmd_result mip_3dm_write_event_action(struct mip_interface *device, uint8_t instance, uint8_t trigger, mip_3dm_event_action_command_type type, const mip_3dm_event_action_command_parameters *parameters)
Definition: commands_3dm.c:3645
mip_interface_register_field_callback
void mip_interface_register_field_callback(mip_interface *device, mip_dispatch_handler *handler, uint8_t descriptor_set, uint8_t field_descriptor, mip_dispatch_field_callback callback, void *user_data)
Registers a callback for packets of the specified descriptor set.
Definition: mip_interface.c:703
main
int main(int argc, const char *argv[])
Definition: CV7_example.c:92
mip_3dm_write_message_format
mip_cmd_result mip_3dm_write_message_format(struct mip_interface *device, uint8_t desc_set, uint8_t num_descriptors, const mip_descriptor_rate *descriptors)
Definition: commands_3dm.c:822
MIP_DATA_DESC_SHARED_EVENT_SOURCE
@ MIP_DATA_DESC_SHARED_EVENT_SOURCE
Definition: data_shared.h:37
port
int port
Definition: CV7_example.c:45
serial_port_close
bool serial_port_close(serial_port *port)
Definition: serial_port.c:258
filter_state_ahrs
bool filter_state_ahrs
Definition: CV7_example.c:62
serial_port
Definition: serial_port.h:40
mip_shared_gps_timestamp_data::tow
double tow
GPS Time of Week [seconds].
Definition: data_shared.h:144
mip_3dm_event_action_command_message_params::num_fields
uint8_t num_fields
Number of mip fields in the packet. Limited to 12.
Definition: commands_3dm.h:1636
data
data
exit_gracefully
void exit_gracefully(const char *message)
Definition: CV7_example.c:423
MIP_DATA_DESC_SENSOR_MAG_SCALED
@ MIP_DATA_DESC_SENSOR_MAG_SCALED
Definition: data_sensor.h:41
get_current_timestamp
mip_timestamp get_current_timestamp()
Definition: CV7_example.c:376
MIP_DATA_DESC_SHARED_GPS_TIME
@ MIP_DATA_DESC_SHARED_GPS_TIME
Definition: data_shared.h:40
should_exit
bool should_exit()
Definition: CV7_example.c:444
usage
int usage(const char *argv0)
Definition: CV7_example.c:412
parse_buffer
uint8_t parse_buffer[1024]
Definition: CV7_example.c:46
mip_3dm_write_event_trigger
mip_cmd_result mip_3dm_write_event_trigger(struct mip_interface *device, uint8_t instance, mip_3dm_event_trigger_command_type type, const mip_3dm_event_trigger_command_parameters *parameters)
Definition: commands_3dm.c:3375
mip_base_resume
mip_cmd_result mip_base_resume(struct mip_interface *device)
Definition: commands_base.c:161
mip_field
A structure representing a MIP field.
Definition: mip_field.h:52
mip_3dm_event_action_command_parameters::message
mip_3dm_event_action_command_message_params message
Definition: commands_3dm.h:1649
device_port
serial_port device_port
Definition: CV7_example.c:42
device
mip_interface device
Definition: CV7_example.c:47
mip_timestamp
uint64_t mip_timestamp
Type used for packet timestamps and timeouts.
Definition: mip_types.h:32
MIP_3DM_EVENT_ACTION_COMMAND_TYPE_MESSAGE
static const mip_3dm_event_action_command_type MIP_3DM_EVENT_ACTION_COMMAND_TYPE_MESSAGE
Output a data packet. See MessageParameters.
Definition: commands_3dm.h:1644
sensor_mag
mip_sensor_scaled_mag_data sensor_mag
Definition: CV7_example.c:56
MIP_ACK_OK
@ MIP_ACK_OK
Command completed successfully.
Definition: mip_result.h:38
serial_port_read
bool serial_port_read(serial_port *port, void *buffer, size_t num_bytes, int wait_time, size_t *bytes_read)
Definition: serial_port.c:308
mip_interface_default_update
bool mip_interface_default_update(struct mip_interface *device, mip_timeout wait_time)
Polls the port for new data or command replies.
Definition: mip_interface.c:415
mip_3dm_event_trigger_command_threshold_params::low_thres
double low_thres
Definition: commands_3dm.h:1517
filter_euler_angles
mip_filter_euler_angles_data filter_euler_angles
Definition: CV7_example.c:60
MIP_3DM_EVENT_TRIGGER_COMMAND_TYPE_THRESHOLD
static const mip_3dm_event_trigger_command_type MIP_3DM_EVENT_TRIGGER_COMMAND_TYPE_THRESHOLD
Compare a data quantity against a high and low threshold. See ThresholdParams.
Definition: commands_3dm.h:1551
sensor_to_vehicle_transformation_euler
float sensor_to_vehicle_transformation_euler[3]
Definition: CV7_example.c:50
mip_3dm_write_event_control
mip_cmd_result mip_3dm_write_event_control(struct mip_interface *device, uint8_t instance, mip_3dm_event_control_command_mode mode)
Definition: commands_3dm.c:2874
MIP_DATA_DESC_FILTER_FILTER_STATUS
@ MIP_DATA_DESC_FILTER_FILTER_STATUS
Definition: data_filter.h:51
MIP_SENSOR_DATA_DESC_SET
@ MIP_SENSOR_DATA_DESC_SET
Definition: data_sensor.h:34
mip_interface_update
bool mip_interface_update(struct mip_interface *device, mip_timeout wait_time)
Call to process data from the device.
Definition: mip_interface.c:392
FILTER_ROLL_EVENT_ACTION_ID
const uint8_t FILTER_ROLL_EVENT_ACTION_ID
Definition: CV7_example.c:64
mip_filter_euler_angles_data::yaw
float yaw
[radians]
Definition: data_filter.h:333
mip_filter_reset
mip_cmd_result mip_filter_reset(struct mip_interface *device)
Definition: commands_filter.c:63
sensor_gyro
mip_sensor_scaled_gyro_data sensor_gyro
Definition: CV7_example.c:55
mip_3dm_event_trigger_command_threshold_params::field_desc
uint8_t field_desc
Field descriptor of target data quantity.
Definition: commands_3dm.h:1512
mip_3dm_event_trigger_command_threshold_params::type
mip_3dm_event_trigger_command_threshold_params_type type
Determines the type of comparison.
Definition: commands_3dm.h:1514
mip_3dm_get_base_rate
mip_cmd_result mip_3dm_get_base_rate(struct mip_interface *device, uint8_t desc_set, uint16_t *rate_out)
Definition: commands_3dm.c:738
MIP_DATA_DESC_FILTER_ATT_EULER_ANGLES
@ MIP_DATA_DESC_FILTER_ATT_EULER_ANGLES
Definition: data_filter.h:40
MIP_FILTER_DATA_DESC_SET
@ MIP_FILTER_DATA_DESC_SET
Definition: data_filter.h:34
MIP_DATA_DESC_SENSOR_ACCEL_SCALED
@ MIP_DATA_DESC_SENSOR_ACCEL_SCALED
Definition: data_sensor.h:39
mip_interface_user_send_to_device
bool mip_interface_user_send_to_device(mip_interface *device, const uint8_t *data, size_t length)
Definition: CV7_example.c:400
mip_dispatch_handler
Handler information for MIP Packet or Field callbacks.
Definition: mip_dispatch.h:87
sensor_gps_time
mip_shared_gps_timestamp_data sensor_gps_time
Definition: CV7_example.c:53
mip_sensor_scaled_mag_data
Definition: data_sensor.h:201
mip_3dm_event_trigger_command_parameters
Definition: commands_3dm.h:1554
MIP_DATA_DESC_SENSOR_GYRO_SCALED
@ MIP_DATA_DESC_SENSOR_GYRO_SCALED
Definition: data_sensor.h:40
serial_port_write
bool serial_port_write(serial_port *port, const void *buffer, size_t num_bytes, size_t *bytes_written)
Definition: serial_port.c:274
extract_mip_filter_euler_angles_data_from_field
bool extract_mip_filter_euler_angles_data_from_field(const mip_field *field, void *ptr)
Definition: data_filter.c:234
mip_3dm_event_trigger_command_threshold_params::desc_set
uint8_t desc_set
Descriptor set of target data quantity.
Definition: commands_3dm.h:1511
mip_3dm_event_trigger_command_threshold_params::param_id
uint8_t param_id
1-based index of the target parameter within the MIP field. E.g. for Scaled Accel (0x80,...
Definition: commands_3dm.h:1513
mip_timeout
mip_timestamp mip_timeout
Definition: mip_types.h:35
MIP_FILTER_MODE_AHRS
static const mip_filter_mode MIP_FILTER_MODE_AHRS
Definition: data_filter.h:112
mip_filter_euler_angles_data::roll
float roll
[radians]
Definition: data_filter.h:331
mip_shared_gps_timestamp_data
Definition: data_shared.h:142
serial_port_is_open
bool serial_port_is_open(const serial_port *port)
Definition: serial_port.c:419
mip_descriptor_rate
Definition: common.h:20
mip_interface
State of the interface for communicating with a MIP device.
Definition: mip_interface.h:44
length
TF2SIMD_FORCE_INLINE tf2Scalar length(const Quaternion &q)
mip_3dm_event_action_command_message_params::desc_set
uint8_t desc_set
MIP data descriptor set.
Definition: commands_3dm.h:1634
mip_sensor_scaled_accel_data
Definition: data_sensor.h:161
mip_interface_init
void mip_interface_init(mip_interface *device, uint8_t *parse_buffer, size_t parse_buffer_size, mip_timeout parse_timeout, mip_timeout base_reply_timeout, mip_send_callback send, mip_recv_callback recv, mip_update_callback update, void *user_pointer)
Initialize the mip_interface components.
Definition: mip_interface.c:144
mip_base_ping
mip_cmd_result mip_base_ping(struct mip_interface *device)
Definition: commands_base.c:93
mip_3dm_event_action_command_message_params::decimation
uint16_t decimation
Decimation from the base rate. If 0, a packet is emitted each time the trigger activates....
Definition: commands_3dm.h:1635
mip_interface_user_recv_from_device
bool mip_interface_user_recv_from_device(mip_interface *device, uint8_t *buffer, size_t max_length, mip_timeout wait_time, size_t *out_length, mip_timestamp *timestamp_out)
Definition: CV7_example.c:389
mip_timeout_from_baudrate
mip_timeout mip_timeout_from_baudrate(uint32_t baudrate)
Computes an appropriate packet timeout for a given serial baud rate.
Definition: mip_parser.c:475
mip_filter_status_data
Definition: data_filter.h:525
sensor_accel
mip_sensor_scaled_accel_data sensor_accel
Definition: CV7_example.c:54
mip_filter_write_aiding_measurement_enable
mip_cmd_result mip_filter_write_aiding_measurement_enable(struct mip_interface *device, mip_filter_aiding_measurement_enable_command_aiding_source aiding_source, bool enable)
Definition: commands_filter.c:4242
mip_3dm_event_action_command_parameters
Definition: commands_3dm.h:1646
filter_status
mip_filter_status_data filter_status
Definition: CV7_example.c:59
mip_shared_event_source_data
Definition: data_shared.h:68
extract_mip_filter_status_data_from_field
bool extract_mip_filter_status_data_from_field(const mip_field *field, void *ptr)
Definition: data_filter.c:490
handle_filter_event_source
void handle_filter_event_source(void *user, const mip_field *field, mip_timestamp timestamp)
Definition: CV7_example.c:358
MIP_3DM_EVENT_CONTROL_COMMAND_MODE_ENABLED
static const mip_3dm_event_control_command_mode MIP_3DM_EVENT_CONTROL_COMMAND_MODE_ENABLED
Trigger is enabled and will work normally.
Definition: commands_3dm.h:1362
extract_mip_sensor_scaled_gyro_data_from_field
bool extract_mip_sensor_scaled_gyro_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:150
extract_mip_sensor_scaled_accel_data_from_field
bool extract_mip_sensor_scaled_accel_data_from_field(const mip_field *field, void *ptr)
Definition: data_sensor.c:128


microstrain_inertial_driver
Author(s): Brian Bingham, Parker Hannifin Corp
autogenerated on Fri May 24 2024 06:48:21