#pragma once
#include <stddef.h>

#ifdef __cplusplus
extern "C" {
#endif

/// @brief Interface to get a sensor value
typedef float (*get_sensor_value_t)(void);

typedef struct {
    const char* name;
    get_sensor_value_t get_value;
} sensor_t;

typedef struct {
    sensor_t sensor;
    size_t interval;
} sensor_config_t;

typedef struct {
    const char* name;
    float value;
} sensor_data_t;

size_t get_target_sensors(
    const sensor_config_t* sensors,
    size_t max_sensors, size_t iteration,
    const sensor_t* target_sensors[]);

void sensor_data_collect(const sensor_t* sensors[],
                         size_t num_sensors,
                         sensor_data_t* values);

#ifdef __cplusplus
}
#endif
