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
27
29struct imu_sample {
31 int16_t x;
33 int16_t y;
35 int16_t z;
36};
37/* Validate __packed attribute is not required */
38BUILD_ASSERT(sizeof(struct imu_sample) == 6);
39BUILD_ASSERT(_Alignof(struct imu_sample) == 2);
40
50 uint16_t offset;
52 uint16_t num;
53};
54
66
68#define IMU_SAMPLE_ARRAY_TYPE_DEFINE(type_name, max_samples) \
69 struct type_name { \
70 struct imu_sample_array header; \
71 struct imu_sample samples[max_samples]; \
72 }
73
75#define IMU_SAMPLE_ARRAY_CREATE(name, max_samples) \
76 IMU_SAMPLE_ARRAY_TYPE_DEFINE(_anon_t_##name, max_samples); \
77 static struct _anon_t_##name _anon_##name; \
78 static struct imu_sample_array *name = (void *)&_anon_##name
79
85 uint32_t magnitudes[];
86};
87
89#define IMU_MAG_ARRAY_TYPE_DEFINE(type_name, max_samples) \
90 struct type_name { \
91 struct imu_sensor_meta meta; \
92 uint32_t magnitudes[max_samples]; \
93 }
94
98
99#ifdef __cplusplus
100}
101#endif
102
103#endif /* INFUSE_SDK_INCLUDE_INFUSE_DRIVERS_IMU_DATA_TYPES_H_ */
Accelerometer magnitude broadcast structure.
Definition data_types.h:81
struct imu_sensor_meta meta
Metadata for magnitude samples.
Definition data_types.h:83
uint32_t magnitudes[]
Linear array of all magnitudes (raw sensor units)
Definition data_types.h:85
FIFO read structure.
Definition data_types.h:56
struct imu_sensor_meta gyroscope
Metadata for gyroscope samples.
Definition data_types.h:60
struct imu_sensor_meta accelerometer
Metadata for accelerometer samples.
Definition data_types.h:58
struct imu_sample samples[]
Linear array of all samples.
Definition data_types.h:64
struct imu_sensor_meta magnetometer
Metadata for magnetometer samples.
Definition data_types.h:62
IMU sample struct.
Definition data_types.h:29
int16_t x
X axis reading (raw sensor units, see imu_sensor_meta::full_scale_range)
Definition data_types.h:31
int16_t z
Z axis reading (raw sensor units, see imu_sensor_meta::full_scale_range)
Definition data_types.h:35
int16_t y
Y axis reading (raw sensor units, see imu_sensor_meta::full_scale_range)
Definition data_types.h:33
Metadata for each sub-sensor in a FIFO buffer.
Definition data_types.h:42
uint32_t buffer_period_ticks
Real period between first and last samples in buffer.
Definition data_types.h:46
uint16_t offset
Offset into sample array of sensor.
Definition data_types.h:50
uint16_t num
Number of readings for this sensor.
Definition data_types.h:52
uint16_t full_scale_range
Accel = G, Gyro = DPS, Mag = ?
Definition data_types.h:48
int64_t timestamp_ticks
Local tick counter of first sample.
Definition data_types.h:44