12#ifndef INFUSE_SDK_INCLUDE_INFUSE_ALGORITHM_RUNNER_ALGORITHMS_TILT_H_
13#define INFUSE_SDK_INCLUDE_INFUSE_ALGORITHM_RUNNER_ALGORITHMS_TILT_H_
17#include <zephyr/toolchain.h>
68#define ALGORITHM_TILT_DEFINE(name, loggers_, tdfs, filter_alpha, one_g_valid_percent) \
69 static const struct algorithm_tilt_config name##_config = { \
72 .algorithm_id = 0x15F20001, \
73 .zbus_channel = INFUSE_ZBUS_CHAN_IMU, \
74 .state_size = sizeof(struct algorithm_tilt_data), \
77 .loggers = loggers_, \
81 .iir_filter_alpha = filter_alpha, \
82 .one_g_percent = one_g_valid_percent, \
84 static struct algorithm_tilt_data name##_data; \
85 static struct algorithm_runner_algorithm name = { \
86 .impl = algorithm_tilt_fn, \
87 .config = &name##_config.common, \
88 .runtime_state = &name##_data, \
Infuse-IoT algorithm runner.
Infuse-IoT zbus channels.
void algorithm_tilt_fn(const struct zbus_channel *chan, const void *config, void *data)
Algorithm implementation, see algorithm_run_fn.
@ ALGORITHM_TILT_LOG_ANGLE
Definition tilt.h:36
Autogenerated KV definitions.
Infuse-IoT statistics helpers.
float iir_filter_alpha
IIR filter alpha (see iir_filter_single_pole_f32)
Definition tilt.h:43
uint8_t one_g_percent
Percentage within one G magnitude must be to use for tilt calculation.
Definition tilt.h:45
struct algorithm_runner_common_config common
Common algorithm configuration.
Definition tilt.h:41
uint32_t kv_store_crc
Definition tilt.h:51
struct iir_filter_single_pole_f32 filter
Definition tilt.h:49
uint16_t gravity_mag
Definition tilt.h:52
struct kv_gravity_reference gravity
Definition tilt.h:50
bool reference_valid
Definition tilt.h:53
Floating point IIR single-pole filter.
Definition filter.h:147
Reference gravity vector for tilt calculations.
Definition kv_types.h:337