SystemAgent/lib/bme280_dht/bme280_dht.h

88 lines
1.9 KiB
C

#ifndef BME280_DHT_H
#define BME280_DHT_H
#include <stdint.h>
typedef int bme280_ret_t;
#define BME_OK 0
#define BME_FAIL -1
#define BME_MODE_SLEEP 0x00
#define BME_MODE_FORCED 0x01
#define BME_MODE_NORMAL 0x03
#define BME_OS_SKIP 0x00
#define BME_OS_1 0x01
#define BME_OS_2 0x02
#define BME_OS_4 0x03
#define BME_OS_8 0x04
#define BME_OS_16 0x05
#define BME_FILTER_OFF 0x00
#define BME_FILTER_2 0x01
#define BME_FILTER_4 0x02
#define BME_FILTER_8 0x03
#define BME_FILTER_16 0x04
typedef enum {
BME_PRESET_WEATHER,
BME_PRESET_HUMIDITY,
BME_PRESET_INDOOR_NAV,
BME_PRESET_GAMING
} bme280_mode_preset_t;
typedef struct {
bme280_ret_t (*read_register_cb)(void *handle, uint8_t reg, uint8_t *data, uint8_t len);
bme280_ret_t (*write_register_cb)(void *handle, uint8_t reg, uint8_t data);
} bme280_cb_t;
typedef struct {
unsigned short dig_T1;
short dig_T2;
short dig_T3;
unsigned short dig_P1;
short dig_P2;
short dig_P3;
short dig_P4;
short dig_P5;
short dig_P6;
short dig_P7;
short dig_P8;
short dig_P9;
unsigned char dig_H1;
short dig_H2;
unsigned char dig_H3;
short dig_H4;
short dig_H5;
char dig_H6;
} bme280_trim_t;
typedef struct {
uint8_t mode;
uint8_t osrs_t;
uint8_t osrs_p;
uint8_t osrs_h;
uint8_t t_sb;
uint8_t filter;
} bme280_config_t;
typedef struct {
double temperature;
double pressure;
double humidity;
} bme280_result_t;
typedef struct {
void *user_data;
bme280_trim_t trim;
bme280_cb_t cb;
int32_t t_fine;
} bme280_t;
bme280_ret_t bme280_init(bme280_t *bme);
bme280_ret_t bme280_preset_config(bme280_config_t *config, bme280_mode_preset_t preset);
bme280_ret_t bme280_apply_config(bme280_t *bme, bme280_config_t *config);
bme280_ret_t bme280_measure(bme280_t *bme, bme280_result_t *result);
#endif