Infuse-IoT SDK API 0.0.1
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
data_types.h
Go to the documentation of this file.
1
9
10#ifndef INFUSE_SDK_INCLUDE_INFUSE_DRIVERS_IMU_DATA_TYPES_H_
11#define INFUSE_SDK_INCLUDE_INFUSE_DRIVERS_IMU_DATA_TYPES_H_
12
13#include <stdint.h>
14
15#include <zephyr/toolchain.h>
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
26
28struct imu_sample {
29 int16_t x;
30 int16_t y;
31 int16_t z;
32};
33/* Validate __packed attribute is not required */
34BUILD_ASSERT(sizeof(struct imu_sample) == 6);
35BUILD_ASSERT(_Alignof(struct imu_sample) == 2);
36
46 uint16_t offset;
48 uint16_t num;
49};
50
62
64#define IMU_SAMPLE_ARRAY_TYPE_DEFINE(type_name, max_samples) \
65 struct type_name { \
66 struct imu_sample_array header; \
67 struct imu_sample samples[max_samples]; \
68 }
69
71#define IMU_SAMPLE_ARRAY_CREATE(name, max_samples) \
72 IMU_SAMPLE_ARRAY_TYPE_DEFINE(_anon_t_##name, max_samples); \
73 static struct _anon_t_##name _anon_##name; \
74 static struct imu_sample_array *name = (void *)&_anon_##name
75
76/* Accelerometer magnitude broadcast structure */
78 /* Metadata for magnitude samples */
80 /* Linear array of all magnitudes */
81 uint32_t magnitudes[];
82};
83
84/* Create type that holds a given number of IMU magnitude samples */
85#define IMU_MAG_ARRAY_TYPE_DEFINE(type_name, max_samples) \
86 struct type_name { \
87 struct imu_sensor_meta meta; \
88 uint32_t magnitudes[max_samples]; \
89 }
90
94
95#ifdef __cplusplus
96}
97#endif
98
99#endif /* INFUSE_SDK_INCLUDE_INFUSE_DRIVERS_IMU_DATA_TYPES_H_ */
Definition data_types.h:77
struct imu_sensor_meta meta
Definition data_types.h:79
uint32_t magnitudes[]
Definition data_types.h:81
FIFO read structure.
Definition data_types.h:52
struct imu_sensor_meta gyroscope
Metadata for gyroscope samples.
Definition data_types.h:56
struct imu_sensor_meta accelerometer
Metadata for accelerometer samples.
Definition data_types.h:54
struct imu_sample samples[]
Linear array of all samples.
Definition data_types.h:60
struct imu_sensor_meta magnetometer
Metadata for magnetometer samples.
Definition data_types.h:58
IMU sample struct.
Definition data_types.h:28
int16_t x
Definition data_types.h:29
int16_t z
Definition data_types.h:31
int16_t y
Definition data_types.h:30
Metadata for each sub-sensor in a FIFO buffer.
Definition data_types.h:38
uint32_t buffer_period_ticks
Real period between first and last samples in buffer.
Definition data_types.h:42
uint16_t offset
Offset into sample array of sensor.
Definition data_types.h:46
uint16_t num
Number of readings for this sensor.
Definition data_types.h:48
uint16_t full_scale_range
Accel = G, Gyro = DPS, Mag = ?
Definition data_types.h:44
int64_t timestamp_ticks
Local tick counter of first sample.
Definition data_types.h:40