Compare commits

...
32 Commits
Author SHA1 Message Date
Theo Arends f20e9b8447 v5.13.1
Release version 5.13.1
2018-05-01 18:16:52 +02:00
Theo Arends 6f5800173c v5.13.0
Release version 5.13.0
2018-04-30 17:10:21 +02:00
Theo Arends f4dec9df40 Add contribution options 2018-04-15 10:25:13 +02:00
Theo Arends 19b152ad7a Update readme 2018-04-14 14:46:47 +02:00
Theo Arends c1d00a8eaf Add esp8266/Arduino 2.4.1 support 2018-03-10 13:06:58 +01:00
arendst 600c4b1872 v5.12.0
5.12.0 20180209
* Change library PubSubClient.h define MQTT_MAX_PACKET_SIZE from 512 to
1000 for Home Assistant  support
* Change relation of define MESSZ being dependent on PubSubClient.h
define MQTT_MAX_PACKET_SIZE
* Change command color parameter input checks to less strict for Home
Assistant support
* Change command Ina219Mode into command Sensor13
* Change commands HlwPCal, HlwUCal and HlwICal to PowerCal, VoltageCal
and CurrentCal to be used for both Pow and S31 calibration
* Change commands HlwPSet, HlwUSet and HlwISet to PowerSet, VoltageSet
and CurrentSet to be used for both Pow and S31 calibration
* Change uptime from hour to second resulting in a display of
123T13:45:21 where 123 is days
* Change module name Wemos D1 mini into Generic (#1220)
* Change HTML from width=100% to style=width:100% supporting HTML5
(#1358)
* Change OSWATCH_RESET_TIME (Blocked loop) from 30 to 120 seconds to
allow slow networks (#1556)
* Change WIFI_MANAGER_SEC into WIFI_CONFIG_SEC (#1616)
* Change function pointers code to save code space and memory (#1683)
* Change webserver argument processing gaining 5k code space (#1705)
* Change weblog memory usage (#1730, #1793, #1819)
* Update TasmotaSerial library to 1.1.0
* Update language files Italian (#1594), Dutch (#1723) and Spanish
(#1722)
* Fix Non-English JSON temperature unit attachement
* Fix Arilux RF induced exception by moving interrupt handler to iram on
non ESP8266/Arduino lib v2.3.0
* Fix truncated command names and wrong response for DomoticzSwitchIdx
(#1571)
* Fix %-sign issue as printf escape character in Humidity and Sonoff SC
(#1579)
* Fix DS18B20 temperature JSON decimal dot (#1561)
* Fix Energy JSON message (#1621)
* Fix IRSend parameter translation (#1636)
* Fix TSL2561 device detection (#1644, #1825)
* Fix BME680 teleperiod resistance measuring (#1647)
* Fix Energy Monitoring Energy Today and Energy Total reading after
restart (#1648)
* Fix IRReceive Data value (#1663)
* Fix Energy Monitoring Energy Period roll-over (#1688)
* Fix compiler warnings (#1774)
* Fix command PWM response if no PWM channel is configured (#1783)
* Add locale Decimal Separator to Web sensor page
* Add ColorTemperature to light status message
* Add command PowerOnState option 5 which inverts PulseTime and allows
for delayed always on after power on
* Add OtaMagic two step Web server OTA upgrade using filename-minimal
image if OTA free space is too small
* Add support for PMS5003 and PMS7003 particle concentration sensor
* Add command SetOption21 1 to allow Energy Monitoring when power is off
on Sonoff Pow and Sonoff S31 (#1420)
* Add Chinese language file (#1551)
* Add French language file (#1561)
* Add Spanish language file (#1589)
* Add HTTP Allow Cross Origin removed from ESP8266/Arduino lib v2.4.0
(#1572)
* Add Home Assistant MQTT Discovery for switch and light to be enabled
by command SetOption19 1 (#1534) or define
HOME_ASSISTANT_DISCOVERY_ENABLE in user_config.h (#1685)
* Add command State to retrieve device state information (same data as
teleperiod state and status 11 in slightly different JSON format)
* Add optional login to Webserver AP mode (#1587, #1635)
* Add command Sensor15 2 to start MHZ19(B) Zero Point Calibration
(#1643)
* Add support for Sonoff S31 Smart Socket with Power Consumption
Detection (#1626)
* Add command SetOption20 to allow update of Dimmer/Color/Ct without
turning power on (#1719, #1741)
* Add NTP sync time slot based on chip id (#1773)
* Add cursor pointer to web button (#1836)
2018-02-09 15:44:54 +01:00
arendst f60c570eac Add platformio floats removal (#1694) 2018-02-03 16:39:53 +01:00
arendst 0a0a35c573 Add updated 2.4.0 boards.txt file 2018-01-25 11:42:48 +01:00
arendst 996e265390 Free 15k code space for Arduino IDE
Remove floating point printf and scanf compiler options. See
https://github.com/esp8266/Arduino/issues/4089
2018-01-24 10:47:52 +01:00
arendst ace120cd9c Add file rename to ease OTA upload
Add file rename to ease OTA upload
2018-01-10 12:17:37 +01:00
arendst a2ca705df0 ignore user_config_override.h (#1554)
ignore user_config_override.h (#1554)
2018-01-10 10:34:50 +01:00
arendst 7ad979163f v5.11.1
5.11.1 20180107
 * Fix Sonoff Pow command handling (#1542)
2018-01-07 22:45:40 +01:00
arendst 9c9a80f7b6 v5.11.0
5.11.0 20180107
 * Minor webpage HTML optimizations (#1358)
 * Updated
German translation (#1438)
 * Change Sonoff Pow Energy MQTT data message
and consolidate Status 8 into Status 10
 * Change ADS1115 default
voltage range from +/-2V to +/-6V (#1289)
 * Change text to Active for 3
minutes (#1364)
 * Change Wemo SetBinaryState to distinguish from
GetBinaryState (#1357)
 * Change output of HTTP command to valid JSON
and Array only (#1363)
 * Removed all MQTT, JSON and Command language
defines from locale files and set fixed to English (#1473)
 * Renamed
commands Color2,3,4 to Color3,4,5
 * Fix BME280 calculation (#1051)
 *
Fix Sonoff Bridge missed learned key if learned data contains 0x55 (End
of Transmission) flag (#1095, #1294)
 * Fix PWM initialization in
Dimmer/Color mode (#1321)
 * Fix Wemo Emulation (#1357)
 * Fix display
of build date and time in non-english locale (#1465)
 * Fix Wemo and Hue
emulation by adding M-Search response delay (#1486)
 * Add libraries
Adafruit_BME680-1.0.5, Adafruit_Sensor-1.0.2.02, TasmotaSerial-1.0.0 and
TSL2561-Arduino-Library
 * Add command Color2 to set color while keeping
same dimmer value
 * Add device function pointers
 * Add support for
SenseAir S8 CO2 sensor
 * Add color led signal to Carbon Dioxide (CO2)
sensors using defines CO2_LOW and CO2_HIGH in user_config.h
 * Add
support for Domoticz Air Quality sensor to be used by MH-Z19(B) and
SenseAir sensors
 * Add support for PZEM004T energy sensor
 * Add
support for iTead SI7021 temperature and humidity sensor by
consolidating DHT22 into AM2301 and using former DHT22 as SI7021 (#735)

* Add support for BME680 using adafruit libraries (#1212)
 * Add support
for MH-Z19(B) CO2 sensor (#561, #1248)
 * Add multipress support and
more user configurable GPIO to Sonoff Dual R2 (#1291)
 * Add support for
TSL2561 using adafruit library (#661, #1311)
 * Add support for SHT3x
(#1314)
 * Add support for Arilux LC06 (#1414)
 * Add Italian language
file (#1449)
 * Add 2nd Gen Alexa support to Wemo emulation discovery
(#1357, #1450)
 * Add define for additional number of WS2812 schemes
(#1463)
2018-01-07 14:40:37 +01:00
arendst 0a8330f6ac Add ESP8266 v2.4.0 board files 2018-01-07 13:01:32 +01:00
arendst 3403ca1e0a v5.10.0
5.10.0 20171201
 * Upgrade library ArduinoJson to 5.11.2
 * Upgrade
library IRRemoteEsp8266 to 2.2.1 + 2 commits but disabled some protocols
(code size reduction)
 * Upgrade library NeoPixelBus to 2.2.9
 * Upgrade
library OneWire to 2.3.3 + 6 commits and disabled CRC lookup-table
(#define ONEWIRE_CRC8_TABLE 0) (code size reduction)
 * Update library
PubSubClient to 2.6 + 9 commits and additional delay (#790)
 * Update
core_esp8266_wiring_digital.c to latest (staged) level
 * Patch library
I2Cdevlib-Core for esp8266-core 2.4.0-rc2 compatibility
 * Remove
command EnergyReset 1..3 now replaced by ENergyReset1 to EnergyReset3
 *
Remove spaces in JSON messages (code size reduction)
 * Renamed
xsns_05_ds18x20.ino to xsns_05_ds18x20_legacy.ino still using library
OneWire and providing dynamic sensor scan
 * Fix possible iram1_0_seg
compile error by shrinking ICACHE_RAM_ATTR code usage
 * Fix PWM
watchdog timeout if Dimmer is set to 100 or Color set to 0xFF (#1146)
 *
Fix Sonoff Bridge Learn Mode hang caused by unrecognised RF code
(#1181)
 * Fix blank console log window by using XML character encoding
(#1187)
 * Fix wrong response name for command HlwISet (#1214)
 * Fix
DHT type sensor timeout recognition by distinguish "signal already
there" from "timeout" (#1233)
 * Add fixed color options 1..12 to
command Color
 * Add + (plus) and - (minus) to commands Dimmer
(+10/-10), Speed and Scheme
 * Add + (plus) and - (minus) to command
Color to select 1 out of 12 preset colors
 * Add + (plus) and - (minus)
to command Ct to control ColdWarm led ColorTemperature (+34/-34)
 * Add
commands EnergyReset1 0..42500, EnergyReset2 0..42500 and EnergyReset3
0..42500000
 *  to (Re)set Energy Today, Yesterday or Total respectively
in Wh (#406, #685, #1202)
 * Add optional ADS1115 driver as alternative
for unsupported I2Cdevlib in esp8266-core 2.4.0-rc2
 * Add support for
INA219 Voltage and Current sensor to be enabled in user_config.h with
define USE_INA219
 * Add support for Arilux LC11 (Clearing RF home code
when selecting no Arilux module)
 * Add support for WS2812 RGBW
ledstrips to be enabled in user_config.h with define USE_WS2812_CTYPE
(#1156)
 * Add SettingsSaveAll routine to command SaveData to be used
before controlled power down (#1202)
 * Add option PUSHBUTTON_TOGGLE
(SwitchMode 7) to allow toggling on any switch change (#1221)
 * Add new
xdrv_05_ds18x20.ino free from library OneWire and add the following
features:
 *  Add support for DS1822
 *  Add forced setting of 12-bit
resolution for selected device types (#1222)
 *  Add read temperature
retry counter (#1215)
 *  Fix lost sensors by performing sensor probe at
restart only thereby removing dynamic sensor probe (#1215)
 *  Fix
sensor address sorting using ascending sort on sensor type followed by
sensor address
 *  Rewrite JSON resulting in shorter message allowing
more sensors in default firmware image:
 *
"DS18B20-1":{"Id":"00000483C23A","Temperature":19.5},"DS18B20-2":{"Id":"0000048EC44C","Temperature":19.6}

* Add additional define in user_config.h to select either single sensor
(defines disabled), new multi sensor (USE_DS18X20) or legacy multi
sensor (USE_DS18X20_LEGACY)
 * Add clock support for more different
pixel counts (#1226)
 * Add support for Sonoff Dual R2 (#1249)
 * Add
FriendlyName to web page tab and add program information to web page
footer (#1275)
2017-12-01 14:42:22 +01:00
arendst fe2d7c63ec v5.9.1
5.9.1 20171107
 * Add external sensor function pointer interface to
enable easy sensor addition
 * Add support for ADS1115 to be enabled in
user_config.h and needs libraries i2cdevlib-Core and i2cdevlib-ADS1115
(#338, #660)
 * Fix Backup Configuration file download failure by
defining proper file size (#1115)
 * Fix Exception 26 and empty console
screen after usage of command WakeupDuration (#1133)
 * Fix some changed
iTead web links in README.md (#1137)
2017-11-07 16:25:11 +01:00
arendst e08d96acc2 v5.9.0
5.9.0 20171030
* Rewrite code (partly) using Google C++ Style Guide
(https://google.github.io/styleguide/cppguide.html)
* Rewrite code by using command lookup tables and javascript (client
side) web page expansions
* Change HTML/CSS to enable nicer form field entry
* Change default PWM assignments for H801 RGB(CW) led controller to
support optional Color/Dimmer control
*   GPIO04 (W2)    from GPIO_PWM2 to GPIO_USER to be user configurable
for GPIO_PWM5 (second White - Warm if W1 is Cold)
*   GPIO12 (Blue)  GPIO_PWM3 no change
*   GPIO13 (Green) from GPIO_PWM4 to GPIO_PWM2
*   GPIO14 (W1)    from GPIO_PWM1 to GPIO_USER to be user configurable
for GPIO_PWM4 (first White - Cold or Warm)
*   GPIO15 (Red)   from GPIO_PWM5 to GPIO_PWM1
* Change default PWM assignments for MagicHome RGB(W) led controller to
support optional Color/Dimmer control
*   GPIO05 (Green) from GPIO_PWM4 to GPIO_PWM2
*   GPIO12 (Blue)  from GPIO_PWM5 to GPIO_PWM3
*   GPIO13 (White) GPIO_USER to be user configurable for GPIO_PWM4
(White - Cold or Warm)
*   GPIO14 (Red)   from GPIO_PWM3 to GPIO_PWM1
* Change default PWM assignment for Witty Cloud to support optional
Color/Dimmer control (#976)
*   GPIO12 (Green) from GPIO_PWM4 to GPIO_PWM2
*   GPIO13 (Blue)  from GPIO_PWM5 to GPIO_PWM3
*   GPIO15 (Red)   from GPIO_PWM3 to GPIO_PWM1
* Change when another module is selected now all GPIO user configuration
is removed
* Change command name IRRemote to IRSend (#956)
* Remove Arduino IDE version too low warning as it interferes with
platformio.ini platform = espressif8266_stage
* Fix command FullTopic entry when using serial or console interface
* Fix possible UDP syslog blocking
* Fix minimum TelePeriod of 10 seconds set by web page
* Fix command GPIOx JSON response (#897)
* Fix inverted relay power on state (#909)
* Fix compile error when DOMOTICZ_UPDATE_TIMER is not defined (#930)
* Fix alignment of web page items in some browsers (#935)
* Fix setting all saved power settings to Off when SetOption0
(SaveState) = 0 (#955)
* Fix timezone range from -12/12 to -13/13 (#968)
* Fix Southern Hemisphere TIME_STD/TIME_DST (#968)
* Fix TLS MQTT SSL fingerprint test (#970, #808)
* Fix virtual relay status message used with Color/Dimmer control (#989)
* Fix command IRSend and IRHvac case sensitive parameter regression
introduced with version 5.8.0 (#993)
* Fix pressure calculation for some BMP versions regression introduced
with version 5.8.0i (#974)
* Fix Domoticz Dimmer set to same level not powering on (#945)
* Fix Blocked Loop when erasing large flash using command reset 2
(#1002)
* Fix relay power control when light power control is also configured as
regression from 5.8.0 (#1016)
* Fix Mqtt server mDNS lookup only when MqttHost name is empty (#1026)
* Add debug information to MQTT subscribe
* Add translations to I2Cscan
* Add translation to BH1750 unit lx
* Add light scheme options (Color cycle Up, Down, Random) and moving
WS2812 schemes up by 3
* Add Domoticz counter sensor to IrReceive representing Received IR
Protocol and Data
* Add option 0 to MqttHost to allow empty Mqtt host name
* Add support for Arilux AL-LC01 RGB Led controller (#370)
* Add esp8266 de-blocking to PubSubClient library (#790)
* Add Domoticz sensors for Voltage and Current (#903)
* Add platformio OTA upload support (#928, #934)
* Add warning to webpage when USE_MINIMAL is selected (#929)
* Add smoother movement of hour hand in WS2812 led clock (#936)
* Add support for Magic Home RGBW and some Arilux Led controllers (#940)
* Add command SetOption15 0 (default) for command PWM control or
SetOption15 1 for commands Color/Dimmer control to PWM RGB(CW) leds
(#941)
* Add Domoticz counter sensor to Sonoff Bridge representing Received RF
code (#943)
* Add support for Luani HVIO board
(https://luani.de/projekte/esp8266-hvio/) (#953)
* Add PWM initialization after restart (#955)
* Add IR Receiver support. Disable in user_config.h (#956)
* Add support for inverted PWM (#960)
* Add Sea level pressure calculation and Provide command Altitude (#974)
* Add support for up to 8 relays (#995)
* Add commands RfSync, RfLow, RfHigh, RfHost and RfCode to allow sending
custom RF codes (#1001)
* Add retain to ENERGY messages controlled by command SensorRetain
(#1013)
* Add commands Color2, Color3, Color4, Width2, Width3, Width4 and
SetOption16 to set Ws2812 Clock parameters (#1019)
* Add German language file (#1022)
* Add support for connecting to MQTT brokers without userid and/or
password (#1023)
* Add support for esp8266 core v2.4.0-rc2 (#1024)
* Add commands PwmRange 1,255..1023 and PwmFrequency 1,100..4000 (#1025)
* Add Polish language file (#1044, #1047)
* Add support for KMC 70011 Power Monitoring Smart Plug (#1045)
* Add support for VEML6070 I2C Ultra Violet level sensor (#1053)
* Add light turn Off Fade (#925)
* Add IrSend command option Panasonic as IrSend {"Protocol":"Panasonic",
"Bits":16388, "Data":<Panasonic data>}
*   where 16388 is 0x4004 hexadecimal (#1014)
* Add retry counter to DHT11/21/22 sensors (#1082)
2017-10-30 15:43:39 +01:00
arendst 1ef3ad6afa Add support for ESP8266 core v2.4.0-rc2
To be used for fixing KRACK WPA2 vulnerability (#1024)
2017-10-17 11:13:34 +02:00
arendst d9e1ab0ca3 Add optional pio OTA upload support
Add custom upload (#928) and (#934)
2017-09-30 16:03:19 +02:00
arendst 9b36732890 Add esp8266 de-blocking to PubSubClient
Solve possible PubSubClient timeout due to esp8266 blocking (#790)
2017-09-25 12:38:49 +02:00
arendst af942a278c v5.8.0
5.8.0 20170918
 * Remove the need for NeoPixelBus library for Hue
support
 * Consolidate WS2812 into Sonoff Led for flexible future led
strip library changes
 * Invert WS2812 fade speed to align with Sonoff
led (Speed 1 = fast, Speed 8 = slow)
 * Remove upper case MQTT receive
buffer
 * Reduce code and string length for output of commands Modules
and GPIOs
 * Add Sonoff SC debug information
 * Change syslog service
 *
Removed webserver syslog disable as now no longer needed
 * Increased
default MQTT message size from 368 to 405 bytes while keeping
MQTT_MAX_PACKET_SIZE = 512 (because we can)
 * Fix MQTT Offline or
Remove MQTT retained topic code
 * Fix Domoticz loop when Emulation is
selected
 * Add blink to WS2812 and Sonoff Led (#643)
 * Add option
WIFI_WAIT (5) to command WifiConfig to allow connection retry to same AP
without restart or update flash (#772, #869)
 * Add support for Witty
Cloud (#794)
 * Add GPIO14 to Sonoff Dual (#797, #839)
 * Add support
for Yunshan Wifi Relay (#802)
 * Add GPIO16 input pulldown (#827)
 * Add
timeout to DHT and DS18B20 sensors (#852)
 * Fix watchdog timeout caused
by lack of stack space by moving to heap (#853)
 * Allow LogPort and
MqttPort up to 65535 and add LogPort tot Status 3 (#859)
 * Allow
command SwitchTopic in group mode (#861)
 * Allow command SwitchMode if
no switches are defined (#861)
 * Add optional dimmer parameter to
command Wakeup for WS2812, AiLight, Sonoff B1, Led and BN-SZ01 (#867)
 *
Fix basic On, Off, Toggle, Blink and BlinkOff commands when other
language is selected (#874)
2017-09-18 18:38:13 +02:00
arendst 41f1004d93 v5.7.1
5.7.1 20170909
 * Remove leading spaces from MQTT data
 * Fix webconsole
special character entry
 * Allow # as prefix for color value
 * Fix
Alexa detection and Hue App Update Request (#698, #854)
2017-09-09 19:21:54 +02:00
arendst 69dbb255b0 Cleanup 2017-09-09 19:19:26 +02:00
arendst 465aa4fffa v5.7.1
5.7.1 20170909
 * Remove leading spaces from MQTT data
 * Fix webconsole
special character entry
 * Allow # as prefix for color value
 * Fix
Alexa detection and Hue App Update Request (#698, #854)
2017-09-09 19:14:11 +02:00
arendst 5bd5e28652 Merge branch 'development'
# Conflicts:
#	README.md
#	sonoff/_releasenotes.ino
#	sonoff/sonoff.ino
#	sonoff/xdrv_snfled.ino
#	sonoff/xdrv_ws2812.ino
2017-09-09 19:03:18 +02:00
Theo ArendsandGitHub 7618338bdd Add license information 2017-09-08 11:22:01 +02:00
Theo ArendsandGitHub bc36c38be1 Add language support 2017-09-07 19:08:40 +02:00
arendst 283252d208 v5.7.0
Add language support
2017-09-07 19:07:47 +02:00
arendst 4ca5893037 v5.7.0
5.7.0 20170907
* Shrink module configuration webpage
* Fix settings order during startup to allow for displaying debug
messages
* Fix some string length issues
* Add more string length tests by using strncpy
* Add Ai-Thinker RGBW led (AiLight)
* Add Power check and add PulseTime to power check at startup (#526)
* Add Supla Espablo support (#755)
* Add more precision to Sonoff Pow period and power results using
command WattRes 0|1 (#759)
* Add basic internationalization and localization (#763)
* Add more Sonoff Pow range checking (#772)
* Fix invalid JSON (#786, #822)
* Add duplicate check to received RF signal within 2 seconds for Sonoff
Bridge (#810)
2017-09-07 18:58:14 +02:00
arendst 224354642b Merge remote-tracking branch 'refs/remotes/origin/development' 2017-08-18 18:05:26 +02:00
arendst a872f7ff3b Merge remote-tracking branch 'refs/remotes/origin/development' 2017-08-18 14:53:38 +02:00
arendst b7e71690e4 Merge remote-tracking branch 'refs/remotes/origin/development' 2017-08-18 14:50:13 +02:00
1032 changed files with 91734 additions and 168699 deletions
+11 -1
View File
@@ -1,4 +1,14 @@
.pioenvs
## OS specific ########
.DS_Store
.fuse_hidden*
## Project files ######.pioenvs
.piolibdeps
.clang_complete
.gcc-flags.json
.vscode
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
sonoff/user_config_override.h
.pioenvs
+161 -32
View File
@@ -1,25 +1,28 @@
## Sonoff-Tasmota
Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE.
Current version is **5.7.1** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information.
Alternative firmware for _ESP8266 based devices_ like [iTead](https://www.itead.cc/) _**Sonoff**_ with **web**, **timers**, 'Over The Air' (**OTA**) firmware updates and **sensors support**, allowing control under **Serial**, **HTTP**, **MQTT** and **KNX**, so as to be used on **Smart Home Systems**. Written for Arduino IDE and PlatformIO.
### ATTENTION All versions
[![GitHub version](https://img.shields.io/github/release/arendst/Sonoff-Tasmota.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest)
[![GitHub download](https://img.shields.io/github/downloads/arendst/Sonoff-Tasmota/total.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest)
[![License](https://img.shields.io/github/license/arendst/Sonoff-Tasmota.svg)](https://github.com/arendst/Sonoff-Tasmota/blob/master/LICENSE.txt)
Only Flash Mode DOUT is supported. Do not use Flash Mode DIO / QIO / QOUT as it might seem to brick your device.
If you like **Sonoff-Tasmota**, give it a star, or fork it and contribute!
[![GitHub stars](https://img.shields.io/github/stars/arendst/Sonoff-Tasmota.svg?style=social&label=Star)](https://github.com/arendst/Sonoff-Tasmota/stargazers)
[![GitHub forks](https://img.shields.io/github/forks/arendst/Sonoff-Tasmota.svg?style=social&label=Fork)](https://github.com/arendst/Sonoff-Tasmota/network)
See [Wiki](https://github.com/arendst/Sonoff-Tasmota/wiki/Theo's-Tasmota-Tips) for background information.
See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/master/sonoff/_releasenotes.ino) for change information.
### ATTENTION Version 5 and up
### Quick install
These versions use a new linker script to free flash memory for future code additions. It moves the settings from Spiffs to Eeprom. If you compile your own firmware download the new linker to your IDE or Platformio base folder. See [Wiki > Prerequisite](https://github.com/arendst/Sonoff-Tasmota/wiki/Prerequisite).
Download one of the released binaries from https://github.com/arendst/Sonoff-Tasmota/releases and flash it to your hardware as documented in the wiki.
Best practice to implement is:
- Open the webpage to your device
- Perform option ``Backup Configuration``
- Upgrade new firmware using ``Firmware upgrade``
- If configuration conversion fails keep the webpage open and perform ``Restore Configuration``
### Important User Compilation Information
You should now have a device with 32k more code memory to play with.
If you want to compile Sonoff-Tasmota yourself keep in mind the following:
- Only Flash Mode **DOUT** is supported. Do not use Flash Mode DIO / QIO / QOUT as it might seem to brick your device. See [Wiki](https://github.com/arendst/Sonoff-Tasmota/wiki/Theo's-Tasmota-Tips) for background information.
- Sonoff-Tasmota uses a 1M linker script WITHOUT spiffs for optimal code space. If you compile using ESP/Arduino library 2.3.0 then download the provided new linker script to your Arduino IDE or Platformio base folder. Later version of ESP/Arduino library already contain the correct linker script. See [Wiki > Prerequisite](https://github.com/arendst/Sonoff-Tasmota/wiki/Prerequisite).
- To make compile time changes to Sonoff-Tasmota it can use the ``user_config_override.h`` file. It assures keeping your settings when you download and compile a new version. To use ``user_config.override.h`` you will have to make a copy of the provided ``user_config.override_sample.h`` file and add your setting overrides. To enable the override file you will need to use a compile define as documented in the ``user_config_override_sample.h`` file.
### Version Information
@@ -33,30 +36,156 @@ See [Wiki](https://github.com/arendst/Sonoff-Tasmota/wiki) for more information.
See [Community](https://groups.google.com/d/forum/sonoffusers) for forum and more user experience.
The following devices are supported:
- [iTead Sonoff Basic](http://sonoff.itead.cc/en/products/sonoff/sonoff-basic)
- [iTead Sonoff RF](http://sonoff.itead.cc/en/products/sonoff/sonoff-rf)
- [iTead Sonoff SV](https://www.itead.cc/sonoff-sv.html)<img src="https://github.com/arendst/arendst.github.io/blob/master/media/sonoff_th.jpg" width="250" align="right" />
- [iTead Sonoff TH10/TH16 with temperature sensor](http://sonoff.itead.cc/en/products/sonoff/sonoff-th)
- [iTead Sonoff Dual](http://sonoff.itead.cc/en/products/sonoff/sonoff-dual)
- [iTead Sonoff Pow](http://sonoff.itead.cc/en/products/sonoff/sonoff-pow)
- [iTead Sonoff 4CH](http://sonoff.itead.cc/en/products/sonoff/sonoff-4ch)
- [iTead Sonoff 4CH Pro](http://sonoff.itead.cc/en/products/sonoff/sonoff-4ch-pro)
- [iTead S20 Smart Socket](http://sonoff.itead.cc/en/products/residential/s20-socket)
- [iTead Slampher](http://sonoff.itead.cc/en/products/residential/slampher-rf)
- [iTead Sonoff Touch](http://sonoff.itead.cc/en/products/residential/sonoff-touch)
- [iTead Sonoff T1](http://sonoff.itead.cc/en/products/residential/sonoff-t1)
- [iTead Sonoff SC](http://sonoff.itead.cc/en/products/residential/sonoff-sc)
- [iTead Sonoff Led](http://sonoff.itead.cc/en/products/appliances/sonoff-led)<img src="https://github.com/arendst/arendst.github.io/blob/master/media/sonoff4ch.jpg" height="250" align="right" />
- [iTead Sonoff BN-SZ01 Ceiling Led](http://sonoff.itead.cc/en/products/appliances/bn-sz01)
- [iTead Sonoff B1](http://sonoff.itead.cc/en/products/residential/sonoff-b1)
- [iTead Sonoff RF Bridge 433](http://sonoff.itead.cc/en/products/appliances/sonoff-rf-bridge-433)
- [iTead Sonoff Basic](https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch-1.html)
- [iTead Sonoff RF](https://www.itead.cc/smart-home/sonoff-rf.html)
- [iTead Sonoff SV](https://www.itead.cc/smart-home/sonoff-sv.html)<img src="https://github.com/arendst/arendst.github.io/blob/master/media/sonoff_th.jpg" width="250" align="right" />
- [iTead Sonoff TH10/TH16 with temperature sensor](https://www.itead.cc/smart-home/sonoff-th.html)
- [iTead Sonoff Dual (R2)](https://www.itead.cc/smart-home/sonoff-dual.html)
- [iTead Sonoff Pow with Energy Monitoring](https://www.itead.cc/smart-home/sonoff-pow.html)
- [iTead Sonoff Pow R2 with Energy Monitoring](https://www.itead.cc/sonoff-pow-r2.html)
- [iTead Sonoff 4CH (R2)](https://www.itead.cc/smart-home/sonoff-4ch.html)
- [iTead Sonoff 4CH Pro (R2)](https://www.itead.cc/smart-home/sonoff-4ch-pro.html)
- [iTead S20 Smart Socket](https://www.itead.cc/smart-socket.html)
- [Sonoff S22 Smart Socket](https://github.com/arendst/Sonoff-Tasmota/issues/627)
- [iTead Sonoff S31 Smart Socket with Energy Monitoring](https://www.itead.cc/sonoff-s31.html)
- [iTead Slampher](https://www.itead.cc/slampher.html)
- [iTead Sonoff Touch](https://www.itead.cc/sonoff-touch.html)
- [iTead Sonoff T1](https://www.itead.cc/sonoff-t1.html)
- [iTead Sonoff SC](https://www.itead.cc/sonoff-sc.html)
- [iTead Sonoff Led](https://www.itead.cc/sonoff-led.html)<img src="https://github.com/arendst/arendst.github.io/blob/master/media/sonoff4chpror2.jpg" height="250" align="right" />
- [iTead Sonoff BN-SZ01 Ceiling Led](https://www.itead.cc/bn-sz01.html)
- [iTead Sonoff B1](https://www.itead.cc/sonoff-b1.html)
- [iTead Sonoff RF Bridge 433](https://www.itead.cc/sonoff-rf-bridge-433.html)
- [iTead Sonoff Dev](https://www.itead.cc/sonoff-dev.html)
- [iTead 1 Channel Switch 5V / 12V](https://www.itead.cc/smart-home/inching-self-locking-wifi-wireless-switch.html)
- [iTead Motor Clockwise/Anticlockwise](https://www.itead.cc/smart-home/motor-reversing-wifi-wireless-switch.html)
- [Electrodragon IoT Relay Board](http://www.electrodragon.com/product/wifi-iot-relay-board-based-esp8266/)
- [AI Light or any my9291 compatible RGBW LED](http://www.ebay.com/itm/172644855726)
- AI Light or any my9291 compatible RGBW LED bulb
- H801 PWM LED controller
- [MagicHome PWM LED controller](https://github.com/arendst/Sonoff-Tasmota/wiki/MagicHome-LED-strip-controller)
- AriLux AL-LC01, AL-LC06 and AL-LC11 PWM LED controller
- [Supla device - Espablo-inCan mod. for electrical Installation box](https://forum.supla.org/viewtopic.php?f=33&t=2188)
- [Luani HVIO board](https://luani.de/projekte/esp8266-hvio/)
- Wemos D1 mini, NodeMcu and Ledunia
### Firmware release information
Different firmware images are released based on Features and Sensors selection guided by code and memory usage.
- The Minimal version allows intermediate OTA uploads to support larger versions and does NOT change any persistent parameter.
- The Classic version allows single OTA uploads as did the previous Sonoff-Tasmota versions.
#### Available Features and Sensors
| Feature or Sensor | sonoff | classic | minimal | knx | allsensors |
|--------------------------------|--------|---------|---------|-----|------------|
| MY_LANGUAGE en-GB | x | x | x | x | x |
| MQTT_LIBRARY_TYPE PUBSUBCLIENT | x | x | x | x | x |
| USE_DOMOTICZ | x | x | - | x | x |
| USE_HOME_ASSISTANT | x | x | - | x | x |
| USE_MQTT_TLS | - | - | - | - | - |
| USE_KNX | - | - | - | x | - |
| USE_WEBSERVER | x | x | x | x | x |
| USE_EMULATION | x | x | - | - | x |
| USE_DISCOVERY | x | x | - | x | x |
| WEBSERVER_ADVERTISE | x | x | - | x | x |
| MQTT_HOST_DISCOVERY | x | x | - | x | x |
| USE_TIMERS | x | - | - | x | x |
| USE_TIMERS_WEB | x | - | - | x | x |
| USE_SUNRISE | x | - | - | x | x |
| USE_RULES | x | - | - | x | x |
| | | | | | |
| USE_ADC_VCC | x | x | x | x | x |
| USE_DS18B20 | x | x | - | x | - |
| USE_DS18x20 | - | - | - | - | x |
| USE_DS18x20_LEGACY | - | - | - | - | - |
| USE_I2C | x | x | - | x | x |
| USE_SHT | x | x | - | x | x |
| USE_SHT3X | x | x | - | x | x |
| USE_HTU | x | x | - | x | x |
| USE_BMP | x | x | - | x | x |
| USE_BME680 | - | - | - | - | x |
| USE_SGP30 | x | - | - | x | x |
| USE_BH1750 | x | x | - | x | x |
| USE_VEML6070 | - | - | - | - | x |
| USE_TSL2561 | - | - | - | - | x |
| USE_ADS1115 | - | - | - | - | x |
| USE_ADS1115_I2CDEV | - | - | - | - | - |
| USE_INA219 | - | - | - | - | x |
| USE_MGS | - | - | - | - | x |
| USE_SPI | - | - | - | - | - |
| USE_MHZ19 | x | x | - | x | x |
| USE_SENSEAIR | x | x | - | x | x |
| USE_PMS5003 | x | x | - | x | x |
| USE_NOVA_SDS | x | - | - | x | x |
| USE_PZEM004T | x | x | - | x | x |
| USE_SERIAL_BRIDGE | x | - | - | x | x |
| USE_IR_REMOTE | x | x | - | x | x |
| USE_IR_HVAC | - | - | - | - | x |
| USE_IR_RECEIVE | x | - | - | x | x |
| USE_WS2812 | x | x | - | x | x |
| USE_WS2812_DMA | - | - | - | - | - |
| USE_ARILUX_RF | x | x | - | x | x |
| USE_SR04 | x | - | - | x | x |
#### Typical file size
| ESP/Arduino library version | sonoff | classic | minimal | knx | allsensors |
|--------------------------------|--------|---------|---------|------|------------|
| ESP/Arduino lib v2.3.0 | 526k | 488k | 427k | 535k | 549k |
| ESP/Arduino lib v2.4.0 | 531k | 496k | 435k | 540k | 552k |
| ESP/Arduino lib v2.4.1 | 534k | 499k | 437k | 543k | 555k |
### Contribute
You can contribute to Sonoff-Tasmota by
- providing Pull Requests (Features, Proof of Concepts, Language files or Fixes)
- testing new released features and report issues
- donating to acquire hardware for testing and implementing or out of gratitude
[![donate](https://img.shields.io/badge/donate-PayPal-blue.svg)](https://paypal.me/tasmota)
### Credits
#### Libraries used
Libraries used with Sonoff-Tasmota are:
- [ESP8266 core for Arduino](https://github.com/esp8266/Arduino)
- [Adafruit BME680](https://github.com/adafruit/Adafruit_BME680)
- [Adafruit Sensor](https://github.com/adafruit/Adafruit_Sensor)
- [Adafruit SGP30](https://github.com/adafruit/Adafruit_SGP30)
- [ArduinoJson](https://arduinojson.org/)
- [Esp8266MqttClient](https://github.com/tuanpmt/ESP8266MQTTClient)
- [esp-knx-ip](https://github.com/envy/esp-knx-ip)
- [esp-mqtt-arduino](https://github.com/i-n-g-o/esp-mqtt-arduino)
- [I2Cdevlib](https://github.com/jrowberg/i2cdevlib)
- [IRremoteEsp8266](https://github.com/markszabo/IRremoteESP8266)
- [JobaTsl2561](https://github.com/joba-1/Joba_Tsl2561)
- [MultiChannelGasSensor](http://wiki.seeedstudio.com/Grove-Multichannel_Gas_Sensor/)
- [NeoPixelBus](https://github.com/Makuna/NeoPixelBus)
- [OneWire](https://github.com/PaulStoffregen/OneWire)
- [PubSubClient](https://github.com/knolleary/pubsubclient)
#### People inspiring me
People helping to keep the show on the road:
- David Lang providing initial issue resolution and code optimizations
- Heiko Krupp for his IRSend, HTU21, SI70xx and Wemo/Hue emulation drivers
- Wiktor Schmidt for Travis CI implementation
- Thom Dietrich for PlatformIO optimizations
- Marinus van den Broek for his EspEasy groundwork
- Pete Ba for more user friendly energy monitor calibration
- Lobradov providing compile optimization tips
- Flexiti for his initial timer implementation
- reloxx13 for his [SonWeb](https://github.com/reloxx13/SonWEB) management tool
- Joachim Banzhaf for his TSL2561 library and driver
- Gijs Noorlander for his MHZ19 and SenseAir drivers
- Emontnemery for his HomeAssistant Discovery concept and many code tuning tips
- Aidan Mountford for his HSB support
- Daniel Ztolnai for his Serial Bridge implementation
- Gerhard Mutz for his SGP30 and Sunrise/Sunset driver
- Nuno Ferreira for his HC-SR04 driver
- Adrian Scillato for his (security)fixes and implementing and maintaining KNX
- Raymond Mouthaan for managing Wemos Wiki information
- Norbert Richter, Frogmore42 and Jason2866 for providing many issue answers
- Many more providing Tips, Pocs or PRs
### License
This program is licensed under GPL-3.0
This program is licensed under GPL-3.0
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -18,12 +18,13 @@ compiler.warning_flags.more=-Wall
compiler.warning_flags.all=-Wall -Wextra
build.lwip_lib=-llwip_gcc
build.lwip_include=lwip/include
build.lwip_flags=-DLWIP_OPEN_SRC
compiler.path={runtime.tools.xtensa-lx106-elf-gcc.path}/bin/
compiler.sdk.path={runtime.platform.path}/tools/sdk
compiler.libc.path={runtime.platform.path}/tools/sdk/libc/xtensa-lx106-elf
compiler.cpreprocessor.flags=-D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-I{compiler.sdk.path}/include" "-I{compiler.sdk.path}/lwip/include" "-I{compiler.libc.path}/include" "-I{build.path}/core"
compiler.cpreprocessor.flags=-D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-I{compiler.sdk.path}/include" "-I{compiler.sdk.path}/{build.lwip_include}" "-I{compiler.libc.path}/include" "-I{build.path}/core"
compiler.c.cmd=xtensa-lx106-elf-gcc
compiler.c.flags=-c {compiler.warning_flags} -Os -g -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions=4 -MMD -std=gnu99 -ffunction-sections -fdata-sections
@@ -31,10 +32,11 @@ compiler.c.flags=-c {compiler.warning_flags} -Os -g -Wpointer-arith -Wno-implici
compiler.S.cmd=xtensa-lx106-elf-gcc
compiler.S.flags=-c -g -x assembler-with-cpp -MMD -mlongcalls
compiler.c.elf.flags=-g {compiler.warning_flags} -Os -nostdlib -Wl,--no-check-sections -u call_user_start -u _printf_float -u _scanf_float -Wl,-static "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/ld" "-L{compiler.libc.path}/lib" "-T{build.flash_ld}" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read
# compiler.c.elf.flags=-g {compiler.warning_flags} -Os -nostdlib -Wl,--no-check-sections -u call_user_start -u _printf_float -u _scanf_float -Wl,-static "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/ld" "-L{compiler.libc.path}/lib" "-T{build.flash_ld}" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read
compiler.c.elf.flags=-g {compiler.warning_flags} -Os -nostdlib -Wl,--no-check-sections -u call_user_start -Wl,-static "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/ld" "-L{compiler.libc.path}/lib" "-T{build.flash_ld}" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read
compiler.c.elf.cmd=xtensa-lx106-elf-gcc
compiler.c.elf.libs=-lhal -lphy -lpp -lnet80211 {build.lwip_lib} -lwpa -lcrypto -lmain -lwps -laxtls -lespnow -lsmartconfig -lmesh -lwpa2 -lstdc++ -lm -lc -lgcc
compiler.c.elf.libs=-lhal -lphy -lpp -lnet80211 {build.lwip_lib} -lwpa -lcrypto -lmain -lwps -laxtls -lespnow -lsmartconfig -lairkiss -lmesh -lwpa2 -lstdc++ -lm -lc -lgcc
compiler.cpp.cmd=xtensa-lx106-elf-g++
compiler.cpp.flags=-c {compiler.warning_flags} -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions=4 -std=c++11 -MMD -ffunction-sections -fdata-sections
File diff suppressed because it is too large Load Diff
+137
View File
@@ -0,0 +1,137 @@
# ESP8266 platform
# ------------------------------
# For more info:
# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification
name=ESP8266 Modules
version=2.4.1
compiler.warning_flags=-w
compiler.warning_flags.none=-w
compiler.warning_flags.default=
compiler.warning_flags.more=-Wall
compiler.warning_flags.all=-Wall -Wextra
build.lwip_lib=-llwip_gcc
build.lwip_include=lwip/include
build.lwip_flags=-DLWIP_OPEN_SRC
#build.float=-u _printf_float -u _scanf_float
build.float=
build.led=
compiler.path={runtime.tools.xtensa-lx106-elf-gcc.path}/bin/
compiler.sdk.path={runtime.platform.path}/tools/sdk
compiler.libc.path={runtime.platform.path}/tools/sdk/libc/xtensa-lx106-elf
compiler.cpreprocessor.flags=-D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-I{compiler.sdk.path}/include" "-I{compiler.sdk.path}/{build.lwip_include}" "-I{compiler.libc.path}/include" "-I{build.path}/core"
compiler.c.cmd=xtensa-lx106-elf-gcc
compiler.c.flags=-c {compiler.warning_flags} -Os -g -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions=4 -MMD -std=gnu99 -ffunction-sections -fdata-sections
compiler.S.cmd=xtensa-lx106-elf-gcc
compiler.S.flags=-c -g -x assembler-with-cpp -MMD -mlongcalls
compiler.c.elf.flags=-g {compiler.warning_flags} -Os -nostdlib -Wl,--no-check-sections -u call_user_start {build.float} -Wl,-static "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/ld" "-L{compiler.libc.path}/lib" "-T{build.flash_ld}" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read
compiler.c.elf.cmd=xtensa-lx106-elf-gcc
compiler.c.elf.libs=-lhal -lphy -lpp -lnet80211 {build.lwip_lib} -lwpa -lcrypto -lmain -lwps -laxtls -lespnow -lsmartconfig -lairkiss -lwpa2 -lstdc++ -lm -lc -lgcc
compiler.cpp.cmd=xtensa-lx106-elf-g++
compiler.cpp.flags=-c {compiler.warning_flags} -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions=4 -std=c++11 -MMD -ffunction-sections -fdata-sections
compiler.as.cmd=xtensa-lx106-elf-as
compiler.ar.cmd=xtensa-lx106-elf-ar
compiler.ar.flags=cru
compiler.elf2hex.cmd=esptool
compiler.elf2hex.flags=
compiler.size.cmd=xtensa-lx106-elf-size
compiler.esptool.cmd=esptool
compiler.esptool.cmd.windows=esptool.exe
# This can be overriden in boards.txt
build.extra_flags=-DESP8266
# These can be overridden in platform.local.txt
compiler.c.extra_flags=
compiler.c.elf.extra_flags=
compiler.S.extra_flags=
compiler.cpp.extra_flags=
compiler.ar.extra_flags=
compiler.objcopy.eep.extra_flags=
compiler.elf2hex.extra_flags=
## generate file with git version number
## needs bash, git, and echo
## windows-compatible version without git
## Compile c files
recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.c.flags} -DF_CPU={build.f_cpu} {build.lwip_flags} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" {build.led} {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}"
## Compile c++ files
recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpreprocessor.flags} {compiler.cpp.flags} -DF_CPU={build.f_cpu} {build.lwip_flags} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" {build.led} {compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}"
## Compile S files
recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.S.flags} -DF_CPU={build.f_cpu} {build.lwip_flags} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" {build.led} {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}"
## Create archives
recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{build.path}/arduino.ar" "{object_file}"
## Combine gc-sections, archives, and objects
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" -Wl,--start-group {object_files} "{build.path}/arduino.ar" {compiler.c.elf.libs} -Wl,--end-group "-L{build.path}"
## Create eeprom
recipe.objcopy.eep.pattern=
## Create hex
#recipe.objcopy.hex.pattern="{compiler.path}{compiler.elf2hex.cmd}" {compiler.elf2hex.flags} {compiler.elf2hex.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.hex"
recipe.objcopy.hex.pattern="{runtime.tools.esptool.path}/{compiler.esptool.cmd}" -eo "{runtime.platform.path}/bootloaders/eboot/eboot.elf" -bo "{build.path}/{build.project_name}.bin" -bm {build.flash_mode} -bf {build.flash_freq} -bz {build.flash_size} -bs .text -bp 4096 -ec -eo "{build.path}/{build.project_name}.elf" -bs .irom0.text -bs .text -bs .data -bs .rodata -bc -ec
## Save hex
recipe.output.tmp_file={build.project_name}.bin
recipe.output.save_file={build.project_name}.{build.variant}.bin
## Compute size
recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf"
recipe.size.regex=^(?:\.irom0\.text|\.text|\.data|\.rodata|)\s+([0-9]+).*
recipe.size.regex.data=^(?:\.data|\.rodata|\.bss)\s+([0-9]+).*
#recipe.size.regex.eeprom=^(?:\.eeprom)\s+([0-9]+).*
# ------------------------------
tools.esptool.cmd=esptool
tools.esptool.cmd.windows=esptool.exe
tools.esptool.path={runtime.tools.esptool.path}
tools.esptool.network_cmd=python
tools.esptool.network_cmd.windows=python.exe
tools.esptool.upload.protocol=esp
tools.esptool.upload.params.verbose=-vv
tools.esptool.upload.params.quiet=
tools.esptool.upload.pattern="{path}/{cmd}" {upload.verbose} -cd {upload.resetmethod} -cb {upload.speed} -cp "{serial.port}" {upload.erase_cmd} -ca 0x00000 -cf "{build.path}/{build.project_name}.bin"
tools.esptool.upload.network_pattern="{network_cmd}" "{runtime.platform.path}/tools/espota.py" -i "{serial.port}" -p "{network.port}" "--auth={network.password}" -f "{build.path}/{build.project_name}.bin"
tools.mkspiffs.cmd=mkspiffs
tools.mkspiffs.cmd.windows=mkspiffs.exe
tools.mkspiffs.path={runtime.tools.mkspiffs.path}
tools.espupload.cmd=python
tools.espupload.cmd.windows=python.exe
tools.espupload.path={runtime.platform.path}/tools
tools.espupload.upload.protocol=espupload
tools.espupload.upload.params.verbose=
tools.espupload.upload.params.quiet=
tools.espupload.upload.pattern="{cmd}" "{path}/espupload.py" -f "{build.path}/{build.project_name}.bin"
+1
View File
@@ -0,0 +1 @@
*~
@@ -0,0 +1,605 @@
/***************************************************************************
This is a library for the BME680 humidity, temperature & pressure sensor
Designed specifically to work with the Adafruit BME680 Breakout
----> http://www.adafruit.com/products/2650
These sensors use I2C or SPI to communicate, 2 or 4 pins are required
to interface.
Adafruit invests time and resources providing this open source code,
please support Adafruit andopen-source hardware by purchasing products
from Adafruit!
Written by Limor Fried & Kevin Townsend for Adafruit Industries.
BSD license, all text above must be included in any redistribution
***************************************************************************/
#include "Arduino.h"
#include "Adafruit_BME680.h"
//#define BME680_DEBUG
// must be global in order to work with underlying library
int8_t _BME680_SoftwareSPI_MOSI, _BME680_SoftwareSPI_MISO, _BME680_SoftwareSPI_SCK;
// Our hardware interface functions
static int8_t i2c_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len);
static int8_t i2c_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len);
static int8_t spi_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len);
static int8_t spi_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len);
static uint8_t spi_transfer(uint8_t x);
static void delay_msec(uint32_t ms);
/***************************************************************************
PUBLIC FUNCTIONS
***************************************************************************/
/**************************************************************************/
/*!
@brief Instantiates sensor with Hardware SPI or I2C.
@param cspin SPI chip select. If not passed in, I2C will be used
*/
/**************************************************************************/
Adafruit_BME680::Adafruit_BME680(int8_t cspin)
: _cs(cspin)
{
_BME680_SoftwareSPI_MOSI = -1;
_BME680_SoftwareSPI_MISO = -1;
_BME680_SoftwareSPI_SCK = -1;
_filterEnabled = _tempEnabled = _humEnabled = _presEnabled = _gasEnabled = false;
}
/**************************************************************************/
/*!
@brief Instantiates sensor with Software (bit-bang) SPI.
@param cspin SPI chip select
@param mosipin SPI MOSI (Data from microcontroller to sensor)
@param misopin SPI MISO (Data to microcontroller from sensor)
@param sckpin SPI Clock
*/
/**************************************************************************/
Adafruit_BME680::Adafruit_BME680(int8_t cspin, int8_t mosipin, int8_t misopin, int8_t sckpin)
: _cs(cspin)
{
_BME680_SoftwareSPI_MOSI = mosipin;
_BME680_SoftwareSPI_MISO = misopin;
_BME680_SoftwareSPI_SCK = sckpin;
_filterEnabled = _tempEnabled = _humEnabled = _presEnabled = _gasEnabled = false;
}
/**************************************************************************/
/*!
@brief Initializes the sensor
Hardware ss initialized, verifies it is in the I2C or SPI bus, then reads
calibration data in preparation for sensor reads.
@param addr Optional parameter for the I2C address of BME680. Default is 0x77
@return True on sensor initialization success. False on failure.
*/
/**************************************************************************/
bool Adafruit_BME680::begin(uint8_t addr) {
_i2caddr = addr;
if (_cs == -1) {
// i2c
Wire.begin();
gas_sensor.dev_id = addr;
gas_sensor.intf = BME680_I2C_INTF;
gas_sensor.read = &i2c_read;
gas_sensor.write = &i2c_write;
} else {
digitalWrite(_cs, HIGH);
pinMode(_cs, OUTPUT);
if (_BME680_SoftwareSPI_SCK == -1) {
// hardware SPI
SPI.begin();
} else {
// software SPI
pinMode(_BME680_SoftwareSPI_SCK, OUTPUT);
pinMode(_BME680_SoftwareSPI_MOSI, OUTPUT);
pinMode(_BME680_SoftwareSPI_MISO, INPUT);
}
gas_sensor.dev_id = _cs;
gas_sensor.intf = BME680_SPI_INTF;
gas_sensor.read = &spi_read;
gas_sensor.write = &spi_write;
}
gas_sensor.delay_ms = delay_msec;
int8_t rslt = BME680_OK;
rslt = bme680_init(&gas_sensor);
#ifdef BME680_DEBUG
Serial.print("Result: "); Serial.println(rslt);
#endif
if (rslt != BME680_OK)
return false;
#ifdef BME680_DEBUG
Serial.print("T1 = "); Serial.println(gas_sensor.calib.par_t1);
Serial.print("T2 = "); Serial.println(gas_sensor.calib.par_t2);
Serial.print("T3 = "); Serial.println(gas_sensor.calib.par_t3);
Serial.print("P1 = "); Serial.println(gas_sensor.calib.par_p1);
Serial.print("P2 = "); Serial.println(gas_sensor.calib.par_p2);
Serial.print("P3 = "); Serial.println(gas_sensor.calib.par_p3);
Serial.print("P4 = "); Serial.println(gas_sensor.calib.par_p4);
Serial.print("P5 = "); Serial.println(gas_sensor.calib.par_p5);
Serial.print("P6 = "); Serial.println(gas_sensor.calib.par_p6);
Serial.print("P7 = "); Serial.println(gas_sensor.calib.par_p7);
Serial.print("P8 = "); Serial.println(gas_sensor.calib.par_p8);
Serial.print("P9 = "); Serial.println(gas_sensor.calib.par_p9);
Serial.print("P10 = "); Serial.println(gas_sensor.calib.par_p10);
Serial.print("H1 = "); Serial.println(gas_sensor.calib.par_h1);
Serial.print("H2 = "); Serial.println(gas_sensor.calib.par_h2);
Serial.print("H3 = "); Serial.println(gas_sensor.calib.par_h3);
Serial.print("H4 = "); Serial.println(gas_sensor.calib.par_h4);
Serial.print("H5 = "); Serial.println(gas_sensor.calib.par_h5);
Serial.print("H6 = "); Serial.println(gas_sensor.calib.par_h6);
Serial.print("H7 = "); Serial.println(gas_sensor.calib.par_h7);
Serial.print("G1 = "); Serial.println(gas_sensor.calib.par_gh1);
Serial.print("G2 = "); Serial.println(gas_sensor.calib.par_gh2);
Serial.print("G3 = "); Serial.println(gas_sensor.calib.par_gh3);
Serial.print("G1 = "); Serial.println(gas_sensor.calib.par_gh1);
Serial.print("G2 = "); Serial.println(gas_sensor.calib.par_gh2);
Serial.print("G3 = "); Serial.println(gas_sensor.calib.par_gh3);
Serial.print("Heat Range = "); Serial.println(gas_sensor.calib.res_heat_range);
Serial.print("Heat Val = "); Serial.println(gas_sensor.calib.res_heat_val);
Serial.print("SW Error = "); Serial.println(gas_sensor.calib.range_sw_err);
#endif
setTemperatureOversampling(BME680_OS_8X);
setHumidityOversampling(BME680_OS_2X);
setPressureOversampling(BME680_OS_4X);
setIIRFilterSize(BME680_FILTER_SIZE_3);
setGasHeater(320, 150); // 320*C for 150 ms
// don't do anything till we request a reading
gas_sensor.power_mode = BME680_FORCED_MODE;
return true;
}
/**************************************************************************/
/*!
@brief Performs a reading and returns the ambient temperature.
@return Temperature in degrees Centigrade
*/
/**************************************************************************/
float Adafruit_BME680::readTemperature(void) {
performReading();
return temperature;
}
/**************************************************************************/
/*!
@brief Performs a reading and returns the barometric pressure.
@return Barometic pressure in Pascals
*/
/**************************************************************************/
float Adafruit_BME680::readPressure(void) {
performReading();
return pressure;
}
/**************************************************************************/
/*!
@brief Performs a reading and returns the relative humidity.
@return Relative humidity as floating point
*/
/**************************************************************************/
float Adafruit_BME680::readHumidity(void) {
performReading();
return humidity;
}
/**************************************************************************/
/*!
@brief Calculates the resistance of the MOX gas sensor.
@return Resistance in Ohms
*/
/**************************************************************************/
uint32_t Adafruit_BME680::readGas(void) {
performReading();
return gas_resistance;
}
/**************************************************************************/
/*!
@brief Calculates the altitude (in meters).
Reads the current atmostpheric pressure (in hPa) from the sensor and calculates
via the provided sea-level pressure (in hPa).
@param seaLevel Sea-level pressure in hPa
@return Altitude in meters
*/
/**************************************************************************/
float Adafruit_BME680::readAltitude(float seaLevel)
{
// Equation taken from BMP180 datasheet (page 16):
// http://www.adafruit.com/datasheets/BST-BMP180-DS000-09.pdf
// Note that using the equation from wikipedia can give bad results
// at high altitude. See this thread for more information:
// http://forums.adafruit.com/viewtopic.php?f=22&t=58064
float atmospheric = readPressure() / 100.0F;
return 44330.0 * (1.0 - pow(atmospheric / seaLevel, 0.1903));
}
/**************************************************************************/
/*!
@brief Performs a full reading of all 4 sensors in the BME680.
Assigns the internal Adafruit_BME680#temperature, Adafruit_BME680#pressure, Adafruit_BME680#humidity
and Adafruit_BME680#gas_resistance member variables
@return True on success, False on failure
*/
/**************************************************************************/
bool Adafruit_BME680::performReading(void) {
uint8_t set_required_settings = 0;
struct bme680_field_data data;
int8_t rslt;
/* Select the power mode */
/* Must be set before writing the sensor configuration */
gas_sensor.power_mode = BME680_FORCED_MODE;
/* Set the required sensor settings needed */
if (_tempEnabled)
set_required_settings |= BME680_OST_SEL;
if (_humEnabled)
set_required_settings |= BME680_OSH_SEL;
if (_presEnabled)
set_required_settings |= BME680_OSP_SEL;
if (_filterEnabled)
set_required_settings |= BME680_FILTER_SEL;
if (_gasEnabled)
set_required_settings |= BME680_GAS_SENSOR_SEL;
/* Set the desired sensor configuration */
//Serial.println("Setting sensor settings");
rslt = bme680_set_sensor_settings(set_required_settings, &gas_sensor);
if (rslt != BME680_OK)
return false;
/* Set the power mode */
//Serial.println("Setting power mode");
rslt = bme680_set_sensor_mode(&gas_sensor);
if (rslt != BME680_OK)
return false;
/* Get the total measurement duration so as to sleep or wait till the
* measurement is complete */
uint16_t meas_period;
bme680_get_profile_dur(&meas_period, &gas_sensor);
//Serial.print("Waiting (ms) "); Serial.println(meas_period);
delay(meas_period * 2); /* Delay till the measurement is ready */
//Serial.print("t_fine = "); Serial.println(gas_sensor.calib.t_fine);
//Serial.println("Getting sensor data");
rslt = bme680_get_sensor_data(&data, &gas_sensor);
if (rslt != BME680_OK)
return false;
if (_tempEnabled) {
//Serial.print("Temp: "); Serial.println(data.temperature / 100.0, 2);
temperature = data.temperature / 100.0;
} else {
temperature = NAN;
}
if (_humEnabled) {
//Serial.print("Hum: "); Serial.println(data.humidity / 1000.0, 2);
humidity = data.humidity / 1000.0;
} else {
humidity = NAN;
}
if (_presEnabled) {
//Serial.print("Pres: "); Serial.println(data.pressure / 100.0, 2);
pressure = data.pressure;
} else {
pressure = NAN;
}
/* Avoid using measurements from an unstable heating setup */
if (_gasEnabled) {
if (data.status & BME680_HEAT_STAB_MSK) {
//Serial.print("Gas resistance: "); Serial.println(data.gas_resistance);
gas_resistance = data.gas_resistance;
} else {
gas_resistance = 0;
//Serial.println("Gas reading unstable!");
}
}
return true;
}
/**************************************************************************/
/*!
@brief Enable and configure gas reading + heater
@param heaterTemp Desired temperature in degrees Centigrade
@param heaterTime Time to keep heater on in milliseconds
@return True on success, False on failure
*/
/**************************************************************************/
bool Adafruit_BME680::setGasHeater(uint16_t heaterTemp, uint16_t heaterTime) {
gas_sensor.gas_sett.heatr_temp = heaterTemp;
gas_sensor.gas_sett.heatr_dur = heaterTime;
if ( (heaterTemp == 0) || (heaterTime == 0) ) {
// disabled!
gas_sensor.gas_sett.run_gas = BME680_DISABLE_GAS_MEAS;
_gasEnabled = false;
} else {
gas_sensor.gas_sett.run_gas = BME680_ENABLE_GAS_MEAS;
_gasEnabled = true;
}
return true;
}
/**************************************************************************/
/*!
@brief Setter for Temperature oversampling
@param oversample Oversampling setting, can be BME680_OS_NONE (turn off Temperature reading),
BME680_OS_1X, BME680_OS_2X, BME680_OS_4X, BME680_OS_8X or BME680_OS_16X
@return True on success, False on failure
*/
/**************************************************************************/
bool Adafruit_BME680::setTemperatureOversampling(uint8_t oversample) {
if (oversample > BME680_OS_16X) return false;
gas_sensor.tph_sett.os_temp = oversample;
if (oversample == BME680_OS_NONE)
_tempEnabled = false;
else
_tempEnabled = true;
return true;
}
/**************************************************************************/
/*!
@brief Setter for Humidity oversampling
@param oversample Oversampling setting, can be BME680_OS_NONE (turn off Humidity reading),
BME680_OS_1X, BME680_OS_2X, BME680_OS_4X, BME680_OS_8X or BME680_OS_16X
@return True on success, False on failure
*/
/**************************************************************************/
bool Adafruit_BME680::setHumidityOversampling(uint8_t oversample) {
if (oversample > BME680_OS_16X) return false;
gas_sensor.tph_sett.os_hum = oversample;
if (oversample == BME680_OS_NONE)
_humEnabled = false;
else
_humEnabled = true;
return true;
}
/**************************************************************************/
/*!
@brief Setter for Pressure oversampling
@param oversample Oversampling setting, can be BME680_OS_NONE (turn off Pressure reading),
BME680_OS_1X, BME680_OS_2X, BME680_OS_4X, BME680_OS_8X or BME680_OS_16X
@return True on success, False on failure
*/
/**************************************************************************/
bool Adafruit_BME680::setPressureOversampling(uint8_t oversample) {
if (oversample > BME680_OS_16X) return false;
gas_sensor.tph_sett.os_pres = oversample;
if (oversample == BME680_OS_NONE)
_presEnabled = false;
else
_presEnabled = true;
return true;
}
/**************************************************************************/
/*!
@brief Setter for IIR filter.
@param filtersize Size of the filter (in samples). Can be BME680_FILTER_SIZE_0 (no filtering), BME680_FILTER_SIZE_1, BME680_FILTER_SIZE_3, BME680_FILTER_SIZE_7, BME680_FILTER_SIZE_15, BME680_FILTER_SIZE_31, BME680_FILTER_SIZE_63, BME680_FILTER_SIZE_127
@return True on success, False on failure
*/
/**************************************************************************/
bool Adafruit_BME680::setIIRFilterSize(uint8_t filtersize) {
if (filtersize > BME680_FILTER_SIZE_127) return false;
gas_sensor.tph_sett.filter = filtersize;
if (filtersize == BME680_FILTER_SIZE_0)
_filterEnabled = false;
else
_filterEnabled = true;
return true;
}
/**************************************************************************/
/*!
@brief Reads 8 bit values over I2C
*/
/**************************************************************************/
int8_t i2c_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) {
#ifdef BME680_DEBUG
Serial.print("\tI2C $"); Serial.print(reg_addr, HEX); Serial.print(" => ");
#endif
Wire.beginTransmission((uint8_t)dev_id);
Wire.write((uint8_t)reg_addr);
Wire.endTransmission();
if (len != Wire.requestFrom((uint8_t)dev_id, (byte)len)) {
#ifdef BME680_DEBUG
Serial.print("Failed to read "); Serial.print(len); Serial.print(" bytes from "); Serial.println(dev_id, HEX);
#endif
return 1;
}
while (len--) {
*reg_data = (uint8_t)Wire.read();
#ifdef BME680_DEBUG
Serial.print("0x"); Serial.print(*reg_data, HEX); Serial.print(", ");
#endif
reg_data++;
}
#ifdef BME680_DEBUG
Serial.println("");
#endif
return 0;
}
/**************************************************************************/
/*!
@brief Writes 8 bit values over I2C
*/
/**************************************************************************/
int8_t i2c_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) {
#ifdef BME680_DEBUG
Serial.print("\tI2C $"); Serial.print(reg_addr, HEX); Serial.print(" <= ");
#endif
Wire.beginTransmission((uint8_t)dev_id);
Wire.write((uint8_t)reg_addr);
while (len--) {
Wire.write(*reg_data);
#ifdef BME680_DEBUG
Serial.print("0x"); Serial.print(*reg_data, HEX); Serial.print(", ");
#endif
reg_data++;
}
Wire.endTransmission();
#ifdef BME680_DEBUG
Serial.println("");
#endif
return 0;
}
/**************************************************************************/
/*!
@brief Reads 8 bit values over SPI
*/
/**************************************************************************/
static int8_t spi_read(uint8_t cspin, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) {
#ifdef BME680_DEBUG
Serial.print("\tSPI $"); Serial.print(reg_addr, HEX); Serial.print(" => ");
#endif
digitalWrite(cspin, LOW);
// If hardware SPI we should use transactions!
if (_BME680_SoftwareSPI_SCK == -1) {
SPI.beginTransaction(SPISettings(BME680_DEFAULT_SPIFREQ, MSBFIRST, SPI_MODE0));
}
spi_transfer(reg_addr);
while (len--) {
*reg_data = spi_transfer(0x00);
#ifdef BME680_DEBUG
Serial.print("0x"); Serial.print(*reg_data, HEX); Serial.print(", ");
#endif
reg_data++;
}
if (_BME680_SoftwareSPI_SCK == -1) {
SPI.endTransaction();
}
digitalWrite(cspin, HIGH);
#ifdef BME680_DEBUG
Serial.println("");
#endif
return 0;
}
/**************************************************************************/
/*!
@brief Writes 8 bit values over SPI
*/
/**************************************************************************/
static int8_t spi_write(uint8_t cspin, uint8_t reg_addr, uint8_t *reg_data, uint16_t len) {
#ifdef BME680_DEBUG
Serial.print("\tSPI $"); Serial.print(reg_addr, HEX); Serial.print(" <= ");
#endif
digitalWrite(cspin, LOW);
// If hardware SPI we should use transactions!
if (_BME680_SoftwareSPI_SCK == -1) {
SPI.beginTransaction(SPISettings(BME680_DEFAULT_SPIFREQ, MSBFIRST, SPI_MODE0));
}
spi_transfer(reg_addr);
while (len--) {
spi_transfer(*reg_data);
#ifdef BME680_DEBUG
Serial.print("0x"); Serial.print(*reg_data, HEX); Serial.print(", ");
#endif
reg_data++;
}
if (_BME680_SoftwareSPI_SCK == -1) {
SPI.endTransaction();
}
digitalWrite(cspin, HIGH);
#ifdef BME680_DEBUG
Serial.println("");
#endif
return 0;
}
static uint8_t spi_transfer(uint8_t x) {
if (_BME680_SoftwareSPI_SCK == -1)
return SPI.transfer(x);
// software spi
//Serial.println("Software SPI");
uint8_t reply = 0;
for (int i=7; i>=0; i--) {
reply <<= 1;
digitalWrite(_BME680_SoftwareSPI_SCK, LOW);
digitalWrite(_BME680_SoftwareSPI_MOSI, x & (1<<i));
digitalWrite(_BME680_SoftwareSPI_SCK, HIGH);
if (digitalRead(_BME680_SoftwareSPI_MISO))
reply |= 1;
}
return reply;
}
static void delay_msec(uint32_t ms){
delay(ms);
}
+107
View File
@@ -0,0 +1,107 @@
/***************************************************************************
This is a library for the BME680 humidity, temperature & pressure sensor
Designed specifically to work with the Adafruit BME680 Breakout
----> http://www.adafruit.com/products/XXXX
These sensors use I2C or SPI to communicate, 2 or 4 pins are required
to interface.
Adafruit invests time and resources providing this open source code,
please support Adafruit andopen-source hardware by purchasing products
from Adafruit!
Written by Limor Fried & Kevin Townsend for Adafruit Industries.
BSD license, all text above must be included in any redistribution
***************************************************************************/
#ifndef __BME680_H__
#define __BME680_H__
#if (ARDUINO >= 100)
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#include "bme680.h"
/*=========================================================================
I2C ADDRESS/BITS
-----------------------------------------------------------------------*/
#define BME680_DEFAULT_ADDRESS (0x77)
/*=========================================================================*/
#define BME680_DEFAULT_SPIFREQ (1000000)
/*
class Adafruit_BME680_Unified : public Adafruit_Sensor
{
public:
Adafruit_BME680_Unified(int32_t sensorID = -1);
bool begin(uint8_t addr = BME680_ADDRESS);
void getTemperature(float *temp);
void getPressure(float *pressure);
float pressureToAltitude(float seaLevel, float atmospheric, float temp);
float seaLevelForAltitude(float altitude, float atmospheric, float temp);
void getEvent(sensors_event_t*);
void getSensor(sensor_t*);
private:
uint8_t _i2c_addr;
int32_t _sensorID;
};
*/
/** Adafruit_BME680 Class for both I2C and SPI usage.
* Wraps the Bosch library for Arduino usage
*/
class Adafruit_BME680
{
public:
Adafruit_BME680(int8_t cspin = -1);
Adafruit_BME680(int8_t cspin, int8_t mosipin, int8_t misopin, int8_t sckpin);
bool begin(uint8_t addr = BME680_DEFAULT_ADDRESS);
float readTemperature(void);
float readPressure(void);
float readHumidity(void);
uint32_t readGas(void);
float readAltitude(float seaLevel);
bool setTemperatureOversampling(uint8_t os);
bool setPressureOversampling(uint8_t os);
bool setHumidityOversampling(uint8_t os);
bool setIIRFilterSize(uint8_t fs);
bool setGasHeater(uint16_t heaterTemp, uint16_t heaterTime);
bool performReading(void);
/// Temperature (Celsius) assigned after calling performReading()
float temperature;
/// Pressure (Pascals) assigned after calling performReading()
float pressure;
/// Humidity (RH %) assigned after calling performReading()
float humidity;
/// Gas resistor (ohms) assigned after calling performReading()
float gas_resistance;
private:
bool _filterEnabled, _tempEnabled, _humEnabled, _presEnabled, _gasEnabled;
uint8_t _i2caddr;
int32_t _sensorID;
int8_t _cs;
uint8_t spixfer(uint8_t x);
struct bme680_dev gas_sensor;
};
#endif
File diff suppressed because it is too large Load Diff
+12
View File
@@ -0,0 +1,12 @@
This is a library for the Adafruit BME680 Humidity, Barometric Pressure, Temp and MOX Gas sensor
Designed specifically to work with the Adafruit BME680 Breakout
* http://www.adafruit.com/products/3660
These sensors use I2C or SPI to communicate, up to 4 pins are required to interface
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Check out the links above for our tutorials and wiring diagrams
File diff suppressed because it is too large Load Diff
+225
View File
@@ -0,0 +1,225 @@
/**
* Copyright (C) 2017 - 2018 Bosch Sensortec GmbH
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* Neither the name of the copyright holder nor the names of the
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
* OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
* OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
*
* The information provided is believed to be accurate and reliable.
* The copyright holder assumes no responsibility
* for the consequences of use
* of such information nor for any infringement of patents or
* other rights of third parties which may result from its use.
* No license is granted by implication or otherwise under any patent or
* patent rights of the copyright holder.
*
* @file bme680.h
* @date 20 Nov 2017
* @version 3.5.5
* @brief
*
*/
/*! @file bme680.h
@brief Sensor driver for BME680 sensor */
/*!
* @defgroup BME680 SENSOR API
* @{*/
#ifndef BME680_H_
#define BME680_H_
/*! CPP guard */
#ifdef __cplusplus
extern "C"
{
#endif
/* Header includes */
#include "bme680_defs.h"
/* function prototype declarations */
/*!
* @brief This API is the entry point.
* It reads the chip-id and calibration data from the sensor.
*
* @param[in,out] dev : Structure instance of bme680_dev
*
* @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error
*/
int8_t bme680_init(struct bme680_dev *dev);
/*!
* @brief This API writes the given data to the register address
* of the sensor.
*
* @param[in] reg_addr : Register address from where the data to be written.
* @param[in] reg_data : Pointer to data buffer which is to be written
* in the sensor.
* @param[in] len : No of bytes of data to write..
* @param[in] dev : Structure instance of bme680_dev.
*
* @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error
*/
int8_t bme680_set_regs(const uint8_t *reg_addr, const uint8_t *reg_data, uint8_t len, struct bme680_dev *dev);
/*!
* @brief This API reads the data from the given register address of the sensor.
*
* @param[in] reg_addr : Register address from where the data to be read
* @param[out] reg_data : Pointer to data buffer to store the read data.
* @param[in] len : No of bytes of data to be read.
* @param[in] dev : Structure instance of bme680_dev.
*
* @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error
*/
int8_t bme680_get_regs(uint8_t reg_addr, uint8_t *reg_data, uint16_t len, struct bme680_dev *dev);
/*!
* @brief This API performs the soft reset of the sensor.
*
* @param[in] dev : Structure instance of bme680_dev.
*
* @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error.
*/
int8_t bme680_soft_reset(struct bme680_dev *dev);
/*!
* @brief This API is used to set the power mode of the sensor.
*
* @param[in] dev : Structure instance of bme680_dev
* @note : Pass the value to bme680_dev.power_mode structure variable.
*
* value | mode
* -------------|------------------
* 0x00 | BME680_SLEEP_MODE
* 0x01 | BME680_FORCED_MODE
*
* * @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error
*/
int8_t bme680_set_sensor_mode(struct bme680_dev *dev);
/*!
* @brief This API is used to get the power mode of the sensor.
*
* @param[in] dev : Structure instance of bme680_dev
* @note : bme680_dev.power_mode structure variable hold the power mode.
*
* value | mode
* ---------|------------------
* 0x00 | BME680_SLEEP_MODE
* 0x01 | BME680_FORCED_MODE
*
* @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error
*/
int8_t bme680_get_sensor_mode(struct bme680_dev *dev);
/*!
* @brief This API is used to set the profile duration of the sensor.
*
* @param[in] dev : Structure instance of bme680_dev.
* @param[in] duration : Duration of the measurement in ms.
*
* @return Nothing
*/
void bme680_set_profile_dur(uint16_t duration, struct bme680_dev *dev);
/*!
* @brief This API is used to get the profile duration of the sensor.
*
* @param[in] dev : Structure instance of bme680_dev.
* @param[in] duration : Duration of the measurement in ms.
*
* @return Nothing
*/
void bme680_get_profile_dur(uint16_t *duration, const struct bme680_dev *dev);
/*!
* @brief This API reads the pressure, temperature and humidity and gas data
* from the sensor, compensates the data and store it in the bme680_data
* structure instance passed by the user.
*
* @param[out] data: Structure instance to hold the data.
* @param[in] dev : Structure instance of bme680_dev.
*
* @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error
*/
int8_t bme680_get_sensor_data(struct bme680_field_data *data, struct bme680_dev *dev);
/*!
* @brief This API is used to set the oversampling, filter and T,P,H, gas selection
* settings in the sensor.
*
* @param[in] dev : Structure instance of bme680_dev.
* @param[in] desired_settings : Variable used to select the settings which
* are to be set in the sensor.
*
* Macros | Functionality
*---------------------------------|----------------------------------------------
* BME680_OST_SEL | To set temperature oversampling.
* BME680_OSP_SEL | To set pressure oversampling.
* BME680_OSH_SEL | To set humidity oversampling.
* BME680_GAS_MEAS_SEL | To set gas measurement setting.
* BME680_FILTER_SEL | To set filter setting.
* BME680_HCNTRL_SEL | To set humidity control setting.
* BME680_RUN_GAS_SEL | To set run gas setting.
* BME680_NBCONV_SEL | To set NB conversion setting.
* BME680_GAS_SENSOR_SEL | To set all gas sensor related settings
*
* @note : Below are the macros to be used by the user for selecting the
* desired settings. User can do OR operation of these macros for configuring
* multiple settings.
*
* @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error.
*/
int8_t bme680_set_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev);
/*!
* @brief This API is used to get the oversampling, filter and T,P,H, gas selection
* settings in the sensor.
*
* @param[in] dev : Structure instance of bme680_dev.
* @param[in] desired_settings : Variable used to select the settings which
* are to be get from the sensor.
*
* @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error.
*/
int8_t bme680_get_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev);
#ifdef __cplusplus
}
#endif /* End of CPP guard */
#endif /* BME680_H_ */
/** @}*/
+512
View File
@@ -0,0 +1,512 @@
/**
* Copyright (C) 2017 - 2018 Bosch Sensortec GmbH
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* Neither the name of the copyright holder nor the names of the
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
* OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
* OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
*
* The information provided is believed to be accurate and reliable.
* The copyright holder assumes no responsibility
* for the consequences of use
* of such information nor for any infringement of patents or
* other rights of third parties which may result from its use.
* No license is granted by implication or otherwise under any patent or
* patent rights of the copyright holder.
*
* @file bme680_defs.h
* @date 20 Nov 2017
* @version 3.5.5
* @brief
*
*/
/*! @file bme680_defs.h
@brief Sensor driver for BME680 sensor */
/*!
* @defgroup BME680 SENSOR API
* @brief
* @{*/
#ifndef BME680_DEFS_H_
#define BME680_DEFS_H_
/********************************************************/
/* header includes */
#ifdef __KERNEL__
#include <linux/types.h>
#include <linux/kernel.h>
#else
#include <stdint.h>
#include <stddef.h>
#endif
/******************************************************************************/
/*! @name Common macros */
/******************************************************************************/
#if !defined(UINT8_C) && !defined(INT8_C)
#define INT8_C(x) S8_C(x)
#define UINT8_C(x) U8_C(x)
#endif
#if !defined(UINT16_C) && !defined(INT16_C)
#define INT16_C(x) S16_C(x)
#define UINT16_C(x) U16_C(x)
#endif
#if !defined(INT32_C) && !defined(UINT32_C)
#define INT32_C(x) S32_C(x)
#define UINT32_C(x) U32_C(x)
#endif
#if !defined(INT64_C) && !defined(UINT64_C)
#define INT64_C(x) S64_C(x)
#define UINT64_C(x) U64_C(x)
#endif
/**@}*/
/**\name C standard macros */
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *) 0)
#endif
#endif
/** BME680 General config */
#define BME680_POLL_PERIOD_MS UINT8_C(10)
/** BME680 I2C addresses */
#define BME680_I2C_ADDR_PRIMARY UINT8_C(0x76)
#define BME680_I2C_ADDR_SECONDARY UINT8_C(0x77)
/** BME680 unique chip identifier */
#define BME680_CHIP_ID UINT8_C(0x61)
/** BME680 coefficients related defines */
#define BME680_COEFF_SIZE UINT8_C(41)
#define BME680_COEFF_ADDR1_LEN UINT8_C(25)
#define BME680_COEFF_ADDR2_LEN UINT8_C(16)
/** BME680 field_x related defines */
#define BME680_FIELD_LENGTH UINT8_C(15)
#define BME680_FIELD_ADDR_OFFSET UINT8_C(17)
/** Soft reset command */
#define BME680_SOFT_RESET_CMD UINT8_C(0xb6)
/** Error code definitions */
#define BME680_OK INT8_C(0)
/* Errors */
#define BME680_E_NULL_PTR INT8_C(-1)
#define BME680_E_COM_FAIL INT8_C(-2)
#define BME680_E_DEV_NOT_FOUND INT8_C(-3)
#define BME680_E_INVALID_LENGTH INT8_C(-4)
/* Warnings */
#define BME680_W_DEFINE_PWR_MODE INT8_C(1)
#define BME680_W_NO_NEW_DATA INT8_C(2)
/* Info's */
#define BME680_I_MIN_CORRECTION UINT8_C(1)
#define BME680_I_MAX_CORRECTION UINT8_C(2)
/** Register map */
/** Other coefficient's address */
#define BME680_ADDR_RES_HEAT_VAL_ADDR UINT8_C(0x00)
#define BME680_ADDR_RES_HEAT_RANGE_ADDR UINT8_C(0x02)
#define BME680_ADDR_RANGE_SW_ERR_ADDR UINT8_C(0x04)
#define BME680_ADDR_SENS_CONF_START UINT8_C(0x5A)
#define BME680_ADDR_GAS_CONF_START UINT8_C(0x64)
/** Field settings */
#define BME680_FIELD0_ADDR UINT8_C(0x1d)
/** Heater settings */
#define BME680_RES_HEAT0_ADDR UINT8_C(0x5a)
#define BME680_GAS_WAIT0_ADDR UINT8_C(0x64)
/** Sensor configuration registers */
#define BME680_CONF_HEAT_CTRL_ADDR UINT8_C(0x70)
#define BME680_CONF_ODR_RUN_GAS_NBC_ADDR UINT8_C(0x71)
#define BME680_CONF_OS_H_ADDR UINT8_C(0x72)
#define BME680_MEM_PAGE_ADDR UINT8_C(0xf3)
#define BME680_CONF_T_P_MODE_ADDR UINT8_C(0x74)
#define BME680_CONF_ODR_FILT_ADDR UINT8_C(0x75)
/** Coefficient's address */
#define BME680_COEFF_ADDR1 UINT8_C(0x89)
#define BME680_COEFF_ADDR2 UINT8_C(0xe1)
/** Chip identifier */
#define BME680_CHIP_ID_ADDR UINT8_C(0xd0)
/** Soft reset register */
#define BME680_SOFT_RESET_ADDR UINT8_C(0xe0)
/** Heater control settings */
#define BME680_ENABLE_HEATER UINT8_C(0x00)
#define BME680_DISABLE_HEATER UINT8_C(0x08)
/** Gas measurement settings */
#define BME680_DISABLE_GAS_MEAS UINT8_C(0x00)
#define BME680_ENABLE_GAS_MEAS UINT8_C(0x01)
/** Over-sampling settings */
#define BME680_OS_NONE UINT8_C(0)
#define BME680_OS_1X UINT8_C(1)
#define BME680_OS_2X UINT8_C(2)
#define BME680_OS_4X UINT8_C(3)
#define BME680_OS_8X UINT8_C(4)
#define BME680_OS_16X UINT8_C(5)
/** IIR filter settings */
#define BME680_FILTER_SIZE_0 UINT8_C(0)
#define BME680_FILTER_SIZE_1 UINT8_C(1)
#define BME680_FILTER_SIZE_3 UINT8_C(2)
#define BME680_FILTER_SIZE_7 UINT8_C(3)
#define BME680_FILTER_SIZE_15 UINT8_C(4)
#define BME680_FILTER_SIZE_31 UINT8_C(5)
#define BME680_FILTER_SIZE_63 UINT8_C(6)
#define BME680_FILTER_SIZE_127 UINT8_C(7)
/** Power mode settings */
#define BME680_SLEEP_MODE UINT8_C(0)
#define BME680_FORCED_MODE UINT8_C(1)
/** Delay related macro declaration */
#define BME680_RESET_PERIOD UINT32_C(10)
/** SPI memory page settings */
#define BME680_MEM_PAGE0 UINT8_C(0x10)
#define BME680_MEM_PAGE1 UINT8_C(0x00)
/** Ambient humidity shift value for compensation */
#define BME680_HUM_REG_SHIFT_VAL UINT8_C(4)
/** Run gas enable and disable settings */
#define BME680_RUN_GAS_DISABLE UINT8_C(0)
#define BME680_RUN_GAS_ENABLE UINT8_C(1)
/** Buffer length macro declaration */
#define BME680_TMP_BUFFER_LENGTH UINT8_C(40)
#define BME680_REG_BUFFER_LENGTH UINT8_C(6)
#define BME680_FIELD_DATA_LENGTH UINT8_C(3)
#define BME680_GAS_REG_BUF_LENGTH UINT8_C(20)
#define BME680_GAS_HEATER_PROF_LEN_MAX UINT8_C(10)
/** Settings selector */
#define BME680_OST_SEL UINT16_C(1)
#define BME680_OSP_SEL UINT16_C(2)
#define BME680_OSH_SEL UINT16_C(4)
#define BME680_GAS_MEAS_SEL UINT16_C(8)
#define BME680_FILTER_SEL UINT16_C(16)
#define BME680_HCNTRL_SEL UINT16_C(32)
#define BME680_RUN_GAS_SEL UINT16_C(64)
#define BME680_NBCONV_SEL UINT16_C(128)
#define BME680_GAS_SENSOR_SEL (BME680_GAS_MEAS_SEL | BME680_RUN_GAS_SEL | BME680_NBCONV_SEL)
/** Number of conversion settings*/
#define BME680_NBCONV_MIN UINT8_C(0)
#define BME680_NBCONV_MAX UINT8_C(10)
/** Mask definitions */
#define BME680_GAS_MEAS_MSK UINT8_C(0x30)
#define BME680_NBCONV_MSK UINT8_C(0X0F)
#define BME680_FILTER_MSK UINT8_C(0X1C)
#define BME680_OST_MSK UINT8_C(0XE0)
#define BME680_OSP_MSK UINT8_C(0X1C)
#define BME680_OSH_MSK UINT8_C(0X07)
#define BME680_HCTRL_MSK UINT8_C(0x08)
#define BME680_RUN_GAS_MSK UINT8_C(0x10)
#define BME680_MODE_MSK UINT8_C(0x03)
#define BME680_RHRANGE_MSK UINT8_C(0x30)
#define BME680_RSERROR_MSK UINT8_C(0xf0)
#define BME680_NEW_DATA_MSK UINT8_C(0x80)
#define BME680_GAS_INDEX_MSK UINT8_C(0x0f)
#define BME680_GAS_RANGE_MSK UINT8_C(0x0f)
#define BME680_GASM_VALID_MSK UINT8_C(0x20)
#define BME680_HEAT_STAB_MSK UINT8_C(0x10)
#define BME680_MEM_PAGE_MSK UINT8_C(0x10)
#define BME680_SPI_RD_MSK UINT8_C(0x80)
#define BME680_SPI_WR_MSK UINT8_C(0x7f)
#define BME680_BIT_H1_DATA_MSK UINT8_C(0x0F)
/** Bit position definitions for sensor settings */
#define BME680_GAS_MEAS_POS UINT8_C(4)
#define BME680_FILTER_POS UINT8_C(2)
#define BME680_OST_POS UINT8_C(5)
#define BME680_OSP_POS UINT8_C(2)
#define BME680_RUN_GAS_POS UINT8_C(4)
/** Array Index to Field data mapping for Calibration Data*/
#define BME680_T2_LSB_REG (1)
#define BME680_T2_MSB_REG (2)
#define BME680_T3_REG (3)
#define BME680_P1_LSB_REG (5)
#define BME680_P1_MSB_REG (6)
#define BME680_P2_LSB_REG (7)
#define BME680_P2_MSB_REG (8)
#define BME680_P3_REG (9)
#define BME680_P4_LSB_REG (11)
#define BME680_P4_MSB_REG (12)
#define BME680_P5_LSB_REG (13)
#define BME680_P5_MSB_REG (14)
#define BME680_P7_REG (15)
#define BME680_P6_REG (16)
#define BME680_P8_LSB_REG (19)
#define BME680_P8_MSB_REG (20)
#define BME680_P9_LSB_REG (21)
#define BME680_P9_MSB_REG (22)
#define BME680_P10_REG (23)
#define BME680_H2_MSB_REG (25)
#define BME680_H2_LSB_REG (26)
#define BME680_H1_LSB_REG (26)
#define BME680_H1_MSB_REG (27)
#define BME680_H3_REG (28)
#define BME680_H4_REG (29)
#define BME680_H5_REG (30)
#define BME680_H6_REG (31)
#define BME680_H7_REG (32)
#define BME680_T1_LSB_REG (33)
#define BME680_T1_MSB_REG (34)
#define BME680_GH2_LSB_REG (35)
#define BME680_GH2_MSB_REG (36)
#define BME680_GH1_REG (37)
#define BME680_GH3_REG (38)
/** BME680 register buffer index settings*/
#define BME680_REG_FILTER_INDEX UINT8_C(5)
#define BME680_REG_TEMP_INDEX UINT8_C(4)
#define BME680_REG_PRES_INDEX UINT8_C(4)
#define BME680_REG_HUM_INDEX UINT8_C(2)
#define BME680_REG_NBCONV_INDEX UINT8_C(1)
#define BME680_REG_RUN_GAS_INDEX UINT8_C(1)
#define BME680_REG_HCTRL_INDEX UINT8_C(0)
/** Macro to combine two 8 bit data's to form a 16 bit data */
#define BME680_CONCAT_BYTES(msb, lsb) (((uint16_t)msb << 8) | (uint16_t)lsb)
/** Macro to SET and GET BITS of a register */
#define BME680_SET_BITS(reg_data, bitname, data) \
((reg_data & ~(bitname##_MSK)) | \
((data << bitname##_POS) & bitname##_MSK))
#define BME680_GET_BITS(reg_data, bitname) ((reg_data & (bitname##_MSK)) >> \
(bitname##_POS))
/** Macro variant to handle the bitname position if it is zero */
#define BME680_SET_BITS_POS_0(reg_data, bitname, data) \
((reg_data & ~(bitname##_MSK)) | \
(data & bitname##_MSK))
#define BME680_GET_BITS_POS_0(reg_data, bitname) (reg_data & (bitname##_MSK))
/** Type definitions */
/*
* Generic communication function pointer
* @param[in] dev_id: Place holder to store the id of the device structure
* Can be used to store the index of the Chip select or
* I2C address of the device.
* @param[in] reg_addr: Used to select the register the where data needs to
* be read from or written to.
* @param[in/out] reg_data: Data array to read/write
* @param[in] len: Length of the data array
*/
typedef int8_t (*bme680_com_fptr_t)(uint8_t dev_id, uint8_t reg_addr, uint8_t *data, uint16_t len);
/*
* Delay function pointer
* @param[in] period: Time period in milliseconds
*/
typedef void (*bme680_delay_fptr_t)(uint32_t period);
/*!
* @brief Interface selection Enumerations
*/
enum bme680_intf {
/*! SPI interface */
BME680_SPI_INTF,
/*! I2C interface */
BME680_I2C_INTF
};
/* structure definitions */
/*!
* @brief Sensor field data structure
*/
struct bme680_field_data {
/*! Contains new_data, gasm_valid & heat_stab */
uint8_t status;
/*! The index of the heater profile used */
uint8_t gas_index;
/*! Measurement index to track order */
uint8_t meas_index;
/*! Temperature in degree celsius x100 */
int16_t temperature;
/*! Pressure in Pascal */
uint32_t pressure;
/*! Humidity in % relative humidity x1000 */
uint32_t humidity;
/*! Gas resistance in Ohms */
uint32_t gas_resistance;
};
/*!
* @brief Structure to hold the Calibration data
*/
struct bme680_calib_data {
/*! Variable to store calibrated humidity data */
uint16_t par_h1;
/*! Variable to store calibrated humidity data */
uint16_t par_h2;
/*! Variable to store calibrated humidity data */
int8_t par_h3;
/*! Variable to store calibrated humidity data */
int8_t par_h4;
/*! Variable to store calibrated humidity data */
int8_t par_h5;
/*! Variable to store calibrated humidity data */
uint8_t par_h6;
/*! Variable to store calibrated humidity data */
int8_t par_h7;
/*! Variable to store calibrated gas data */
int8_t par_gh1;
/*! Variable to store calibrated gas data */
int16_t par_gh2;
/*! Variable to store calibrated gas data */
int8_t par_gh3;
/*! Variable to store calibrated temperature data */
uint16_t par_t1;
/*! Variable to store calibrated temperature data */
int16_t par_t2;
/*! Variable to store calibrated temperature data */
int8_t par_t3;
/*! Variable to store calibrated pressure data */
uint16_t par_p1;
/*! Variable to store calibrated pressure data */
int16_t par_p2;
/*! Variable to store calibrated pressure data */
int8_t par_p3;
/*! Variable to store calibrated pressure data */
int16_t par_p4;
/*! Variable to store calibrated pressure data */
int16_t par_p5;
/*! Variable to store calibrated pressure data */
int8_t par_p6;
/*! Variable to store calibrated pressure data */
int8_t par_p7;
/*! Variable to store calibrated pressure data */
int16_t par_p8;
/*! Variable to store calibrated pressure data */
int16_t par_p9;
/*! Variable to store calibrated pressure data */
uint8_t par_p10;
/*! Variable to store t_fine size */
int32_t t_fine;
/*! Variable to store heater resistance range */
uint8_t res_heat_range;
/*! Variable to store heater resistance value */
int8_t res_heat_val;
/*! Variable to store error range */
int8_t range_sw_err;
};
/*!
* @brief BME680 sensor settings structure which comprises of ODR,
* over-sampling and filter settings.
*/
struct bme680_tph_sett {
/*! Humidity oversampling */
uint8_t os_hum;
/*! Temperature oversampling */
uint8_t os_temp;
/*! Pressure oversampling */
uint8_t os_pres;
/*! Filter coefficient */
uint8_t filter;
};
/*!
* @brief BME680 gas sensor which comprises of gas settings
* and status parameters
*/
struct bme680_gas_sett {
/*! Variable to store nb conversion */
uint8_t nb_conv;
/*! Variable to store heater control */
uint8_t heatr_ctrl;
/*! Run gas enable value */
uint8_t run_gas;
/*! Pointer to store heater temperature */
uint16_t heatr_temp;
/*! Pointer to store duration profile */
uint16_t heatr_dur;
};
/*!
* @brief BME680 device structure
*/
struct bme680_dev {
/*! Chip Id */
uint8_t chip_id;
/*! Device Id */
uint8_t dev_id;
/*! SPI/I2C interface */
enum bme680_intf intf;
/*! Memory page used */
uint8_t mem_page;
/*! Ambient temperature in Degree C*/
int8_t amb_temp;
/*! Sensor calibration data */
struct bme680_calib_data calib;
/*! Sensor settings */
struct bme680_tph_sett tph_sett;
/*! Gas Sensor settings */
struct bme680_gas_sett gas_sett;
/*! Sensor power modes */
uint8_t power_mode;
/*! New sensor fields */
uint8_t new_fields;
/*! Store the info messages */
uint8_t info_msg;
/*! Burst read structure */
bme680_com_fptr_t read;
/*! Burst write structure */
bme680_com_fptr_t write;
/*! Delay in ms */
bme680_delay_fptr_t delay_ms;
/*! Communication function result */
int8_t com_rslt;
};
#endif /* BME680_DEFS_H_ */
/** @}*/
/** @}*/
File diff suppressed because one or more lines are too long
@@ -0,0 +1,78 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: Class List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_adafruit___b_m_e680.html" target="_self">Adafruit_BME680</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

@@ -0,0 +1,157 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: bme680.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">bme680.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Sensor driver for BME680 sensor.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="bme680_8h_source.html">bme680.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gaee75ae524b7ca8f4a9b6dbb7f640c2e4"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#gaee75ae524b7ca8f4a9b6dbb7f640c2e4">bme680_init</a> (struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:gaee75ae524b7ca8f4a9b6dbb7f640c2e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API is the entry point. It reads the chip-id and calibration data from the sensor. <a href="group___b_m_e680.html#gaee75ae524b7ca8f4a9b6dbb7f640c2e4">More...</a><br /></td></tr>
<tr class="separator:gaee75ae524b7ca8f4a9b6dbb7f640c2e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf5548cbdbf327e2c77bdb0afb1dde9e4"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#gaf5548cbdbf327e2c77bdb0afb1dde9e4">bme680_get_regs</a> (uint8_t reg_addr, uint8_t *reg_data, uint16_t len, struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:gaf5548cbdbf327e2c77bdb0afb1dde9e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API reads the data from the given register address of the sensor. <a href="group___b_m_e680.html#gaf5548cbdbf327e2c77bdb0afb1dde9e4">More...</a><br /></td></tr>
<tr class="separator:gaf5548cbdbf327e2c77bdb0afb1dde9e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5d1bad74f7ac28e75aca9d7de66fd2b4"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga5d1bad74f7ac28e75aca9d7de66fd2b4">bme680_set_regs</a> (const uint8_t *reg_addr, const uint8_t *reg_data, uint8_t len, struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga5d1bad74f7ac28e75aca9d7de66fd2b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API writes the given data to the register address of the sensor. <a href="group___b_m_e680.html#ga5d1bad74f7ac28e75aca9d7de66fd2b4">More...</a><br /></td></tr>
<tr class="separator:ga5d1bad74f7ac28e75aca9d7de66fd2b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7f0f1a4378bc6cd0a34acf62509cdec7"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga7f0f1a4378bc6cd0a34acf62509cdec7">bme680_soft_reset</a> (struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga7f0f1a4378bc6cd0a34acf62509cdec7"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API performs the soft reset of the sensor. <a href="group___b_m_e680.html#ga7f0f1a4378bc6cd0a34acf62509cdec7">More...</a><br /></td></tr>
<tr class="separator:ga7f0f1a4378bc6cd0a34acf62509cdec7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2fea1365b4fa1d33eef434769b16e811"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga2fea1365b4fa1d33eef434769b16e811">bme680_set_sensor_settings</a> (uint16_t desired_settings, struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga2fea1365b4fa1d33eef434769b16e811"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API is used to set the oversampling, filter and T,P,H, gas selection settings in the sensor. <a href="group___b_m_e680.html#ga2fea1365b4fa1d33eef434769b16e811">More...</a><br /></td></tr>
<tr class="separator:ga2fea1365b4fa1d33eef434769b16e811"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7826b058b8eddcf05ccbb117fd9d41b7"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga7826b058b8eddcf05ccbb117fd9d41b7">bme680_get_sensor_settings</a> (uint16_t desired_settings, struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga7826b058b8eddcf05ccbb117fd9d41b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API is used to get the oversampling, filter and T,P,H, gas selection settings in the sensor. <a href="group___b_m_e680.html#ga7826b058b8eddcf05ccbb117fd9d41b7">More...</a><br /></td></tr>
<tr class="separator:ga7826b058b8eddcf05ccbb117fd9d41b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5ca765226e758e71c862553c7cc0b371"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga5ca765226e758e71c862553c7cc0b371">bme680_set_sensor_mode</a> (struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga5ca765226e758e71c862553c7cc0b371"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API is used to set the power mode of the sensor. <a href="group___b_m_e680.html#ga5ca765226e758e71c862553c7cc0b371">More...</a><br /></td></tr>
<tr class="separator:ga5ca765226e758e71c862553c7cc0b371"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4e50492a1f4747868f7e9a826492f1e7"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga4e50492a1f4747868f7e9a826492f1e7">bme680_get_sensor_mode</a> (struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga4e50492a1f4747868f7e9a826492f1e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API is used to get the power mode of the sensor. <a href="group___b_m_e680.html#ga4e50492a1f4747868f7e9a826492f1e7">More...</a><br /></td></tr>
<tr class="separator:ga4e50492a1f4747868f7e9a826492f1e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga192f772bc9cb619e5855e93d6ebd6128"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga192f772bc9cb619e5855e93d6ebd6128">bme680_set_profile_dur</a> (uint16_t duration, struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga192f772bc9cb619e5855e93d6ebd6128"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API is used to set the profile duration of the sensor. <a href="group___b_m_e680.html#ga192f772bc9cb619e5855e93d6ebd6128">More...</a><br /></td></tr>
<tr class="separator:ga192f772bc9cb619e5855e93d6ebd6128"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga191c03ab8aa1f4bc440953fd2f6317c2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga191c03ab8aa1f4bc440953fd2f6317c2">bme680_get_profile_dur</a> (uint16_t *duration, struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga191c03ab8aa1f4bc440953fd2f6317c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API is used to get the profile duration of the sensor. <a href="group___b_m_e680.html#ga191c03ab8aa1f4bc440953fd2f6317c2">More...</a><br /></td></tr>
<tr class="separator:ga191c03ab8aa1f4bc440953fd2f6317c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1025301e420e1e21911044bebb62f940"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga1025301e420e1e21911044bebb62f940">bme680_get_sensor_data</a> (struct <a class="el" href="structbme680__field__data.html">bme680_field_data</a> *data, struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga1025301e420e1e21911044bebb62f940"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API reads the pressure, temperature and humidity and gas data from the sensor, compensates the data and store it in the bme680_data structure instance passed by the user. <a href="group___b_m_e680.html#ga1025301e420e1e21911044bebb62f940">More...</a><br /></td></tr>
<tr class="separator:ga1025301e420e1e21911044bebb62f940"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:adededc333f13a6bae1487b7cadee4a5f"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bme680_8c.html#adededc333f13a6bae1487b7cadee4a5f">lookupTable1</a> [16]</td></tr>
<tr class="separator:adededc333f13a6bae1487b7cadee4a5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf3a4ba4968870a9fb857fe7f47f9461"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bme680_8c.html#aaf3a4ba4968870a9fb857fe7f47f9461">lookupTable2</a> [16]</td></tr>
<tr class="separator:aaf3a4ba4968870a9fb857fe7f47f9461"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Sensor driver for BME680 sensor. </p>
</div><h2 class="groupheader">Variable Documentation</h2>
<a id="adededc333f13a6bae1487b7cadee4a5f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adededc333f13a6bae1487b7cadee4a5f">&#9670;&nbsp;</a></span>lookupTable1</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t lookupTable1[16]</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= { UINT32_C(2147483647), UINT32_C(2147483647), UINT32_C(2147483647), UINT32_C(2147483647),</div><div class="line"> UINT32_C(2147483647), UINT32_C(2126008810), UINT32_C(2147483647), UINT32_C(2130303777), UINT32_C(2147483647),</div><div class="line"> UINT32_C(2147483647), UINT32_C(2143188679), UINT32_C(2136746228), UINT32_C(2147483647), UINT32_C(2126008810),</div><div class="line"> UINT32_C(2147483647), UINT32_C(2147483647) }</div></div><!-- fragment --><p>static variables Look up table for the possible gas range values </p>
</div>
</div>
<a id="aaf3a4ba4968870a9fb857fe7f47f9461"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf3a4ba4968870a9fb857fe7f47f9461">&#9670;&nbsp;</a></span>lookupTable2</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t lookupTable2[16]</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= { UINT32_C(4096000000), UINT32_C(2048000000), UINT32_C(1024000000), UINT32_C(512000000),</div><div class="line"> UINT32_C(255744255), UINT32_C(127110228), UINT32_C(64000000), UINT32_C(32258064), UINT32_C(16016016), UINT32_C(</div><div class="line"> 8000000), UINT32_C(4000000), UINT32_C(2000000), UINT32_C(1000000), UINT32_C(500000), UINT32_C(250000),</div><div class="line"> UINT32_C(125000) }</div></div><!-- fragment --><p>Look up table for the possible gas range values </p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
@@ -0,0 +1,129 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: bme680.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">bme680.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Sensor driver for BME680 sensor.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="bme680__defs_8h_source.html">bme680_defs.h</a>&quot;</code><br />
</div>
<p><a href="bme680_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gaee75ae524b7ca8f4a9b6dbb7f640c2e4"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#gaee75ae524b7ca8f4a9b6dbb7f640c2e4">bme680_init</a> (struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:gaee75ae524b7ca8f4a9b6dbb7f640c2e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API is the entry point. It reads the chip-id and calibration data from the sensor. <a href="group___b_m_e680.html#gaee75ae524b7ca8f4a9b6dbb7f640c2e4">More...</a><br /></td></tr>
<tr class="separator:gaee75ae524b7ca8f4a9b6dbb7f640c2e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5d1bad74f7ac28e75aca9d7de66fd2b4"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga5d1bad74f7ac28e75aca9d7de66fd2b4">bme680_set_regs</a> (const uint8_t *reg_addr, const uint8_t *reg_data, uint8_t len, struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga5d1bad74f7ac28e75aca9d7de66fd2b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API writes the given data to the register address of the sensor. <a href="group___b_m_e680.html#ga5d1bad74f7ac28e75aca9d7de66fd2b4">More...</a><br /></td></tr>
<tr class="separator:ga5d1bad74f7ac28e75aca9d7de66fd2b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf5548cbdbf327e2c77bdb0afb1dde9e4"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#gaf5548cbdbf327e2c77bdb0afb1dde9e4">bme680_get_regs</a> (uint8_t reg_addr, uint8_t *reg_data, uint16_t len, struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:gaf5548cbdbf327e2c77bdb0afb1dde9e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API reads the data from the given register address of the sensor. <a href="group___b_m_e680.html#gaf5548cbdbf327e2c77bdb0afb1dde9e4">More...</a><br /></td></tr>
<tr class="separator:gaf5548cbdbf327e2c77bdb0afb1dde9e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7f0f1a4378bc6cd0a34acf62509cdec7"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga7f0f1a4378bc6cd0a34acf62509cdec7">bme680_soft_reset</a> (struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga7f0f1a4378bc6cd0a34acf62509cdec7"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API performs the soft reset of the sensor. <a href="group___b_m_e680.html#ga7f0f1a4378bc6cd0a34acf62509cdec7">More...</a><br /></td></tr>
<tr class="separator:ga7f0f1a4378bc6cd0a34acf62509cdec7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5ca765226e758e71c862553c7cc0b371"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga5ca765226e758e71c862553c7cc0b371">bme680_set_sensor_mode</a> (struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga5ca765226e758e71c862553c7cc0b371"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API is used to set the power mode of the sensor. <a href="group___b_m_e680.html#ga5ca765226e758e71c862553c7cc0b371">More...</a><br /></td></tr>
<tr class="separator:ga5ca765226e758e71c862553c7cc0b371"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4e50492a1f4747868f7e9a826492f1e7"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga4e50492a1f4747868f7e9a826492f1e7">bme680_get_sensor_mode</a> (struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga4e50492a1f4747868f7e9a826492f1e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API is used to get the power mode of the sensor. <a href="group___b_m_e680.html#ga4e50492a1f4747868f7e9a826492f1e7">More...</a><br /></td></tr>
<tr class="separator:ga4e50492a1f4747868f7e9a826492f1e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga192f772bc9cb619e5855e93d6ebd6128"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga192f772bc9cb619e5855e93d6ebd6128">bme680_set_profile_dur</a> (uint16_t duration, struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga192f772bc9cb619e5855e93d6ebd6128"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API is used to set the profile duration of the sensor. <a href="group___b_m_e680.html#ga192f772bc9cb619e5855e93d6ebd6128">More...</a><br /></td></tr>
<tr class="separator:ga192f772bc9cb619e5855e93d6ebd6128"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga191c03ab8aa1f4bc440953fd2f6317c2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga191c03ab8aa1f4bc440953fd2f6317c2">bme680_get_profile_dur</a> (uint16_t *duration, struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga191c03ab8aa1f4bc440953fd2f6317c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API is used to get the profile duration of the sensor. <a href="group___b_m_e680.html#ga191c03ab8aa1f4bc440953fd2f6317c2">More...</a><br /></td></tr>
<tr class="separator:ga191c03ab8aa1f4bc440953fd2f6317c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1025301e420e1e21911044bebb62f940"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga1025301e420e1e21911044bebb62f940">bme680_get_sensor_data</a> (struct <a class="el" href="structbme680__field__data.html">bme680_field_data</a> *data, struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga1025301e420e1e21911044bebb62f940"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API reads the pressure, temperature and humidity and gas data from the sensor, compensates the data and store it in the bme680_data structure instance passed by the user. <a href="group___b_m_e680.html#ga1025301e420e1e21911044bebb62f940">More...</a><br /></td></tr>
<tr class="separator:ga1025301e420e1e21911044bebb62f940"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2fea1365b4fa1d33eef434769b16e811"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga2fea1365b4fa1d33eef434769b16e811">bme680_set_sensor_settings</a> (uint16_t desired_settings, struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga2fea1365b4fa1d33eef434769b16e811"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API is used to set the oversampling, filter and T,P,H, gas selection settings in the sensor. <a href="group___b_m_e680.html#ga2fea1365b4fa1d33eef434769b16e811">More...</a><br /></td></tr>
<tr class="separator:ga2fea1365b4fa1d33eef434769b16e811"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7826b058b8eddcf05ccbb117fd9d41b7"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___b_m_e680.html#ga7826b058b8eddcf05ccbb117fd9d41b7">bme680_get_sensor_settings</a> (uint16_t desired_settings, struct <a class="el" href="structbme680__dev.html">bme680_dev</a> *dev)</td></tr>
<tr class="memdesc:ga7826b058b8eddcf05ccbb117fd9d41b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">This API is used to get the oversampling, filter and T,P,H, gas selection settings in the sensor. <a href="group___b_m_e680.html#ga7826b058b8eddcf05ccbb117fd9d41b7">More...</a><br /></td></tr>
<tr class="separator:ga7826b058b8eddcf05ccbb117fd9d41b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Sensor driver for BME680 sensor. </p>
<p>Copyright (C) 2017 - 2018 Bosch Sensortec GmbH</p>
<p>Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:</p>
<p>Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.</p>
<p>Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.</p>
<p>Neither the name of the copyright holder nor the names of the contributors may be used to endorse or promote products derived from this software without specific prior written permission.</p>
<p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE</p>
<p>The information provided is believed to be accurate and reliable. The copyright holder assumes no responsibility for the consequences of use of such information nor for any infringement of patents or other rights of third parties which may result from its use. No license is granted by implication or otherwise under any patent or patent rights of the copyright holder.</p>
<dl class="section date"><dt>Date</dt><dd>5 Jul 2017 </dd></dl>
<dl class="section version"><dt>Version</dt><dd>3.5.1</dd></dl>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,94 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Adafruit_BME680 Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#af147d564868b9eac61a2c7fcd8f614cd">Adafruit_BME680</a>(int8_t cspin=-1)</td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#a8e89aaed66497bb2dde7ab678aa81173">Adafruit_BME680</a>(int8_t cspin, int8_t mosipin, int8_t misopin, int8_t sckpin)</td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#ac6d9d5dc90424c2c3c3a3b311c1141dc">begin</a>(uint8_t addr=BME680_DEFAULT_ADDRESS)</td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#aef05921539684ec297168bdd0cee7c7c">gas_resistance</a></td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#a442787f3ad0f2ab9087535ba9c22102b">humidity</a></td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#aa58210864cad77b272669eb86f1d2a88">performReading</a>(void)</td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#a956b36e719ef0b37e59e6c3ecb8c5583">pressure</a></td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#a3caae92aa981508f0084b11b1fed4883">readAltitude</a>(float seaLevel)</td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#ae0b55eb1049c5949ff186de86aaafb55">readGas</a>(void)</td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#a1402c97860f9c61bf133be7e7056658b">readHumidity</a>(void)</td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#afd081183a7845fee1d1c080cce20495e">readPressure</a>(void)</td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#a7b554e6edf5cea06cf480e53bcb65aec">readTemperature</a>(void)</td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#a2e6a61b5441c51bf5e44c3af3ee3fec8">setGasHeater</a>(uint16_t heaterTemp, uint16_t heaterTime)</td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#af1f05d2f024e946c1d7cbe3fb90b0859">setHumidityOversampling</a>(uint8_t os)</td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#a42f25a4f258aad9abad4abb6bd95ec77">setIIRFilterSize</a>(uint8_t fs)</td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#a73a9467c838951a187a268172a2b5d8c">setPressureOversampling</a>(uint8_t os)</td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#a640ee0a0cb7ca57af30e8408260cc6e6">setTemperatureOversampling</a>(uint8_t os)</td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html#a074501406d2bf249551e3e489cb9316e">temperature</a></td><td class="entry"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
@@ -0,0 +1,537 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: Adafruit_BME680 Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="class_adafruit___b_m_e680-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Adafruit_BME680 Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="_adafruit___b_m_e680_8h_source.html">Adafruit_BME680.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:af147d564868b9eac61a2c7fcd8f614cd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#af147d564868b9eac61a2c7fcd8f614cd">Adafruit_BME680</a> (int8_t cspin=-1)</td></tr>
<tr class="memdesc:af147d564868b9eac61a2c7fcd8f614cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Instantiates sensor with Hardware SPI or I2C. <a href="#af147d564868b9eac61a2c7fcd8f614cd">More...</a><br /></td></tr>
<tr class="separator:af147d564868b9eac61a2c7fcd8f614cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e89aaed66497bb2dde7ab678aa81173"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#a8e89aaed66497bb2dde7ab678aa81173">Adafruit_BME680</a> (int8_t cspin, int8_t mosipin, int8_t misopin, int8_t sckpin)</td></tr>
<tr class="memdesc:a8e89aaed66497bb2dde7ab678aa81173"><td class="mdescLeft">&#160;</td><td class="mdescRight">Instantiates sensor with Software (bit-bang) SPI. <a href="#a8e89aaed66497bb2dde7ab678aa81173">More...</a><br /></td></tr>
<tr class="separator:a8e89aaed66497bb2dde7ab678aa81173"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6d9d5dc90424c2c3c3a3b311c1141dc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#ac6d9d5dc90424c2c3c3a3b311c1141dc">begin</a> (uint8_t addr=BME680_DEFAULT_ADDRESS)</td></tr>
<tr class="memdesc:ac6d9d5dc90424c2c3c3a3b311c1141dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the sensor. <a href="#ac6d9d5dc90424c2c3c3a3b311c1141dc">More...</a><br /></td></tr>
<tr class="separator:ac6d9d5dc90424c2c3c3a3b311c1141dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b554e6edf5cea06cf480e53bcb65aec"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#a7b554e6edf5cea06cf480e53bcb65aec">readTemperature</a> (void)</td></tr>
<tr class="memdesc:a7b554e6edf5cea06cf480e53bcb65aec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a reading and returns the ambient temperature. <a href="#a7b554e6edf5cea06cf480e53bcb65aec">More...</a><br /></td></tr>
<tr class="separator:a7b554e6edf5cea06cf480e53bcb65aec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd081183a7845fee1d1c080cce20495e"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#afd081183a7845fee1d1c080cce20495e">readPressure</a> (void)</td></tr>
<tr class="memdesc:afd081183a7845fee1d1c080cce20495e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a reading and returns the barometric pressure. <a href="#afd081183a7845fee1d1c080cce20495e">More...</a><br /></td></tr>
<tr class="separator:afd081183a7845fee1d1c080cce20495e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1402c97860f9c61bf133be7e7056658b"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#a1402c97860f9c61bf133be7e7056658b">readHumidity</a> (void)</td></tr>
<tr class="memdesc:a1402c97860f9c61bf133be7e7056658b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a reading and returns the relative humidity. <a href="#a1402c97860f9c61bf133be7e7056658b">More...</a><br /></td></tr>
<tr class="separator:a1402c97860f9c61bf133be7e7056658b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0b55eb1049c5949ff186de86aaafb55"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#ae0b55eb1049c5949ff186de86aaafb55">readGas</a> (void)</td></tr>
<tr class="memdesc:ae0b55eb1049c5949ff186de86aaafb55"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the resistance of the MOX gas sensor. <a href="#ae0b55eb1049c5949ff186de86aaafb55">More...</a><br /></td></tr>
<tr class="separator:ae0b55eb1049c5949ff186de86aaafb55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3caae92aa981508f0084b11b1fed4883"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#a3caae92aa981508f0084b11b1fed4883">readAltitude</a> (float seaLevel)</td></tr>
<tr class="memdesc:a3caae92aa981508f0084b11b1fed4883"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the altitude (in meters). <a href="#a3caae92aa981508f0084b11b1fed4883">More...</a><br /></td></tr>
<tr class="separator:a3caae92aa981508f0084b11b1fed4883"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a640ee0a0cb7ca57af30e8408260cc6e6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#a640ee0a0cb7ca57af30e8408260cc6e6">setTemperatureOversampling</a> (uint8_t os)</td></tr>
<tr class="memdesc:a640ee0a0cb7ca57af30e8408260cc6e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Setter for Temperature oversampling. <a href="#a640ee0a0cb7ca57af30e8408260cc6e6">More...</a><br /></td></tr>
<tr class="separator:a640ee0a0cb7ca57af30e8408260cc6e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73a9467c838951a187a268172a2b5d8c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#a73a9467c838951a187a268172a2b5d8c">setPressureOversampling</a> (uint8_t os)</td></tr>
<tr class="memdesc:a73a9467c838951a187a268172a2b5d8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Setter for Pressure oversampling. <a href="#a73a9467c838951a187a268172a2b5d8c">More...</a><br /></td></tr>
<tr class="separator:a73a9467c838951a187a268172a2b5d8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1f05d2f024e946c1d7cbe3fb90b0859"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#af1f05d2f024e946c1d7cbe3fb90b0859">setHumidityOversampling</a> (uint8_t os)</td></tr>
<tr class="memdesc:af1f05d2f024e946c1d7cbe3fb90b0859"><td class="mdescLeft">&#160;</td><td class="mdescRight">Setter for Humidity oversampling. <a href="#af1f05d2f024e946c1d7cbe3fb90b0859">More...</a><br /></td></tr>
<tr class="separator:af1f05d2f024e946c1d7cbe3fb90b0859"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42f25a4f258aad9abad4abb6bd95ec77"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#a42f25a4f258aad9abad4abb6bd95ec77">setIIRFilterSize</a> (uint8_t fs)</td></tr>
<tr class="memdesc:a42f25a4f258aad9abad4abb6bd95ec77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Setter for IIR filter. <a href="#a42f25a4f258aad9abad4abb6bd95ec77">More...</a><br /></td></tr>
<tr class="separator:a42f25a4f258aad9abad4abb6bd95ec77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e6a61b5441c51bf5e44c3af3ee3fec8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#a2e6a61b5441c51bf5e44c3af3ee3fec8">setGasHeater</a> (uint16_t heaterTemp, uint16_t heaterTime)</td></tr>
<tr class="memdesc:a2e6a61b5441c51bf5e44c3af3ee3fec8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable and configure gas reading + heater. <a href="#a2e6a61b5441c51bf5e44c3af3ee3fec8">More...</a><br /></td></tr>
<tr class="separator:a2e6a61b5441c51bf5e44c3af3ee3fec8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa58210864cad77b272669eb86f1d2a88"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#aa58210864cad77b272669eb86f1d2a88">performReading</a> (void)</td></tr>
<tr class="memdesc:aa58210864cad77b272669eb86f1d2a88"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a full reading of all 4 sensors in the BME680. <a href="#aa58210864cad77b272669eb86f1d2a88">More...</a><br /></td></tr>
<tr class="separator:aa58210864cad77b272669eb86f1d2a88"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a074501406d2bf249551e3e489cb9316e"><td class="memItemLeft" align="right" valign="top"><a id="a074501406d2bf249551e3e489cb9316e"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#a074501406d2bf249551e3e489cb9316e">temperature</a></td></tr>
<tr class="memdesc:a074501406d2bf249551e3e489cb9316e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Temperature (Celsius) assigned after calling <a class="el" href="class_adafruit___b_m_e680.html#aa58210864cad77b272669eb86f1d2a88" title="Performs a full reading of all 4 sensors in the BME680. ">performReading()</a> <br /></td></tr>
<tr class="separator:a074501406d2bf249551e3e489cb9316e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a956b36e719ef0b37e59e6c3ecb8c5583"><td class="memItemLeft" align="right" valign="top"><a id="a956b36e719ef0b37e59e6c3ecb8c5583"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#a956b36e719ef0b37e59e6c3ecb8c5583">pressure</a></td></tr>
<tr class="memdesc:a956b36e719ef0b37e59e6c3ecb8c5583"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pressure (Pascals) assigned after calling <a class="el" href="class_adafruit___b_m_e680.html#aa58210864cad77b272669eb86f1d2a88" title="Performs a full reading of all 4 sensors in the BME680. ">performReading()</a> <br /></td></tr>
<tr class="separator:a956b36e719ef0b37e59e6c3ecb8c5583"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a442787f3ad0f2ab9087535ba9c22102b"><td class="memItemLeft" align="right" valign="top"><a id="a442787f3ad0f2ab9087535ba9c22102b"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#a442787f3ad0f2ab9087535ba9c22102b">humidity</a></td></tr>
<tr class="memdesc:a442787f3ad0f2ab9087535ba9c22102b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Humidity (RH %) assigned after calling <a class="el" href="class_adafruit___b_m_e680.html#aa58210864cad77b272669eb86f1d2a88" title="Performs a full reading of all 4 sensors in the BME680. ">performReading()</a> <br /></td></tr>
<tr class="separator:a442787f3ad0f2ab9087535ba9c22102b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef05921539684ec297168bdd0cee7c7c"><td class="memItemLeft" align="right" valign="top"><a id="aef05921539684ec297168bdd0cee7c7c"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___b_m_e680.html#aef05921539684ec297168bdd0cee7c7c">gas_resistance</a></td></tr>
<tr class="memdesc:aef05921539684ec297168bdd0cee7c7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gas resistor (ohms) assigned after calling <a class="el" href="class_adafruit___b_m_e680.html#aa58210864cad77b272669eb86f1d2a88" title="Performs a full reading of all 4 sensors in the BME680. ">performReading()</a> <br /></td></tr>
<tr class="separator:aef05921539684ec297168bdd0cee7c7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a> Class for both I2C and SPI usage. Wraps the Bosch library for Arduino usage </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="af147d564868b9eac61a2c7fcd8f614cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af147d564868b9eac61a2c7fcd8f614cd">&#9670;&nbsp;</a></span>Adafruit_BME680() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Adafruit_BME680::Adafruit_BME680 </td>
<td>(</td>
<td class="paramtype">int8_t&#160;</td>
<td class="paramname"><em>cspin</em> = <code>-1</code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Instantiates sensor with Hardware SPI or I2C. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cspin</td><td>SPI chip select. If not passed in, I2C will be used </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a8e89aaed66497bb2dde7ab678aa81173"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e89aaed66497bb2dde7ab678aa81173">&#9670;&nbsp;</a></span>Adafruit_BME680() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Adafruit_BME680::Adafruit_BME680 </td>
<td>(</td>
<td class="paramtype">int8_t&#160;</td>
<td class="paramname"><em>cspin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int8_t&#160;</td>
<td class="paramname"><em>mosipin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int8_t&#160;</td>
<td class="paramname"><em>misopin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int8_t&#160;</td>
<td class="paramname"><em>sckpin</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Instantiates sensor with Software (bit-bang) SPI. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cspin</td><td>SPI chip select </td></tr>
<tr><td class="paramname">mosipin</td><td>SPI MOSI (Data from microcontroller to sensor) </td></tr>
<tr><td class="paramname">misopin</td><td>SPI MISO (Data to microcontroller from sensor) </td></tr>
<tr><td class="paramname">sckpin</td><td>SPI Clock </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ac6d9d5dc90424c2c3c3a3b311c1141dc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6d9d5dc90424c2c3c3a3b311c1141dc">&#9670;&nbsp;</a></span>begin()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool Adafruit_BME680::begin </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>addr</em> = <code>BME680_DEFAULT_ADDRESS</code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initializes the sensor. </p>
<p>Hardware ss initialized, verifies it is in the I2C or SPI bus, then reads calibration data in preparation for sensor reads.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">addr</td><td>Optional parameter for the I2C address of BME680. Default is 0x77 </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True on sensor initialization success. False on failure. </dd></dl>
</div>
</div>
<a id="aa58210864cad77b272669eb86f1d2a88"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa58210864cad77b272669eb86f1d2a88">&#9670;&nbsp;</a></span>performReading()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool Adafruit_BME680::performReading </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs a full reading of all 4 sensors in the BME680. </p>
<p>Assigns the internal <a class="el" href="class_adafruit___b_m_e680.html#a074501406d2bf249551e3e489cb9316e" title="Temperature (Celsius) assigned after calling performReading() ">Adafruit_BME680::temperature</a>, <a class="el" href="class_adafruit___b_m_e680.html#a956b36e719ef0b37e59e6c3ecb8c5583" title="Pressure (Pascals) assigned after calling performReading() ">Adafruit_BME680::pressure</a>, <a class="el" href="class_adafruit___b_m_e680.html#a442787f3ad0f2ab9087535ba9c22102b" title="Humidity (RH %) assigned after calling performReading() ">Adafruit_BME680::humidity</a> and <a class="el" href="class_adafruit___b_m_e680.html#aef05921539684ec297168bdd0cee7c7c" title="Gas resistor (ohms) assigned after calling performReading() ">Adafruit_BME680::gas_resistance</a> member variables</p>
<dl class="section return"><dt>Returns</dt><dd>True on success, False on failure </dd></dl>
</div>
</div>
<a id="a3caae92aa981508f0084b11b1fed4883"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3caae92aa981508f0084b11b1fed4883">&#9670;&nbsp;</a></span>readAltitude()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float Adafruit_BME680::readAltitude </td>
<td>(</td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>seaLevel</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculates the altitude (in meters). </p>
<p>Reads the current atmostpheric pressure (in hPa) from the sensor and calculates via the provided sea-level pressure (in hPa).</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">seaLevel</td><td>Sea-level pressure in hPa </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Altitude in meters </dd></dl>
</div>
</div>
<a id="ae0b55eb1049c5949ff186de86aaafb55"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0b55eb1049c5949ff186de86aaafb55">&#9670;&nbsp;</a></span>readGas()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t Adafruit_BME680::readGas </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculates the resistance of the MOX gas sensor. </p>
<dl class="section return"><dt>Returns</dt><dd>Resistance in Ohms </dd></dl>
</div>
</div>
<a id="a1402c97860f9c61bf133be7e7056658b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1402c97860f9c61bf133be7e7056658b">&#9670;&nbsp;</a></span>readHumidity()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float Adafruit_BME680::readHumidity </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs a reading and returns the relative humidity. </p>
<dl class="section return"><dt>Returns</dt><dd>Relative humidity as floating point </dd></dl>
</div>
</div>
<a id="afd081183a7845fee1d1c080cce20495e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd081183a7845fee1d1c080cce20495e">&#9670;&nbsp;</a></span>readPressure()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float Adafruit_BME680::readPressure </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs a reading and returns the barometric pressure. </p>
<dl class="section return"><dt>Returns</dt><dd>Barometic pressure in Pascals </dd></dl>
</div>
</div>
<a id="a7b554e6edf5cea06cf480e53bcb65aec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b554e6edf5cea06cf480e53bcb65aec">&#9670;&nbsp;</a></span>readTemperature()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float Adafruit_BME680::readTemperature </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs a reading and returns the ambient temperature. </p>
<dl class="section return"><dt>Returns</dt><dd>Temperature in degrees Centigrade </dd></dl>
</div>
</div>
<a id="a2e6a61b5441c51bf5e44c3af3ee3fec8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2e6a61b5441c51bf5e44c3af3ee3fec8">&#9670;&nbsp;</a></span>setGasHeater()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool Adafruit_BME680::setGasHeater </td>
<td>(</td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>heaterTemp</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>heaterTime</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Enable and configure gas reading + heater. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">heaterTemp</td><td>Desired temperature in degrees Centigrade </td></tr>
<tr><td class="paramname">heaterTime</td><td>Time to keep heater on in milliseconds </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True on success, False on failure </dd></dl>
</div>
</div>
<a id="af1f05d2f024e946c1d7cbe3fb90b0859"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af1f05d2f024e946c1d7cbe3fb90b0859">&#9670;&nbsp;</a></span>setHumidityOversampling()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool Adafruit_BME680::setHumidityOversampling </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>oversample</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Setter for Humidity oversampling. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">oversample</td><td>Oversampling setting, can be BME680_OS_NONE (turn off Humidity reading), BME680_OS_1X, BME680_OS_2X, BME680_OS_4X, BME680_OS_8X or BME680_OS_16X </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True on success, False on failure </dd></dl>
</div>
</div>
<a id="a42f25a4f258aad9abad4abb6bd95ec77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a42f25a4f258aad9abad4abb6bd95ec77">&#9670;&nbsp;</a></span>setIIRFilterSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool Adafruit_BME680::setIIRFilterSize </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>filtersize</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Setter for IIR filter. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">filtersize</td><td>Size of the filter (in samples). Can be BME680_FILTER_SIZE_0 (no filtering), BME680_FILTER_SIZE_1, BME680_FILTER_SIZE_3, BME680_FILTER_SIZE_7, BME680_FILTER_SIZE_15, BME680_FILTER_SIZE_31, BME680_FILTER_SIZE_63, BME680_FILTER_SIZE_127 </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True on success, False on failure </dd></dl>
</div>
</div>
<a id="a73a9467c838951a187a268172a2b5d8c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73a9467c838951a187a268172a2b5d8c">&#9670;&nbsp;</a></span>setPressureOversampling()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool Adafruit_BME680::setPressureOversampling </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>os</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Setter for Pressure oversampling. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">oversample</td><td>Oversampling setting, can be BME680_OS_NONE (turn off Pressure reading), BME680_OS_1X, BME680_OS_2X, BME680_OS_4X, BME680_OS_8X or BME680_OS_16X </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True on success, False on failure </dd></dl>
</div>
</div>
<a id="a640ee0a0cb7ca57af30e8408260cc6e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a640ee0a0cb7ca57af30e8408260cc6e6">&#9670;&nbsp;</a></span>setTemperatureOversampling()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool Adafruit_BME680::setTemperatureOversampling </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>oversample</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Setter for Temperature oversampling. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">oversample</td><td>Oversampling setting, can be BME680_OS_NONE (turn off Temperature reading), BME680_OS_1X, BME680_OS_2X, BME680_OS_4X, BME680_OS_8X or BME680_OS_16X </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True on success, False on failure </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="_adafruit___b_m_e680_8h_source.html">Adafruit_BME680.h</a></li>
<li>Adafruit_BME680.cpp</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
@@ -0,0 +1,82 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: Class Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class Index</div> </div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_a">a</a></div>
<table class="classindex">
<tr><td rowspan="2" valign="bottom"><a name="letter_a"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;a&#160;&#160;</div></td></tr></table>
</td><td></td></tr>
<tr><td></td></tr>
<tr><td valign="top"><a class="el" href="class_adafruit___b_m_e680.html">Adafruit_BME680</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td></td><td></td></tr>
</table>
<div class="qindex"><a class="qindex" href="#letter_a">a</a></div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

@@ -0,0 +1,97 @@
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
}
function updateStripes()
{
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
}
function toggleLevel(level)
{
$('table.directory tr').each(function() {
var l = this.id.split('_').length-1;
var i = $('#img'+this.id.substring(3));
var a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
a.html('&#9660;');
$(this).show();
} else if (l==level+1) {
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
a.html('&#9658;');
$(this).show();
} else {
$(this).hide();
}
});
updateStripes();
}
function toggleFolder(id)
{
// the clicked row
var currentRow = $('#row_'+id);
// all rows after the clicked row
var rows = currentRow.nextAll("tr");
var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
// only match elements AFTER this one (can't hide elements before)
var childRows = rows.filter(function() { return this.id.match(re); });
// first row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
// replace down arrow by right arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
currentRowSpans.filter(".arrow").html('&#9658;');
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
currentRowSpans.filter(".arrow").html('&#9660;');
// replace down arrows by right arrows for child rows
var childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
childRowsSpans.filter(".arrow").html('&#9658;');
childRows.show(); //show all children
}
updateStripes();
}
function toggleInherit(id)
{
var rows = $('tr.inherit.'+id);
var img = $('tr.inherit_header.'+id+' img');
var src = $(img).attr('src');
if (rows.filter(':first').is(':visible')===true) {
rows.css('display','none');
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
rows.css('display','table-row'); // using show() causes jump in firefox
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
}
+78
View File
@@ -0,0 +1,78 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: File List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">File List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="_adafruit___b_m_e680_8h_source.html"><span class="icondoc"></span></a><b>Adafruit_BME680.h</b></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

@@ -0,0 +1,122 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: Class Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div><ul>
<li>Adafruit_BME680()
: <a class="el" href="class_adafruit___b_m_e680.html#af147d564868b9eac61a2c7fcd8f614cd">Adafruit_BME680</a>
</li>
<li>begin()
: <a class="el" href="class_adafruit___b_m_e680.html#ac6d9d5dc90424c2c3c3a3b311c1141dc">Adafruit_BME680</a>
</li>
<li>gas_resistance
: <a class="el" href="class_adafruit___b_m_e680.html#aef05921539684ec297168bdd0cee7c7c">Adafruit_BME680</a>
</li>
<li>humidity
: <a class="el" href="class_adafruit___b_m_e680.html#a442787f3ad0f2ab9087535ba9c22102b">Adafruit_BME680</a>
</li>
<li>performReading()
: <a class="el" href="class_adafruit___b_m_e680.html#aa58210864cad77b272669eb86f1d2a88">Adafruit_BME680</a>
</li>
<li>pressure
: <a class="el" href="class_adafruit___b_m_e680.html#a956b36e719ef0b37e59e6c3ecb8c5583">Adafruit_BME680</a>
</li>
<li>readAltitude()
: <a class="el" href="class_adafruit___b_m_e680.html#a3caae92aa981508f0084b11b1fed4883">Adafruit_BME680</a>
</li>
<li>readGas()
: <a class="el" href="class_adafruit___b_m_e680.html#ae0b55eb1049c5949ff186de86aaafb55">Adafruit_BME680</a>
</li>
<li>readHumidity()
: <a class="el" href="class_adafruit___b_m_e680.html#a1402c97860f9c61bf133be7e7056658b">Adafruit_BME680</a>
</li>
<li>readPressure()
: <a class="el" href="class_adafruit___b_m_e680.html#afd081183a7845fee1d1c080cce20495e">Adafruit_BME680</a>
</li>
<li>readTemperature()
: <a class="el" href="class_adafruit___b_m_e680.html#a7b554e6edf5cea06cf480e53bcb65aec">Adafruit_BME680</a>
</li>
<li>setGasHeater()
: <a class="el" href="class_adafruit___b_m_e680.html#a2e6a61b5441c51bf5e44c3af3ee3fec8">Adafruit_BME680</a>
</li>
<li>setHumidityOversampling()
: <a class="el" href="class_adafruit___b_m_e680.html#af1f05d2f024e946c1d7cbe3fb90b0859">Adafruit_BME680</a>
</li>
<li>setIIRFilterSize()
: <a class="el" href="class_adafruit___b_m_e680.html#a42f25a4f258aad9abad4abb6bd95ec77">Adafruit_BME680</a>
</li>
<li>setPressureOversampling()
: <a class="el" href="class_adafruit___b_m_e680.html#a73a9467c838951a187a268172a2b5d8c">Adafruit_BME680</a>
</li>
<li>setTemperatureOversampling()
: <a class="el" href="class_adafruit___b_m_e680.html#a640ee0a0cb7ca57af30e8408260cc6e6">Adafruit_BME680</a>
</li>
<li>temperature
: <a class="el" href="class_adafruit___b_m_e680.html#a074501406d2bf249551e3e489cb9316e">Adafruit_BME680</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
@@ -0,0 +1,110 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: Class Members - Functions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>Adafruit_BME680()
: <a class="el" href="class_adafruit___b_m_e680.html#af147d564868b9eac61a2c7fcd8f614cd">Adafruit_BME680</a>
</li>
<li>begin()
: <a class="el" href="class_adafruit___b_m_e680.html#ac6d9d5dc90424c2c3c3a3b311c1141dc">Adafruit_BME680</a>
</li>
<li>performReading()
: <a class="el" href="class_adafruit___b_m_e680.html#aa58210864cad77b272669eb86f1d2a88">Adafruit_BME680</a>
</li>
<li>readAltitude()
: <a class="el" href="class_adafruit___b_m_e680.html#a3caae92aa981508f0084b11b1fed4883">Adafruit_BME680</a>
</li>
<li>readGas()
: <a class="el" href="class_adafruit___b_m_e680.html#ae0b55eb1049c5949ff186de86aaafb55">Adafruit_BME680</a>
</li>
<li>readHumidity()
: <a class="el" href="class_adafruit___b_m_e680.html#a1402c97860f9c61bf133be7e7056658b">Adafruit_BME680</a>
</li>
<li>readPressure()
: <a class="el" href="class_adafruit___b_m_e680.html#afd081183a7845fee1d1c080cce20495e">Adafruit_BME680</a>
</li>
<li>readTemperature()
: <a class="el" href="class_adafruit___b_m_e680.html#a7b554e6edf5cea06cf480e53bcb65aec">Adafruit_BME680</a>
</li>
<li>setGasHeater()
: <a class="el" href="class_adafruit___b_m_e680.html#a2e6a61b5441c51bf5e44c3af3ee3fec8">Adafruit_BME680</a>
</li>
<li>setHumidityOversampling()
: <a class="el" href="class_adafruit___b_m_e680.html#af1f05d2f024e946c1d7cbe3fb90b0859">Adafruit_BME680</a>
</li>
<li>setIIRFilterSize()
: <a class="el" href="class_adafruit___b_m_e680.html#a42f25a4f258aad9abad4abb6bd95ec77">Adafruit_BME680</a>
</li>
<li>setPressureOversampling()
: <a class="el" href="class_adafruit___b_m_e680.html#a73a9467c838951a187a268172a2b5d8c">Adafruit_BME680</a>
</li>
<li>setTemperatureOversampling()
: <a class="el" href="class_adafruit___b_m_e680.html#a640ee0a0cb7ca57af30e8408260cc6e6">Adafruit_BME680</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
@@ -0,0 +1,83 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: Class Members - Variables</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>gas_resistance
: <a class="el" href="class_adafruit___b_m_e680.html#aef05921539684ec297168bdd0cee7c7c">Adafruit_BME680</a>
</li>
<li>humidity
: <a class="el" href="class_adafruit___b_m_e680.html#a442787f3ad0f2ab9087535ba9c22102b">Adafruit_BME680</a>
</li>
<li>pressure
: <a class="el" href="class_adafruit___b_m_e680.html#a956b36e719ef0b37e59e6c3ecb8c5583">Adafruit_BME680</a>
</li>
<li>temperature
: <a class="el" href="class_adafruit___b_m_e680.html#a074501406d2bf249551e3e489cb9316e">Adafruit_BME680</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
+188
View File
@@ -0,0 +1,188 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: File Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented file members with links to the documentation:</div>
<h3><a id="index__"></a>- _ -</h3><ul>
<li>bme680_com_fptr_t
: <a class="el" href="bme680__defs_8h.html#aa7d183195e66f1db50f64f3a3d4ede57">bme680_defs.h</a>
</li>
<li>bme680_intf
: <a class="el" href="bme680__defs_8h.html#a2232c03d0c1282e976af41b39e1b87d6">bme680_defs.h</a>
</li>
</ul>
<h3><a id="index_b"></a>- b -</h3><ul>
<li>BME680_ADDR_RES_HEAT_VAL_ADDR
: <a class="el" href="bme680__defs_8h.html#af6a74cbd7c52c150a5d83766e86f3bf1">bme680_defs.h</a>
</li>
<li>BME680_CHIP_ID
: <a class="el" href="bme680__defs_8h.html#a762d33b22cceaa1f90dc2044ace463ee">bme680_defs.h</a>
</li>
<li>BME680_CHIP_ID_ADDR
: <a class="el" href="bme680__defs_8h.html#aa24d214515e9c3606dcefb874888c055">bme680_defs.h</a>
</li>
<li>BME680_COEFF_ADDR1
: <a class="el" href="bme680__defs_8h.html#a839d12e3afe0332b3383be0e258c472e">bme680_defs.h</a>
</li>
<li>BME680_COEFF_SIZE
: <a class="el" href="bme680__defs_8h.html#a4cf6e3574a83160f0adbfcf8cc5e3729">bme680_defs.h</a>
</li>
<li>BME680_CONCAT_BYTES
: <a class="el" href="bme680__defs_8h.html#a9aac51cc4b47a1f1c9f30c07026840ab">bme680_defs.h</a>
</li>
<li>BME680_CONF_HEAT_CTRL_ADDR
: <a class="el" href="bme680__defs_8h.html#a995aae4506cba06c735bb2ff37fbca49">bme680_defs.h</a>
</li>
<li>BME680_DISABLE_GAS_MEAS
: <a class="el" href="bme680__defs_8h.html#ad5a18c765061877212395397d58e2c20">bme680_defs.h</a>
</li>
<li>BME680_ENABLE_HEATER
: <a class="el" href="bme680__defs_8h.html#a9e973dfcc1a103110cc44077f3ed86c1">bme680_defs.h</a>
</li>
<li>BME680_FIELD0_ADDR
: <a class="el" href="bme680__defs_8h.html#aa1126d8a0cab009b3812d4dba28beec3">bme680_defs.h</a>
</li>
<li>BME680_FIELD_LENGTH
: <a class="el" href="bme680__defs_8h.html#a7cb775d981358b7e58eb8db0094bd1d7">bme680_defs.h</a>
</li>
<li>BME680_FILTER_SIZE_0
: <a class="el" href="bme680__defs_8h.html#a5edcb9fcb77440f52d2b2865a89b5475">bme680_defs.h</a>
</li>
<li>BME680_GAS_MEAS_MSK
: <a class="el" href="bme680__defs_8h.html#adff9a0ef09e48aa5fcecc9bcfb0bf6f2">bme680_defs.h</a>
</li>
<li>BME680_GAS_MEAS_POS
: <a class="el" href="bme680__defs_8h.html#aa72739940e9ab88370b0ae23ef687f15">bme680_defs.h</a>
</li>
<li>BME680_HUM_REG_SHIFT_VAL
: <a class="el" href="bme680__defs_8h.html#aa9320cbf90a9bb81b912da4bf036e73b">bme680_defs.h</a>
</li>
<li>BME680_I2C_ADDR_PRIMARY
: <a class="el" href="bme680__defs_8h.html#af27a16304a83f75bb23883d754610df3">bme680_defs.h</a>
</li>
<li>BME680_I2C_INTF
: <a class="el" href="bme680__defs_8h.html#a2232c03d0c1282e976af41b39e1b87d6a8c5c46109186b1f476eafcb0fa608cf5">bme680_defs.h</a>
</li>
<li>BME680_MEM_PAGE0
: <a class="el" href="bme680__defs_8h.html#a2af2d059c5cdc5925dc050a5d67f2d0b">bme680_defs.h</a>
</li>
<li>BME680_NBCONV_MIN
: <a class="el" href="bme680__defs_8h.html#a8b0bdbbedd050d35a8bc27e23c9c96c4">bme680_defs.h</a>
</li>
<li>BME680_OK
: <a class="el" href="bme680__defs_8h.html#a2e82e5c447a9dbbeebf95b1ba189effb">bme680_defs.h</a>
</li>
<li>BME680_OS_NONE
: <a class="el" href="bme680__defs_8h.html#a5ba113b3902da4c9baf45da5f32958d0">bme680_defs.h</a>
</li>
<li>BME680_OST_SEL
: <a class="el" href="bme680__defs_8h.html#a7ecfc9ebc2dc3fae358c38215821db6d">bme680_defs.h</a>
</li>
<li>BME680_POLL_PERIOD_MS
: <a class="el" href="bme680__defs_8h.html#a7545f57cf8b21f71292f4d2998049ab0">bme680_defs.h</a>
</li>
<li>BME680_REG_FILTER_INDEX
: <a class="el" href="bme680__defs_8h.html#abead566b839b70723d7dc5be6eb65c12">bme680_defs.h</a>
</li>
<li>BME680_RES_HEAT0_ADDR
: <a class="el" href="bme680__defs_8h.html#ad1429130a198bff35d0bb98bd1d4cbc1">bme680_defs.h</a>
</li>
<li>BME680_RESET_PERIOD
: <a class="el" href="bme680__defs_8h.html#a6409d476475762c095a746a1b785bdd6">bme680_defs.h</a>
</li>
<li>BME680_RUN_GAS_DISABLE
: <a class="el" href="bme680__defs_8h.html#a7cdfa822370f97878b251ec8ae437ad8">bme680_defs.h</a>
</li>
<li>BME680_SET_BITS
: <a class="el" href="bme680__defs_8h.html#aa2dfae23c0c4a846bde4fdf3780c390e">bme680_defs.h</a>
</li>
<li>BME680_SET_BITS_POS_0
: <a class="el" href="bme680__defs_8h.html#a5e3fed11d9e1cb98d8c05bc5f418d4e8">bme680_defs.h</a>
</li>
<li>BME680_SLEEP_MODE
: <a class="el" href="bme680__defs_8h.html#a9fc5e8034aa79028c0286ea4c974ee69">bme680_defs.h</a>
</li>
<li>BME680_SOFT_RESET_ADDR
: <a class="el" href="bme680__defs_8h.html#a69bae1e3eba277068c1055e3028bbf41">bme680_defs.h</a>
</li>
<li>BME680_SOFT_RESET_CMD
: <a class="el" href="bme680__defs_8h.html#a6da379a1060ef5079d34ba88191c3488">bme680_defs.h</a>
</li>
<li>BME680_SPI_INTF
: <a class="el" href="bme680__defs_8h.html#a2232c03d0c1282e976af41b39e1b87d6a504bd691a4b57b0c914cc8c77bd696c3">bme680_defs.h</a>
</li>
<li>BME680_T2_LSB_REG
: <a class="el" href="bme680__defs_8h.html#ab0bf47738f04f4e67488166d66096752">bme680_defs.h</a>
</li>
<li>BME680_TMP_BUFFER_LENGTH
: <a class="el" href="bme680__defs_8h.html#a9be3bfa321b5d7b421ae2b8900d49eff">bme680_defs.h</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
@@ -0,0 +1,172 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: File Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;
<h3><a id="index_b"></a>- b -</h3><ul>
<li>BME680_ADDR_RES_HEAT_VAL_ADDR
: <a class="el" href="bme680__defs_8h.html#af6a74cbd7c52c150a5d83766e86f3bf1">bme680_defs.h</a>
</li>
<li>BME680_CHIP_ID
: <a class="el" href="bme680__defs_8h.html#a762d33b22cceaa1f90dc2044ace463ee">bme680_defs.h</a>
</li>
<li>BME680_CHIP_ID_ADDR
: <a class="el" href="bme680__defs_8h.html#aa24d214515e9c3606dcefb874888c055">bme680_defs.h</a>
</li>
<li>BME680_COEFF_ADDR1
: <a class="el" href="bme680__defs_8h.html#a839d12e3afe0332b3383be0e258c472e">bme680_defs.h</a>
</li>
<li>BME680_COEFF_SIZE
: <a class="el" href="bme680__defs_8h.html#a4cf6e3574a83160f0adbfcf8cc5e3729">bme680_defs.h</a>
</li>
<li>BME680_CONCAT_BYTES
: <a class="el" href="bme680__defs_8h.html#a9aac51cc4b47a1f1c9f30c07026840ab">bme680_defs.h</a>
</li>
<li>BME680_CONF_HEAT_CTRL_ADDR
: <a class="el" href="bme680__defs_8h.html#a995aae4506cba06c735bb2ff37fbca49">bme680_defs.h</a>
</li>
<li>BME680_DISABLE_GAS_MEAS
: <a class="el" href="bme680__defs_8h.html#ad5a18c765061877212395397d58e2c20">bme680_defs.h</a>
</li>
<li>BME680_ENABLE_HEATER
: <a class="el" href="bme680__defs_8h.html#a9e973dfcc1a103110cc44077f3ed86c1">bme680_defs.h</a>
</li>
<li>BME680_FIELD0_ADDR
: <a class="el" href="bme680__defs_8h.html#aa1126d8a0cab009b3812d4dba28beec3">bme680_defs.h</a>
</li>
<li>BME680_FIELD_LENGTH
: <a class="el" href="bme680__defs_8h.html#a7cb775d981358b7e58eb8db0094bd1d7">bme680_defs.h</a>
</li>
<li>BME680_FILTER_SIZE_0
: <a class="el" href="bme680__defs_8h.html#a5edcb9fcb77440f52d2b2865a89b5475">bme680_defs.h</a>
</li>
<li>BME680_GAS_MEAS_MSK
: <a class="el" href="bme680__defs_8h.html#adff9a0ef09e48aa5fcecc9bcfb0bf6f2">bme680_defs.h</a>
</li>
<li>BME680_GAS_MEAS_POS
: <a class="el" href="bme680__defs_8h.html#aa72739940e9ab88370b0ae23ef687f15">bme680_defs.h</a>
</li>
<li>BME680_HUM_REG_SHIFT_VAL
: <a class="el" href="bme680__defs_8h.html#aa9320cbf90a9bb81b912da4bf036e73b">bme680_defs.h</a>
</li>
<li>BME680_I2C_ADDR_PRIMARY
: <a class="el" href="bme680__defs_8h.html#af27a16304a83f75bb23883d754610df3">bme680_defs.h</a>
</li>
<li>BME680_MEM_PAGE0
: <a class="el" href="bme680__defs_8h.html#a2af2d059c5cdc5925dc050a5d67f2d0b">bme680_defs.h</a>
</li>
<li>BME680_NBCONV_MIN
: <a class="el" href="bme680__defs_8h.html#a8b0bdbbedd050d35a8bc27e23c9c96c4">bme680_defs.h</a>
</li>
<li>BME680_OK
: <a class="el" href="bme680__defs_8h.html#a2e82e5c447a9dbbeebf95b1ba189effb">bme680_defs.h</a>
</li>
<li>BME680_OS_NONE
: <a class="el" href="bme680__defs_8h.html#a5ba113b3902da4c9baf45da5f32958d0">bme680_defs.h</a>
</li>
<li>BME680_OST_SEL
: <a class="el" href="bme680__defs_8h.html#a7ecfc9ebc2dc3fae358c38215821db6d">bme680_defs.h</a>
</li>
<li>BME680_POLL_PERIOD_MS
: <a class="el" href="bme680__defs_8h.html#a7545f57cf8b21f71292f4d2998049ab0">bme680_defs.h</a>
</li>
<li>BME680_REG_FILTER_INDEX
: <a class="el" href="bme680__defs_8h.html#abead566b839b70723d7dc5be6eb65c12">bme680_defs.h</a>
</li>
<li>BME680_RES_HEAT0_ADDR
: <a class="el" href="bme680__defs_8h.html#ad1429130a198bff35d0bb98bd1d4cbc1">bme680_defs.h</a>
</li>
<li>BME680_RESET_PERIOD
: <a class="el" href="bme680__defs_8h.html#a6409d476475762c095a746a1b785bdd6">bme680_defs.h</a>
</li>
<li>BME680_RUN_GAS_DISABLE
: <a class="el" href="bme680__defs_8h.html#a7cdfa822370f97878b251ec8ae437ad8">bme680_defs.h</a>
</li>
<li>BME680_SET_BITS
: <a class="el" href="bme680__defs_8h.html#aa2dfae23c0c4a846bde4fdf3780c390e">bme680_defs.h</a>
</li>
<li>BME680_SET_BITS_POS_0
: <a class="el" href="bme680__defs_8h.html#a5e3fed11d9e1cb98d8c05bc5f418d4e8">bme680_defs.h</a>
</li>
<li>BME680_SLEEP_MODE
: <a class="el" href="bme680__defs_8h.html#a9fc5e8034aa79028c0286ea4c974ee69">bme680_defs.h</a>
</li>
<li>BME680_SOFT_RESET_ADDR
: <a class="el" href="bme680__defs_8h.html#a69bae1e3eba277068c1055e3028bbf41">bme680_defs.h</a>
</li>
<li>BME680_SOFT_RESET_CMD
: <a class="el" href="bme680__defs_8h.html#a6da379a1060ef5079d34ba88191c3488">bme680_defs.h</a>
</li>
<li>BME680_T2_LSB_REG
: <a class="el" href="bme680__defs_8h.html#ab0bf47738f04f4e67488166d66096752">bme680_defs.h</a>
</li>
<li>BME680_TMP_BUFFER_LENGTH
: <a class="el" href="bme680__defs_8h.html#a9be3bfa321b5d7b421ae2b8900d49eff">bme680_defs.h</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
@@ -0,0 +1,74 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: File Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>bme680_intf
: <a class="el" href="bme680__defs_8h.html#a2232c03d0c1282e976af41b39e1b87d6">bme680_defs.h</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
@@ -0,0 +1,77 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: File Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>BME680_I2C_INTF
: <a class="el" href="bme680__defs_8h.html#a2232c03d0c1282e976af41b39e1b87d6a8c5c46109186b1f476eafcb0fa608cf5">bme680_defs.h</a>
</li>
<li>BME680_SPI_INTF
: <a class="el" href="bme680__defs_8h.html#a2232c03d0c1282e976af41b39e1b87d6a504bd691a4b57b0c914cc8c77bd696c3">bme680_defs.h</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
@@ -0,0 +1,115 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: File Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>bme680_get_profile_dur()
: <a class="el" href="group___b_m_e680.html#ga191c03ab8aa1f4bc440953fd2f6317c2">bme680.c</a>
, <a class="el" href="group___b_m_e680.html#ga191c03ab8aa1f4bc440953fd2f6317c2">bme680.h</a>
</li>
<li>bme680_get_regs()
: <a class="el" href="group___b_m_e680.html#gaf5548cbdbf327e2c77bdb0afb1dde9e4">bme680.h</a>
, <a class="el" href="group___b_m_e680.html#gaf5548cbdbf327e2c77bdb0afb1dde9e4">bme680.c</a>
</li>
<li>bme680_get_sensor_data()
: <a class="el" href="group___b_m_e680.html#ga1025301e420e1e21911044bebb62f940">bme680.c</a>
, <a class="el" href="group___b_m_e680.html#ga1025301e420e1e21911044bebb62f940">bme680.h</a>
</li>
<li>bme680_get_sensor_mode()
: <a class="el" href="group___b_m_e680.html#ga4e50492a1f4747868f7e9a826492f1e7">bme680.h</a>
, <a class="el" href="group___b_m_e680.html#ga4e50492a1f4747868f7e9a826492f1e7">bme680.c</a>
</li>
<li>bme680_get_sensor_settings()
: <a class="el" href="group___b_m_e680.html#ga7826b058b8eddcf05ccbb117fd9d41b7">bme680.c</a>
, <a class="el" href="group___b_m_e680.html#ga7826b058b8eddcf05ccbb117fd9d41b7">bme680.h</a>
</li>
<li>bme680_init()
: <a class="el" href="group___b_m_e680.html#gaee75ae524b7ca8f4a9b6dbb7f640c2e4">bme680.c</a>
, <a class="el" href="group___b_m_e680.html#gaee75ae524b7ca8f4a9b6dbb7f640c2e4">bme680.h</a>
</li>
<li>bme680_set_profile_dur()
: <a class="el" href="group___b_m_e680.html#ga192f772bc9cb619e5855e93d6ebd6128">bme680.c</a>
, <a class="el" href="group___b_m_e680.html#ga192f772bc9cb619e5855e93d6ebd6128">bme680.h</a>
</li>
<li>bme680_set_regs()
: <a class="el" href="group___b_m_e680.html#ga5d1bad74f7ac28e75aca9d7de66fd2b4">bme680.h</a>
, <a class="el" href="group___b_m_e680.html#ga5d1bad74f7ac28e75aca9d7de66fd2b4">bme680.c</a>
</li>
<li>bme680_set_sensor_mode()
: <a class="el" href="group___b_m_e680.html#ga5ca765226e758e71c862553c7cc0b371">bme680.c</a>
, <a class="el" href="group___b_m_e680.html#ga5ca765226e758e71c862553c7cc0b371">bme680.h</a>
</li>
<li>bme680_set_sensor_settings()
: <a class="el" href="group___b_m_e680.html#ga2fea1365b4fa1d33eef434769b16e811">bme680.c</a>
, <a class="el" href="group___b_m_e680.html#ga2fea1365b4fa1d33eef434769b16e811">bme680.h</a>
</li>
<li>bme680_soft_reset()
: <a class="el" href="group___b_m_e680.html#ga7f0f1a4378bc6cd0a34acf62509cdec7">bme680.h</a>
, <a class="el" href="group___b_m_e680.html#ga7f0f1a4378bc6cd0a34acf62509cdec7">bme680.c</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
@@ -0,0 +1,74 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: File Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>bme680_com_fptr_t
: <a class="el" href="bme680__defs_8h.html#aa7d183195e66f1db50f64f3a3d4ede57">bme680_defs.h</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
@@ -0,0 +1,77 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: File Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>lookupTable1
: <a class="el" href="bme680_8c.html#adededc333f13a6bae1487b7cadee4a5f">bme680.c</a>
</li>
<li>lookupTable2
: <a class="el" href="bme680_8c.html#aaf3a4ba4968870a9fb857fe7f47f9461">bme680.c</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
@@ -0,0 +1,73 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: SENSOR API</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">SENSOR API</div> </div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
+73
View File
@@ -0,0 +1,73 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: Main Page</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Adafruit BME680 Library Documentation</div> </div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
File diff suppressed because one or more lines are too long
@@ -0,0 +1,80 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: README</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">README </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>This is a library for the Adafruit BME680 Humidity, Barometric Pressure, Temp and MOX Gas sensor</p>
<p>Designed specifically to work with the Adafruit BME680 Breakout</p><ul>
<li><a href="http://www.adafruit.com/products/360">http://www.adafruit.com/products/360</a></li>
</ul>
<p>These sensors use I2C or SPI to communicate, up to 4 pins are required to interface</p>
<p>Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit!</p>
<p>Check out the links above for our tutorials and wiring diagrams </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
+26
View File
@@ -0,0 +1,26 @@
function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
function makeTree(data,relPath) {
var result='';
if ('children' in data) {
result+='<ul>';
for (var i in data.children) {
result+='<li><a href="'+relPath+data.children[i].url+'">'+
data.children[i].text+'</a>'+
makeTree(data.children[i],relPath)+'</li>';
}
result+='</ul>';
}
return result;
}
$('#main-nav').append(makeTree(menudata,relPath));
$('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
if (searchEnabled) {
if (serverSide) {
$('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><div class="left"><form id="FSearchBox" action="'+searchPage+'" method="get"><img id="MSearchSelect" src="'+relPath+'search/mag.png" alt=""/><input type="text" id="MSearchField" name="query" value="'+search+'" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)"></form></div><div class="right"></div></div></li>');
} else {
$('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><span class="left"><img id="MSearchSelect" src="'+relPath+'search/mag_sel.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/><input type="text" id="MSearchField" value="'+search+'" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/></span><span class="right"><a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="'+relPath+'search/close.png" alt=""/></a></span></div></li>');
}
}
$('#main-menu').smartmenus();
}
@@ -0,0 +1,12 @@
var menudata={children:[
{text:"Main Page",url:"index.html"},
{text:"Related Pages",url:"pages.html"},
{text:"Classes",url:"annotated.html",children:[
{text:"Class List",url:"annotated.html"},
{text:"Class Index",url:"classes.html"},
{text:"Class Members",url:"functions.html",children:[
{text:"All",url:"functions.html"},
{text:"Functions",url:"functions_func.html"},
{text:"Variables",url:"functions_vars.html"}]}]},
{text:"Files",url:"files.html",children:[
{text:"File List",url:"files.html"}]}]}
@@ -0,0 +1,78 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: Modules</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Modules</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all modules:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group___b_m_e680.html" target="_self">SENSOR API</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

+78
View File
@@ -0,0 +1,78 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Adafruit BME680 Library: Related Pages</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Adafruit BME680 Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Related Pages</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="md__r_e_a_d_m_e.html" target="_self">README</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,4 @@
var searchData=
[
['adafruit_5fbme680',['Adafruit_BME680',['../class_adafruit___b_m_e680.html',1,'Adafruit_BME680'],['../class_adafruit___b_m_e680.html#af147d564868b9eac61a2c7fcd8f614cd',1,'Adafruit_BME680::Adafruit_BME680(int8_t cspin=-1)'],['../class_adafruit___b_m_e680.html#a8e89aaed66497bb2dde7ab678aa81173',1,'Adafruit_BME680::Adafruit_BME680(int8_t cspin, int8_t mosipin, int8_t misopin, int8_t sckpin)']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_1.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,4 @@
var searchData=
[
['begin',['begin',['../class_adafruit___b_m_e680.html#ac6d9d5dc90424c2c3c3a3b311c1141dc',1,'Adafruit_BME680']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_10.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,4 @@
var searchData=
[
['write',['write',['../structbme680__dev.html#a5e1e5dad78b9831125c240dde61b13a2',1,'bme680_dev']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_2.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,4 @@
var searchData=
[
['gas_5fresistance',['gas_resistance',['../class_adafruit___b_m_e680.html#aef05921539684ec297168bdd0cee7c7c',1,'Adafruit_BME680']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_3.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,4 @@
var searchData=
[
['humidity',['humidity',['../class_adafruit___b_m_e680.html#a442787f3ad0f2ab9087535ba9c22102b',1,'Adafruit_BME680']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_4.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,5 @@
var searchData=
[
['performreading',['performReading',['../class_adafruit___b_m_e680.html#aa58210864cad77b272669eb86f1d2a88',1,'Adafruit_BME680']]],
['pressure',['pressure',['../class_adafruit___b_m_e680.html#a956b36e719ef0b37e59e6c3ecb8c5583',1,'Adafruit_BME680']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_5.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,9 @@
var searchData=
[
['readme',['README',['../md__r_e_a_d_m_e.html',1,'']]],
['readaltitude',['readAltitude',['../class_adafruit___b_m_e680.html#a3caae92aa981508f0084b11b1fed4883',1,'Adafruit_BME680']]],
['readgas',['readGas',['../class_adafruit___b_m_e680.html#ae0b55eb1049c5949ff186de86aaafb55',1,'Adafruit_BME680']]],
['readhumidity',['readHumidity',['../class_adafruit___b_m_e680.html#a1402c97860f9c61bf133be7e7056658b',1,'Adafruit_BME680']]],
['readpressure',['readPressure',['../class_adafruit___b_m_e680.html#afd081183a7845fee1d1c080cce20495e',1,'Adafruit_BME680']]],
['readtemperature',['readTemperature',['../class_adafruit___b_m_e680.html#a7b554e6edf5cea06cf480e53bcb65aec',1,'Adafruit_BME680']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_6.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,8 @@
var searchData=
[
['setgasheater',['setGasHeater',['../class_adafruit___b_m_e680.html#a2e6a61b5441c51bf5e44c3af3ee3fec8',1,'Adafruit_BME680']]],
['sethumidityoversampling',['setHumidityOversampling',['../class_adafruit___b_m_e680.html#af1f05d2f024e946c1d7cbe3fb90b0859',1,'Adafruit_BME680']]],
['setiirfiltersize',['setIIRFilterSize',['../class_adafruit___b_m_e680.html#a42f25a4f258aad9abad4abb6bd95ec77',1,'Adafruit_BME680']]],
['setpressureoversampling',['setPressureOversampling',['../class_adafruit___b_m_e680.html#a73a9467c838951a187a268172a2b5d8c',1,'Adafruit_BME680']]],
['settemperatureoversampling',['setTemperatureOversampling',['../class_adafruit___b_m_e680.html#a640ee0a0cb7ca57af30e8408260cc6e6',1,'Adafruit_BME680']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_7.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,4 @@
var searchData=
[
['temperature',['temperature',['../class_adafruit___b_m_e680.html#a074501406d2bf249551e3e489cb9316e',1,'Adafruit_BME680']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_8.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,5 @@
var searchData=
[
['meas_5findex',['meas_index',['../structbme680__field__data.html#add2cb9f6b7d736908aa9f75904122d3c',1,'bme680_field_data']]],
['mem_5fpage',['mem_page',['../structbme680__dev.html#a388e543d88b93a2a5c91e1f66ed0e998',1,'bme680_dev']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_9.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,5 @@
var searchData=
[
['nb_5fconv',['nb_conv',['../structbme680__gas__sett.html#ad0fd15bcd071158faaa40037171cd798',1,'bme680_gas_sett']]],
['new_5ffields',['new_fields',['../structbme680__dev.html#a488698f8c1c548bb19ac1f8ee67cbadd',1,'bme680_dev']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_a.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,6 @@
var searchData=
[
['os_5fhum',['os_hum',['../structbme680__tph__sett.html#a12b21e2faba6c4e235f14070e9a9bb3e',1,'bme680_tph_sett']]],
['os_5fpres',['os_pres',['../structbme680__tph__sett.html#ad754f858d10c2164e1d18756c9cf8db0',1,'bme680_tph_sett']]],
['os_5ftemp',['os_temp',['../structbme680__tph__sett.html#a80a4dec6bde73d2083d464cb79ae8df8',1,'bme680_tph_sett']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_b.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,28 @@
var searchData=
[
['par_5fgh1',['par_gh1',['../structbme680__calib__data.html#ab9c4601c2e89a776257bbd27f66c9e2c',1,'bme680_calib_data']]],
['par_5fgh2',['par_gh2',['../structbme680__calib__data.html#aeebd7cb98502f77c4cce34d6a9a1f6db',1,'bme680_calib_data']]],
['par_5fgh3',['par_gh3',['../structbme680__calib__data.html#aaae5921c2ddbee1935665f428266f373',1,'bme680_calib_data']]],
['par_5fh1',['par_h1',['../structbme680__calib__data.html#a14a76f440f0f9df731057cd511403a29',1,'bme680_calib_data']]],
['par_5fh2',['par_h2',['../structbme680__calib__data.html#a8c241a150118622dcab5a1daae8c5893',1,'bme680_calib_data']]],
['par_5fh3',['par_h3',['../structbme680__calib__data.html#a43a808580e91172a5b840210e8a85bf0',1,'bme680_calib_data']]],
['par_5fh4',['par_h4',['../structbme680__calib__data.html#a8d73c2a1a2b56bd9530f467f86f02c7a',1,'bme680_calib_data']]],
['par_5fh5',['par_h5',['../structbme680__calib__data.html#afa1dcf66631dcb16aa8c091a65e1d580',1,'bme680_calib_data']]],
['par_5fh6',['par_h6',['../structbme680__calib__data.html#ad97ebd01754136bd9af03c9e09c43005',1,'bme680_calib_data']]],
['par_5fh7',['par_h7',['../structbme680__calib__data.html#a59dd799e9a4b5faad9b3755aeb88ad30',1,'bme680_calib_data']]],
['par_5fp1',['par_p1',['../structbme680__calib__data.html#aac7cb7d36376532cd4a39aa5ddfe68c0',1,'bme680_calib_data']]],
['par_5fp10',['par_p10',['../structbme680__calib__data.html#a49b5fb944862a2937be8aafee042108c',1,'bme680_calib_data']]],
['par_5fp2',['par_p2',['../structbme680__calib__data.html#a97ee906971dca54be2deada4ede4664b',1,'bme680_calib_data']]],
['par_5fp3',['par_p3',['../structbme680__calib__data.html#a997a9f626fb184d400c178c84575c01a',1,'bme680_calib_data']]],
['par_5fp4',['par_p4',['../structbme680__calib__data.html#aa5757dfc40816cf3c8e29e2aeb4a521a',1,'bme680_calib_data']]],
['par_5fp5',['par_p5',['../structbme680__calib__data.html#adf1614f15852812b5a4346d75f9d37f4',1,'bme680_calib_data']]],
['par_5fp6',['par_p6',['../structbme680__calib__data.html#af70bee9d3b48b1ce25557b2639093ef3',1,'bme680_calib_data']]],
['par_5fp7',['par_p7',['../structbme680__calib__data.html#ad3af987b1e051ffb136efd2b8d2ba19e',1,'bme680_calib_data']]],
['par_5fp8',['par_p8',['../structbme680__calib__data.html#a4e75e3ba3a52bda30daffc6c0e242c03',1,'bme680_calib_data']]],
['par_5fp9',['par_p9',['../structbme680__calib__data.html#aebe0a4d1259e37c56b57e221add89bd9',1,'bme680_calib_data']]],
['par_5ft1',['par_t1',['../structbme680__calib__data.html#a0f01e767396f9328edb6e5ae9a314b2f',1,'bme680_calib_data']]],
['par_5ft2',['par_t2',['../structbme680__calib__data.html#a5ba9c77d416227faae07642a7537788f',1,'bme680_calib_data']]],
['par_5ft3',['par_t3',['../structbme680__calib__data.html#acda7c141bb94e5e6b3654387fc8bce47',1,'bme680_calib_data']]],
['power_5fmode',['power_mode',['../structbme680__dev.html#a7b2b2947aa6a6e336c90811373de1a6b',1,'bme680_dev']]],
['pressure',['pressure',['../structbme680__field__data.html#af92dbc060536ac0cd546a1f402fcecb4',1,'bme680_field_data']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_c.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,10 @@
var searchData=
[
['readme',['README',['../md__r_e_a_d_m_e.html',1,'']]],
['range_5fsw_5ferr',['range_sw_err',['../structbme680__calib__data.html#ab42378cffea08117ba872e9b7b2e3580',1,'bme680_calib_data']]],
['read',['read',['../structbme680__dev.html#aa36aaa5af7488e1a9dce5b8b834b1956',1,'bme680_dev']]],
['readaltitude',['readAltitude',['../class_adafruit___b_m_e680.html#a3caae92aa981508f0084b11b1fed4883',1,'Adafruit_BME680']]],
['res_5fheat_5frange',['res_heat_range',['../structbme680__calib__data.html#ae37d0c08a01ea1ecf19b82fe4b08f1a8',1,'bme680_calib_data']]],
['res_5fheat_5fval',['res_heat_val',['../structbme680__calib__data.html#aa77e96c4bd34ffd5611e014192b936fc',1,'bme680_calib_data']]],
['run_5fgas',['run_gas',['../structbme680__gas__sett.html#a01ce898d2f312f59dd4bda78d7abe951',1,'bme680_gas_sett']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_d.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,8 @@
var searchData=
[
['sensor_20api',['SENSOR API',['../group___b_m_e680.html',1,'']]],
['setgasheater',['setGasHeater',['../class_adafruit___b_m_e680.html#a2e6a61b5441c51bf5e44c3af3ee3fec8',1,'Adafruit_BME680']]],
['setiirfiltersize',['setIIRFilterSize',['../class_adafruit___b_m_e680.html#a42f25a4f258aad9abad4abb6bd95ec77',1,'Adafruit_BME680']]],
['settemperatureoversampling',['setTemperatureOversampling',['../class_adafruit___b_m_e680.html#a640ee0a0cb7ca57af30e8408260cc6e6',1,'Adafruit_BME680']]],
['status',['status',['../structbme680__field__data.html#af52b43f86807c1f1ef7526bbb9584c5b',1,'bme680_field_data']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_e.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,6 @@
var searchData=
[
['t_5ffine',['t_fine',['../structbme680__calib__data.html#aae7b1a022503644a5e31996a97c032ae',1,'bme680_calib_data']]],
['temperature',['temperature',['../structbme680__field__data.html#a8954536ec56e28e4bc79ed7bf1bc5176',1,'bme680_field_data']]],
['tph_5fsett',['tph_sett',['../structbme680__dev.html#a38a17360e0b57778b734393e80819294',1,'bme680_dev']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_f.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,4 @@
var searchData=
[
['write',['write',['../structbme680__dev.html#a5e1e5dad78b9831125c240dde61b13a2',1,'bme680_dev']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,4 @@
var searchData=
[
['adafruit_5fbme680',['Adafruit_BME680',['../class_adafruit___b_m_e680.html',1,'']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_1.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,8 @@
var searchData=
[
['bme680_5fcalib_5fdata',['bme680_calib_data',['../structbme680__calib__data.html',1,'']]],
['bme680_5fdev',['bme680_dev',['../structbme680__dev.html',1,'']]],
['bme680_5ffield_5fdata',['bme680_field_data',['../structbme680__field__data.html',1,'']]],
['bme680_5fgas_5fsett',['bme680_gas_sett',['../structbme680__gas__sett.html',1,'']]],
['bme680_5ftph_5fsett',['bme680_tph_sett',['../structbme680__tph__sett.html',1,'']]]
];
Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="defines_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,36 @@
var searchData=
[
['bme680_5faddr_5fres_5fheat_5fval_5faddr',['BME680_ADDR_RES_HEAT_VAL_ADDR',['../bme680__defs_8h.html#af6a74cbd7c52c150a5d83766e86f3bf1',1,'bme680_defs.h']]],
['bme680_5fchip_5fid',['BME680_CHIP_ID',['../bme680__defs_8h.html#a762d33b22cceaa1f90dc2044ace463ee',1,'bme680_defs.h']]],
['bme680_5fchip_5fid_5faddr',['BME680_CHIP_ID_ADDR',['../bme680__defs_8h.html#aa24d214515e9c3606dcefb874888c055',1,'bme680_defs.h']]],
['bme680_5fcoeff_5faddr1',['BME680_COEFF_ADDR1',['../bme680__defs_8h.html#a839d12e3afe0332b3383be0e258c472e',1,'bme680_defs.h']]],
['bme680_5fcoeff_5fsize',['BME680_COEFF_SIZE',['../bme680__defs_8h.html#a4cf6e3574a83160f0adbfcf8cc5e3729',1,'bme680_defs.h']]],
['bme680_5fconcat_5fbytes',['BME680_CONCAT_BYTES',['../bme680__defs_8h.html#a9aac51cc4b47a1f1c9f30c07026840ab',1,'bme680_defs.h']]],
['bme680_5fconf_5fheat_5fctrl_5faddr',['BME680_CONF_HEAT_CTRL_ADDR',['../bme680__defs_8h.html#a995aae4506cba06c735bb2ff37fbca49',1,'bme680_defs.h']]],
['bme680_5fdisable_5fgas_5fmeas',['BME680_DISABLE_GAS_MEAS',['../bme680__defs_8h.html#ad5a18c765061877212395397d58e2c20',1,'bme680_defs.h']]],
['bme680_5fenable_5fheater',['BME680_ENABLE_HEATER',['../bme680__defs_8h.html#a9e973dfcc1a103110cc44077f3ed86c1',1,'bme680_defs.h']]],
['bme680_5ffield0_5faddr',['BME680_FIELD0_ADDR',['../bme680__defs_8h.html#aa1126d8a0cab009b3812d4dba28beec3',1,'bme680_defs.h']]],
['bme680_5ffield_5flength',['BME680_FIELD_LENGTH',['../bme680__defs_8h.html#a7cb775d981358b7e58eb8db0094bd1d7',1,'bme680_defs.h']]],
['bme680_5ffilter_5fsize_5f0',['BME680_FILTER_SIZE_0',['../bme680__defs_8h.html#a5edcb9fcb77440f52d2b2865a89b5475',1,'bme680_defs.h']]],
['bme680_5fgas_5fmeas_5fmsk',['BME680_GAS_MEAS_MSK',['../bme680__defs_8h.html#adff9a0ef09e48aa5fcecc9bcfb0bf6f2',1,'bme680_defs.h']]],
['bme680_5fgas_5fmeas_5fpos',['BME680_GAS_MEAS_POS',['../bme680__defs_8h.html#aa72739940e9ab88370b0ae23ef687f15',1,'bme680_defs.h']]],
['bme680_5fhum_5freg_5fshift_5fval',['BME680_HUM_REG_SHIFT_VAL',['../bme680__defs_8h.html#aa9320cbf90a9bb81b912da4bf036e73b',1,'bme680_defs.h']]],
['bme680_5fi2c_5faddr_5fprimary',['BME680_I2C_ADDR_PRIMARY',['../bme680__defs_8h.html#af27a16304a83f75bb23883d754610df3',1,'bme680_defs.h']]],
['bme680_5fmem_5fpage0',['BME680_MEM_PAGE0',['../bme680__defs_8h.html#a2af2d059c5cdc5925dc050a5d67f2d0b',1,'bme680_defs.h']]],
['bme680_5fnbconv_5fmin',['BME680_NBCONV_MIN',['../bme680__defs_8h.html#a8b0bdbbedd050d35a8bc27e23c9c96c4',1,'bme680_defs.h']]],
['bme680_5fok',['BME680_OK',['../bme680__defs_8h.html#a2e82e5c447a9dbbeebf95b1ba189effb',1,'bme680_defs.h']]],
['bme680_5fos_5fnone',['BME680_OS_NONE',['../bme680__defs_8h.html#a5ba113b3902da4c9baf45da5f32958d0',1,'bme680_defs.h']]],
['bme680_5fost_5fsel',['BME680_OST_SEL',['../bme680__defs_8h.html#a7ecfc9ebc2dc3fae358c38215821db6d',1,'bme680_defs.h']]],
['bme680_5fpoll_5fperiod_5fms',['BME680_POLL_PERIOD_MS',['../bme680__defs_8h.html#a7545f57cf8b21f71292f4d2998049ab0',1,'bme680_defs.h']]],
['bme680_5freg_5ffilter_5findex',['BME680_REG_FILTER_INDEX',['../bme680__defs_8h.html#abead566b839b70723d7dc5be6eb65c12',1,'bme680_defs.h']]],
['bme680_5fres_5fheat0_5faddr',['BME680_RES_HEAT0_ADDR',['../bme680__defs_8h.html#ad1429130a198bff35d0bb98bd1d4cbc1',1,'bme680_defs.h']]],
['bme680_5freset_5fperiod',['BME680_RESET_PERIOD',['../bme680__defs_8h.html#a6409d476475762c095a746a1b785bdd6',1,'bme680_defs.h']]],
['bme680_5frun_5fgas_5fdisable',['BME680_RUN_GAS_DISABLE',['../bme680__defs_8h.html#a7cdfa822370f97878b251ec8ae437ad8',1,'bme680_defs.h']]],
['bme680_5fset_5fbits',['BME680_SET_BITS',['../bme680__defs_8h.html#aa2dfae23c0c4a846bde4fdf3780c390e',1,'bme680_defs.h']]],
['bme680_5fset_5fbits_5fpos_5f0',['BME680_SET_BITS_POS_0',['../bme680__defs_8h.html#a5e3fed11d9e1cb98d8c05bc5f418d4e8',1,'bme680_defs.h']]],
['bme680_5fsleep_5fmode',['BME680_SLEEP_MODE',['../bme680__defs_8h.html#a9fc5e8034aa79028c0286ea4c974ee69',1,'bme680_defs.h']]],
['bme680_5fsoft_5freset_5faddr',['BME680_SOFT_RESET_ADDR',['../bme680__defs_8h.html#a69bae1e3eba277068c1055e3028bbf41',1,'bme680_defs.h']]],
['bme680_5fsoft_5freset_5fcmd',['BME680_SOFT_RESET_CMD',['../bme680__defs_8h.html#a6da379a1060ef5079d34ba88191c3488',1,'bme680_defs.h']]],
['bme680_5ft2_5flsb_5freg',['BME680_T2_LSB_REG',['../bme680__defs_8h.html#ab0bf47738f04f4e67488166d66096752',1,'bme680_defs.h']]],
['bme680_5ftmp_5fbuffer_5flength',['BME680_TMP_BUFFER_LENGTH',['../bme680__defs_8h.html#a9be3bfa321b5d7b421ae2b8900d49eff',1,'bme680_defs.h']]]
];
@@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="enums_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>
@@ -0,0 +1,4 @@
var searchData=
[
['bme680_5fintf',['bme680_intf',['../bme680__defs_8h.html#a2232c03d0c1282e976af41b39e1b87d6',1,'bme680_defs.h']]]
];

Some files were not shown because too many files have changed in this diff Show More