82 lines
2.5 KiB
C
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
|