imsensors/include/imsensors/als/als_ltr_303als.h

82 lines
2.5 KiB
C

#ifndef IMS_ALS_LTR303ALS_H
#define IMS_ALS_LTR303ALS_H
#include "imsensors/common/sensors_common.h"
typedef enum {
IMS_LTR_303ALS_INT_100MS = 0U,
IMS_LTR_303ALS_INT_50MS = 1U,
IMS_LTR_303ALS_INT_200MS = 2U,
IMS_LTR_303ALS_INT_400MS = 3U,
IMS_LTR_303ALS_INT_150MS = 4U,
IMS_LTR_303ALS_INT_250MS = 5U,
IMS_LTR_303ALS_INT_300MS = 6U,
IMS_LTR_303ALS_INT_350MS = 7U,
} ims_ltr_303als_integration_time_t;
typedef enum {
IMS_LTR_303ALS_MEAS_50MS = 0U,
IMS_LTR_303ALS_MEAS_100MS = 1U,
IMS_LTR_303ALS_MEAS_200MS = 2U,
IMS_LTR_303ALS_MEAS_500MS = 3U,
IMS_LTR_303ALS_MEAS_1000MS = 4U,
IMS_LTR_303ALS_MEAS_2000MS = 5U,
} ims_ltr_303als_measurement_rate_t;
typedef enum {
IMS_LTR_303ALS_GAIN_1X = 0U,
IMS_LTR_303ALS_GAIN_2X = 1U,
IMS_LTR_303ALS_GAIN_4X = 2U,
IMS_LTR_303ALS_GAIN_8X = 3U,
IMS_LTR_303ALS_GAIN_48X = 6U,
IMS_LTR_303ALS_GAIN_96X = 7U,
} ims_ltr_303als_gain_t;
typedef enum {
IMS_LTR_303ALS_INT_ACTIVE_LOW = 0U,
IMS_LTR_303ALS_INT_ACTIVE_HIGH = 1U,
} ims_ltr_303als_int_polarity_t;
typedef enum {
IMS_LTR_303ALS_MODE_STANDBY = 0U,
IMS_LTR_303ALS_MODE_ACTIVE = 1U,
} ims_ltr_303als_mode_t;
typedef struct {
ims_ltr_303als_gain_t gain;
bool interrupt_en;
ims_ltr_303als_int_polarity_t interrupt_polarity;
uint16_t threshold_high;
uint16_t threshold_low;
ims_ltr_303als_integration_time_t integration_time;
ims_ltr_303als_measurement_rate_t measurement_rate;
} ims_ltr_303als_config_t;
typedef struct {
bool data_valid;
bool data_new;
bool interrupt_active;
ims_ltr_303als_gain_t gain;
uint16_t ch0_value;
uint16_t ch1_value;
} ims_ltr_303als_result_t;
typedef struct {
ims_i2c_xfer_t i2c_xfer;
ims_delay_t delay;
} ims_ltr_303als_cb_t;
typedef struct {
void *pdev;
ims_ltr_303als_cb_t cb;
} ims_ltr_303als_t;
ims_ret_t ims_ltr_303als_init(ims_ltr_303als_t *als);
void ims_ltr_303als_preset_config(ims_ltr_303als_config_t *cfg);
ims_ret_t ims_ltr_303als_config(ims_ltr_303als_t *als, ims_ltr_303als_config_t *config);
ims_ret_t ims_ltr_303als_set_mode(ims_ltr_303als_t *als, ims_ltr_303als_mode_t mode);
ims_ret_t ims_ltr_303als_get_mode(ims_ltr_303als_t *als, ims_ltr_303als_mode_t *mode);
ims_ret_t ims_ltr_303als_read(ims_ltr_303als_t *als, ims_ltr_303als_result_t *result);
#endif // IMS_ALS_LTR303ALS_H