37#ifndef DRIVER_BME680_H 
   38#define DRIVER_BME680_H 
  140    uint8_t (*
iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);         
 
  141    uint8_t (*
iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);        
 
  144    uint8_t (*
spi_read)(uint8_t reg, uint8_t *buf, uint16_t len);                       
 
  145    uint8_t (*
spi_write)(uint8_t reg, uint8_t *buf, uint16_t len);                      
 
 
  214#define DRIVER_BME680_LINK_INIT(HANDLE, STRUCTURE)          memset(HANDLE, 0, sizeof(STRUCTURE)) 
  222#define DRIVER_BME680_LINK_IIC_INIT(HANDLE, FUC)           (HANDLE)->iic_init = FUC 
  230#define DRIVER_BME680_LINK_IIC_DEINIT(HANDLE, FUC)         (HANDLE)->iic_deinit = FUC 
  238#define DRIVER_BME680_LINK_IIC_READ(HANDLE, FUC)           (HANDLE)->iic_read = FUC 
  246#define DRIVER_BME680_LINK_IIC_WRITE(HANDLE, FUC)          (HANDLE)->iic_write = FUC 
  254#define DRIVER_BME680_LINK_SPI_INIT(HANDLE, FUC)           (HANDLE)->spi_init = FUC 
  262#define DRIVER_BME680_LINK_SPI_DEINIT(HANDLE, FUC)         (HANDLE)->spi_deinit = FUC 
  270#define DRIVER_BME680_LINK_SPI_READ(HANDLE, FUC)           (HANDLE)->spi_read = FUC 
  278#define DRIVER_BME680_LINK_SPI_WRITE(HANDLE, FUC)          (HANDLE)->spi_write = FUC 
  286#define DRIVER_BME680_LINK_DELAY_MS(HANDLE, FUC)           (HANDLE)->delay_ms = FUC 
  294#define DRIVER_BME680_LINK_DEBUG_PRINT(HANDLE, FUC)        (HANDLE)->debug_print = FUC 
  414                    uint32_t *pressure_raw, 
float *pressure_pa,
 
  415                    uint32_t *humidity_raw, 
float *humidity_percentage,
 
  416                    uint16_t *adc_raw, uint8_t *adc_range, 
float *ohms, uint8_t *index);
 
  437                                                  uint32_t *pressure_raw, 
float *pressure_pa,
 
  438                                                  uint32_t *humidity_raw, 
float *humidity_percentage);
 
