6#ifndef INCLUDE_ZEPHYR_SYS_LINEAR_RANGE_H_ 
    7#define INCLUDE_ZEPHYR_SYS_LINEAR_RANGE_H_ 
   79#define LINEAR_RANGE_INIT(_min, _step, _min_idx, _max_idx)                     \ 
   83                .min_idx = (_min_idx),                                         \ 
   84                .max_idx = (_max_idx),                                         \ 
   96        return r->max_idx - 
r->min_idx + 1U;
 
  112        for (
size_t i = 0U; i < r_cnt; i++) {
 
  128        return r->min + (
int32_t)(
r->step * (
r->max_idx - 
r->min_idx));
 
  144        if ((idx < r->min_idx) || (idx > 
r->max_idx)) {
 
  148        *val = 
r->min + (
int32_t)(
r->step * (idx - 
r->min_idx));
 
  170        for (
size_t i = 0U; (
ret != 0) && (i < r_cnt); i++) {
 
  234        for (
size_t i = 0U; i < r_cnt; i++) {
 
  236                    (i < (r_cnt - 1U))) {
 
  271        if ((
r->min + 
r->step * (*idx - 
r->min_idx)) > val_max) {
 
  304        for (
size_t i = 0U; i < r_cnt; i++) {
 
workaround assembler barfing for ST r
Definition: asm-macro-32-bit-gnu.h:24
 
static int linear_range_group_get_win_index(const struct linear_range *r, size_t r_cnt, int32_t val_min, int32_t val_max, uint16_t *idx)
Obtain index in a group given a value that must be within a window of values.
Definition: linear_range.h:298
 
static uint32_t linear_range_group_values_count(const struct linear_range *r, size_t r_cnt)
Obtain the number of values representable by a group of linear ranges.
Definition: linear_range.h:107
 
static int linear_range_get_win_index(const struct linear_range *r, int32_t val_min, int32_t val_max, uint16_t *idx)
Obtain index given a window of values.
Definition: linear_range.h:264
 
static int linear_range_get_value(const struct linear_range *r, uint16_t idx, int32_t *val)
Obtain value given a linear range index.
Definition: linear_range.h:141
 
static int linear_range_get_index(const struct linear_range *r, int32_t val, uint16_t *idx)
Obtain index given a value.
Definition: linear_range.h:192
 
static int linear_range_group_get_index(const struct linear_range *r, size_t r_cnt, int32_t val, uint16_t *idx)
Obtain index in a group given a value.
Definition: linear_range.h:230
 
static int linear_range_group_get_value(const struct linear_range *r, size_t r_cnt, uint16_t idx, int32_t *val)
Obtain value in a group given a linear range index.
Definition: linear_range.h:164
 
static uint32_t linear_range_values_count(const struct linear_range *r)
Obtain the number of values representable in a linear range.
Definition: linear_range.h:94
 
static int32_t linear_range_get_max_value(const struct linear_range *r)
Obtain the maximum value representable by a linear range.
Definition: linear_range.h:126
 
#define ceiling_fraction(numerator, divider)
Ceiling function applied to numerator / divider as a fraction.
Definition: util.h:247
 
#define EINVAL
Definition: errno.h:61
 
#define ERANGE
Definition: errno.h:73
 
static ZTEST_BMEM volatile int ret
Definition: k_float_disable.c:28
 
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
 
__INT32_TYPE__ int32_t
Definition: stdint.h:74
 
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
 
Linear range.
Definition: linear_range.h:60
 
int32_t min
Definition: linear_range.h:62
 
uint16_t min_idx
Definition: linear_range.h:66
 
uint16_t max_idx
Definition: linear_range.h:68
 
uint32_t step
Definition: linear_range.h:64