Infuse-IoT SDK API 0.0.1
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
IMU API

Infuse IMU API . More...

Data Structures

struct  imu_config
 IMU configuration struct. More...
 
struct  imu_config_output
 Configured IMU value. More...
 
struct  imu_sample
 
struct  imu_sensor_meta
 Metadata for each sub-sensor in a FIFO buffer. More...
 
struct  imu_sample_array
 FIFO read structure. More...
 
struct  infuse_imu_api
 
struct  imu_linear_downsample_scaled_state
 State for imu_linear_downsample_scaled. More...
 

Macros

#define IMU_SAMPLE_ARRAY_TYPE_DEFINE(type_name, max_samples)
 Create type that holds a given number of IMU samples.
 
#define IMU_SAMPLE_ARRAY_CREATE(name, max_samples)
 Create static buffer of IMU samples suitable for use with imu_data_read.
 

Functions

static int imu_configure (const struct device *dev, const struct imu_config *config, struct imu_config_output *output)
 Configure IMU for operation.
 
static int imu_data_wait (const struct device *dev, k_timeout_t timeout)
 Wait for FIFO interrupt from IMU.
 
static int imu_data_read (const struct device *dev, struct imu_sample_array *samples, uint16_t max_samples)
 Read samples from IMU.
 
static int imu_self_test (const struct device *dev)
 Run self-test functionality on the IMU.
 
static int16_t imu_accelerometer_1g (uint8_t full_scale)
 Convert a full scale range to an expected value for 1G.
 
static uint32_t imu_sample_period (const struct imu_sensor_meta *meta)
 Get the local ticks between samples in a buffer.
 
static uint16_t imu_sample_rate (const struct imu_sensor_meta *meta)
 Get the approximate sample rate of a buffer.
 
static k_ticks_t imu_sample_timestamp (const struct imu_sensor_meta *meta, uint8_t sample)
 Get the local tick counter of a given sample in a buffer.
 
int imu_linear_downsample_scaled (struct imu_linear_downsample_scaled_state *state, const struct imu_sample *input, uint16_t num_input)
 Downsample IMU samples to a new frequency using linear interpolation.
 

Detailed Description

Infuse IMU API .

Macro Definition Documentation

◆ IMU_SAMPLE_ARRAY_CREATE

#define IMU_SAMPLE_ARRAY_CREATE ( name,
max_samples )

#include <infuse/drivers/imu.h>

Value:
IMU_SAMPLE_ARRAY_TYPE_DEFINE(_anon_t_##name, max_samples); \
static struct _anon_t_##name _anon_##name; \
static struct imu_sample_array *name = (void *)&_anon_##name
#define IMU_SAMPLE_ARRAY_TYPE_DEFINE(type_name, max_samples)
Create type that holds a given number of IMU samples.
Definition imu.h:99
FIFO read structure.
Definition imu.h:87

Create static buffer of IMU samples suitable for use with imu_data_read.

◆ IMU_SAMPLE_ARRAY_TYPE_DEFINE

#define IMU_SAMPLE_ARRAY_TYPE_DEFINE ( type_name,
max_samples )

#include <infuse/drivers/imu.h>

Value:
struct type_name { \
struct imu_sample_array header; \
struct imu_sample samples[max_samples]; \
}
Definition imu.h:66

Create type that holds a given number of IMU samples.

Function Documentation

◆ imu_accelerometer_1g()

static int16_t imu_accelerometer_1g ( uint8_t full_scale)
inlinestatic

#include <infuse/drivers/imu.h>

Convert a full scale range to an expected value for 1G.

Parameters
full_scaleFull scale range in G's (e.g 4 for +- 4G)
Returns
int16_t value expected for 1G

◆ imu_configure()

static int imu_configure ( const struct device * dev,
const struct imu_config * config,
struct imu_config_output * output )
inlinestatic

#include <infuse/drivers/imu.h>

Configure IMU for operation.

Parameters
devIMU to configure
configDesired sensor configuration, or NULL to disable
outputConfigured sensor timings
Return values
0on success
-EINVALon invalid parameters
-errnoon error

◆ imu_data_read()

static int imu_data_read ( const struct device * dev,
struct imu_sample_array * samples,
uint16_t max_samples )
inlinestatic

#include <infuse/drivers/imu.h>

Read samples from IMU.

Parameters
devIMU to read from
samplesSample buffer to read into
max_samplesMaximum number of samples to populate
Return values
0on success
1on success, but FIFO frames have been lost
-ENOMEMmore than max_samples samples buffered
-errnoon error

◆ imu_data_wait()

static int imu_data_wait ( const struct device * dev,
k_timeout_t timeout )
inlinestatic

#include <infuse/drivers/imu.h>

Wait for FIFO interrupt from IMU.

Parameters
devIMU to wait on
timeoutDuration to wait for
Return values
0on success
-EAGAINon timeout

◆ imu_linear_downsample_scaled()

int imu_linear_downsample_scaled ( struct imu_linear_downsample_scaled_state * state,
const struct imu_sample * input,
uint16_t num_input )

#include <infuse/drivers/imu.h>

Downsample IMU samples to a new frequency using linear interpolation.

Function returns as soon as state.output_offset == state.output_size. Function should be called again with remaining samples once output buffer has been processed and state.output_offset reset to 0.

output_frequency = input_frequency * freq_mult / freq_div

Parameters
stateState structure
inputInput IMU sample buffer
num_inputNumber of samples in input
Return values
numberof input samples consumed

◆ imu_sample_period()

static uint32_t imu_sample_period ( const struct imu_sensor_meta * meta)
inlinestatic

#include <infuse/drivers/imu.h>

Get the local ticks between samples in a buffer.

Parameters
metaMetadata for the relevant channel in a buffer
Returns
uint32_t Ticks between samples in the buffer

◆ imu_sample_rate()

static uint16_t imu_sample_rate ( const struct imu_sensor_meta * meta)
inlinestatic

#include <infuse/drivers/imu.h>

Get the approximate sample rate of a buffer.

Parameters
metaMetadata for the relevant channel in a buffer
Returns
uint16_t Approximate sample rate in Hertz

◆ imu_sample_timestamp()

static k_ticks_t imu_sample_timestamp ( const struct imu_sensor_meta * meta,
uint8_t sample )
inlinestatic

#include <infuse/drivers/imu.h>

Get the local tick counter of a given sample in a buffer.

Parameters
metaMetadata for the relevant channel in a buffer
sampleSample index to get timestamp for
Returns
k_ticks_t Timestamp for sample N in the buffer

◆ imu_self_test()

static int imu_self_test ( const struct device * dev)
inlinestatic

#include <infuse/drivers/imu.h>

Run self-test functionality on the IMU.

Parameters
devIMU to run self-test on
Return values
0on success
-errnoon error