uint8_t bme680_set_run_gas(bme680_handle_t *handle, bme680_bool_t enable)
enable or disable run gas
uint8_t bme680_gas_wait_convert_to_register(bme680_handle_t *handle, uint16_t ms, uint8_t *reg)
convert the gas wait to the register raw data
uint8_t bme680_set_filter(bme680_handle_t *handle, bme680_filter_t filter)
set filter
uint8_t bme680_read(bme680_handle_t *handle, uint32_t *temperature_raw, float *temperature_c, uint32_t *pressure_raw, float *pressure_pa, uint32_t *humidity_raw, float *humidity_percentage, uint16_t *adc_raw, uint8_t *adc_range, float *ohms, uint8_t *index)
read the temperature pressure humidity and gas resistance
uint8_t bme680_get_measuring_status(bme680_handle_t *handle, bme680_bool_t *enable)
get measuring status
uint8_t bme680_deinit(bme680_handle_t *handle)
close the chip
uint8_t bme680_get_mode(bme680_handle_t *handle, bme680_mode_t *mode)
get mode
uint8_t bme680_get_gas_measuring_index(bme680_handle_t *handle, uint8_t *index)
get gas measuring index
bme680_filter_t
bme680 filter enumeration definition
uint8_t bme680_set_temperature_oversampling(bme680_handle_t *handle, bme680_oversampling_t oversampling)
set temperature oversampling
uint8_t bme680_set_heat_off(bme680_handle_t *handle, bme680_bool_t enable)
enable or disable heat off
bme680_mode_t
bme680 mode enumeration definition
uint8_t bme680_set_interface(bme680_handle_t *handle, bme680_interface_t interface)
set the interface
uint8_t bme680_set_idac_heat(bme680_handle_t *handle, uint8_t index, uint8_t reg)
set idac heat
uint8_t bme680_set_convert_index(bme680_handle_t *handle, uint8_t index)
set convert index
uint8_t bme680_get_spi_wire_3_data_interrupt(bme680_handle_t *handle, bme680_bool_t *enable)
get spi wire3 data interrupt status
uint8_t bme680_read_pressure(bme680_handle_t *handle, uint32_t *pressure_raw, float *pressure_pa)
read the pressure data
uint8_t bme680_set_spi_wire_3_data_interrupt(bme680_handle_t *handle, bme680_bool_t enable)
enable or disable spi wire3 data interrupt
uint8_t bme680_get_temperature_oversampling(bme680_handle_t *handle, bme680_oversampling_t *oversampling)
get temperature oversampling
uint8_t bme680_get_resistance_heat(bme680_handle_t *handle, uint8_t index, uint8_t *reg)
get resistance heat
uint8_t bme680_get_heat_off(bme680_handle_t *handle, bme680_bool_t *enable)
get heat off status
uint8_t bme680_get_interface(bme680_handle_t *handle, bme680_interface_t *interface)
get the interface
bme680_interface_t
bme680 interface enumeration definition
uint8_t bme680_set_resistance_heat(bme680_handle_t *handle, uint8_t index, uint8_t reg)
set resistance heat
uint8_t bme680_set_gas_wait(bme680_handle_t *handle, uint8_t index, uint8_t reg)
set gas wait
uint8_t bme680_info(bme680_info_t *info)
get chip's information
struct bme680_info_s bme680_info_t
bme680 information structure definition
uint8_t bme680_read_temperature(bme680_handle_t *handle, uint32_t *temperature_raw, float *temperature_c)
read the temperature data
uint8_t bme680_get_idac_heat(bme680_handle_t *handle, uint8_t index, uint8_t *reg)
get idac heat
uint8_t bme680_read_humidity(bme680_handle_t *handle, uint32_t *humidity_raw, float *humidity_percentage)
read the humidity data
uint8_t bme680_get_filter(bme680_handle_t *handle, bme680_filter_t *filter)
get filter
uint8_t bme680_resistance_heat_convert_to_register(bme680_handle_t *handle, float degree_celsius, uint8_t *reg)
convert the resistance heat to the register raw data
uint8_t bme680_init(bme680_handle_t *handle)
initialize the chip
uint8_t bme680_get_spi_wire(bme680_handle_t *handle, bme680_spi_wire_t *spi)
get spi wire
bme680_address_t
bme680 address enumeration definition
uint8_t bme680_read_gas_resistance(bme680_handle_t *handle, uint16_t *adc_raw, uint8_t *adc_range, float *ohms, uint8_t *index)
read the gas resistance
uint8_t bme680_soft_reset(bme680_handle_t *handle)
soft reset
bme680_oversampling_t
bme680 oversampling enumeration definition
uint8_t bme680_get_humidity_oversampling(bme680_handle_t *handle, bme680_oversampling_t *oversampling)
get humidity oversampling
uint8_t bme680_get_new_data_status(bme680_handle_t *handle, bme680_bool_t *enable)
get new data status
uint8_t bme680_idac_heat_convert_to_register(bme680_handle_t *handle, float ma, uint8_t *reg)
convert the idac heat to the register raw data
uint8_t bme680_set_spi_wire(bme680_handle_t *handle, bme680_spi_wire_t spi)
set spi wire
bme680_bool_t
bme680 bool enumeration definition
uint8_t bme680_get_gas_measuring_status(bme680_handle_t *handle, bme680_bool_t *enable)
get gas measuring status
uint8_t bme680_set_addr_pin(bme680_handle_t *handle, bme680_address_t addr_pin)
set the iic address pin
uint8_t bme680_set_pressure_oversampling(bme680_handle_t *handle, bme680_oversampling_t oversampling)
set pressure oversampling
uint8_t bme680_set_mode(bme680_handle_t *handle, bme680_mode_t mode)
set mode
struct bme680_handle_s bme680_handle_t
bme680 handle structure definition
uint8_t bme680_get_run_gas(bme680_handle_t *handle, bme680_bool_t *enable)
get run gas status
bme680_spi_wire_t
bme680 spi wire enumeration definition
uint8_t bme680_read_temperature_pressure_humidity(bme680_handle_t *handle, uint32_t *temperature_raw, float *temperature_c, uint32_t *pressure_raw, float *pressure_pa, uint32_t *humidity_raw, float *humidity_percentage)
read the temperature pressure and humidity data
uint8_t bme680_idac_heat_convert_to_data(bme680_handle_t *handle, uint8_t reg, float *ma)
convert the register raw data to idac heat
uint8_t bme680_get_heater_stability_status(bme680_handle_t *handle, bme680_bool_t *enable)
get heater stability status
uint8_t bme680_set_humidity_oversampling(bme680_handle_t *handle, bme680_oversampling_t oversampling)
set humidity oversampling
uint8_t bme680_get_convert_index(bme680_handle_t *handle, uint8_t *index)
get convert index
uint8_t bme680_get_gas_wait(bme680_handle_t *handle, uint8_t index, uint8_t *reg)
get gas wait
uint8_t bme680_get_gas_valid_status(bme680_handle_t *handle, bme680_bool_t *enable)
get gas valid status
uint8_t bme680_get_addr_pin(bme680_handle_t *handle, bme680_address_t *addr_pin)
get the iic address pin
uint8_t bme680_get_pressure_oversampling(bme680_handle_t *handle, bme680_oversampling_t *oversampling)
get pressure oversampling
@ BME680_FILTER_COEFF_127
@ BME680_ADDRESS_ADO_HIGH
@ BME680_OVERSAMPLING_x16
@ BME680_OVERSAMPLING_SKIP
uint8_t bme680_get_reg(bme680_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
get the chip register
uint8_t bme680_set_reg(bme680_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
set the chip register
bme680 handle structure definition
uint8_t(* spi_init)(void)
void(* delay_ms)(uint32_t ms)
uint8_t(* spi_read)(uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* spi_write)(uint8_t reg, uint8_t *buf, uint16_t len)
void(* debug_print)(const char *const fmt,...)
uint8_t(* iic_init)(void)
uint8_t(* spi_deinit)(void)
uint8_t(* iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* iic_deinit)(void)
bme680 information structure definition
float supply_voltage_max_v
char manufacturer_name[32]
float supply_voltage_min_v