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

Infuse IMU API. More...

Topics

 Emulated IMU APIs
 Emulated IMU APIs.
 IMU Data Types API
 IMU data types.

Data Structures

struct  imu_config
 IMU configuration struct. More...
struct  imu_config_output
 Configured IMU value. More...
struct  infuse_imu_api
 Infuse IMU driver API. More...
struct  imu_linear_downsample_scaled_state
 State for imu_linear_downsample_scaled. More...

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.

Function Documentation

◆ imu_accelerometer_1g()

int16_t imu_accelerometer_1g ( uint8_t full_scale)
inlinestatic

#include </__w/infuse-sdk/infuse-sdk/infuse-sdk/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()

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

#include </__w/infuse-sdk/infuse-sdk/infuse-sdk/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()

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

#include </__w/infuse-sdk/infuse-sdk/infuse-sdk/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()

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

#include </__w/infuse-sdk/infuse-sdk/infuse-sdk/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 </__w/infuse-sdk/infuse-sdk/infuse-sdk/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()

uint32_t imu_sample_period ( const struct imu_sensor_meta * meta)
inlinestatic

#include </__w/infuse-sdk/infuse-sdk/infuse-sdk/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()

uint16_t imu_sample_rate ( const struct imu_sensor_meta * meta)
inlinestatic

#include </__w/infuse-sdk/infuse-sdk/infuse-sdk/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()

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

#include </__w/infuse-sdk/infuse-sdk/infuse-sdk/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()

int imu_self_test ( const struct device * dev)
inlinestatic

#include </__w/infuse-sdk/infuse-sdk/infuse-sdk/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