diff --git a/examples/ccs811/README.md b/examples/ccs811/README.md index 1cb7e12..5ff5b5d 100644 --- a/examples/ccs811/README.md +++ b/examples/ccs811/README.md @@ -9,8 +9,8 @@ Most examples use only one CCS811 sensor. Following figure shows the hardware co ``` +------------------------+ +--------+ | ESP8266 Bus 0 | | CCS811 | - | GPIO 5 (SCL) >----> SCL | - | GPIO 4 (SDA) ------ SDA | + | GPIO 5 (SCL) -----> SCL | + | GPIO 4 (SDA) <----> SDA | | GND -----> /WAKE | +------------------------+ +--------+ ``` @@ -20,8 +20,8 @@ If *nINT* interrupt is used to fetch new data, additionally the interrupt pin ha ``` +------------------------+ +--------+ | ESP8266 Bus 0 | | CCS811 | - | GPIO 5 (SCL) >----> SCL | - | GPIO 4 (SDA) ------ SDA | + | GPIO 5 (SCL) -----> SCL | + | GPIO 4 (SDA) <----> SDA | | GPIO 2 <----- /nINT | | GND -----> /WAKE | +------------------------+ +--------+ @@ -32,13 +32,13 @@ In examples where CCS811 sensor is used in conjunction with a SHT3x sensor, the ``` +------------------------+ +--------+ | ESP8266 Bus 0 | | CCS811 | - | GPIO 5 (SCL) >--+----> SCL | - | GPIO 4 (SDA) ---|-+--- SDA | + | GPIO 5 (SCL) ---+----> SCL | + | GPIO 4 (SDA) <--|-+--> SDA | | GND ---|-|--> /WAKE | | | | | +--------+ | | | | | SHT3x | | | +----> SCL | - | | +--- SDA | + | | +--> SDA | +------------------------+ +--------+ ``` diff --git a/examples/ccs811/ccs811_one_sensor/ccs811_one_sensor.c b/examples/ccs811/ccs811_one_sensor/ccs811_one_sensor.c index 0123dde..a53b8a6 100644 --- a/examples/ccs811/ccs811_one_sensor/ccs811_one_sensor.c +++ b/examples/ccs811/ccs811_one_sensor/ccs811_one_sensor.c @@ -6,40 +6,57 @@ * * Harware configuration: * - * +------------------------+ +--------+ - * | ESP8266 Bus 0 | | CCS811 | - * | GPIO 5 (SCL) >----> SCL | - * | GPIO 4 (SDA) ------ SDA | - * | GPIO 2 <----- /nINT | - * | GND -----> /WAKE | - * +------------------------+ +--------+ + * +-----------------+ +----------+ + * | ESP8266 / ESP32 | | CCS811 | + * | | | | + * | GPIO 14 (SCL) ----> SCL | + * | GPIO 13 (SDA) <---> SDA | + * | GPIO 5 <---- INT1 | + * | GND ----> /WAKE | + * +-----------------+ +----------+ */ -// use following constants to define the demo mode +/* -- use following constants to define the example mode ----------- */ + // #define INT_DATA_RDY_USED // #define INT_THRESHOLD_USED -#include "espressif/esp_common.h" -#include "esp/uart.h" -#include "i2c/i2c.h" +#if defined(INT_DATA_RDY_USED) || defined(INT_THRESHOLD_USED) +#define INT_USED +#endif -#include "FreeRTOS.h" -#include +/* -- includes ----------------------------------------------------- */ -// include CCS811 driver -#include "ccs811/ccs811.h" +#include "ccs811.h" -// define I2C interfaces at which CCS811 sensors can be connected +/* -- platform dependent definitions ------------------------------- */ + +#ifdef ESP_PLATFORM // ESP32 (ESP-IDF) + +// user task stack depth for ESP32 +#define TASK_STACK_DEPTH 2048 + +#else // ESP8266 (esp-open-rtos) + +// user task stack depth for ESP8266 +#define TASK_STACK_DEPTH 256 + +#endif // ESP_PLATFORM + +// I2C interface defintions for ESP32 and ESP8266 #define I2C_BUS 0 -#define I2C_SCL_PIN 5 -#define I2C_SDA_PIN 4 +#define I2C_SCL_PIN 14 +#define I2C_SDA_PIN 13 +#define I2C_FREQ I2C_FREQ_100K -// define GPIO for interrupt -#define INT_GPIO 2 +// interrupt GPIOs defintions for ESP8266 and ESP32 +#define nINT_PIN 13 + +/* -- user tasks --------------------------------------------------- */ static ccs811_sensor_t* sensor; -#if defined(INT_DATA_RDY_USED) || defined(INT_THRESHOLD_USED) +#ifdef INT_USED /** * In this example, the interrupt *nINT* is used. It is triggered every time * new data are available (INT_DATA_RDY_USED) or exceed defined thresholds @@ -73,12 +90,12 @@ void user_task_interrupt (void *pvParameters) // Interrupt handler which resumes user_task_interrupt on interrupt -void nINT_handler (uint8_t gpio) +static void IRAM nINT_handler(uint8_t gpio) { xTaskResumeFromISR (nINT_task); } -#else +#else // !INT_USED /* * In this example, user task fetches the sensor values every seconds. @@ -106,20 +123,21 @@ void user_task_periodic(void *pvParameters) } } -#endif +#endif // INT_USED +/* -- main program ------------------------------------------------- */ void user_init(void) { - // set UART Parameter + // Set UART Parameter. uart_set_baud(0, 115200); - // give the UART some time to settle - sdk_os_delay_us(500); + // Give the UART some time to settle + vTaskDelay(1); /** -- MANDATORY PART -- */ // init all I2C bus interfaces at which CCS811 sensors are connected - i2c_init (I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); + i2c_init (I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ); // longer clock stretching is required for CCS811 i2c_set_clock_stretch (I2C_BUS, CCS811_I2C_CLOCK_STRETCH); @@ -129,28 +147,29 @@ void user_init(void) if (sensor) { - #if defined(INT_DATA_RDY_USED) || defined(INT_THRESHOLD_USED) + #if !defined (INT_USED) + + // create a periodic task that uses the sensor + xTaskCreate(user_task_periodic, "user_task_periodic", TASK_STACK_DEPTH, NULL, 2, NULL); + + #else // INT_USED // create a task that is resumed by interrupt handler to use the sensor - xTaskCreate(user_task_interrupt, "user_task_interrupt", 256, NULL, 2, &nINT_task); + xTaskCreate(user_task_interrupt, "user_task_interrupt", TASK_STACK_DEPTH, NULL, 2, &nINT_task); - // activate the interrupt for INT_GPIO and set the interrupt handler - gpio_set_interrupt(INT_GPIO, GPIO_INTTYPE_EDGE_NEG, nINT_handler); + // activate the interrupt for nINT_PIN and set the interrupt handler + gpio_enable(nINT_PIN, GPIO_INPUT); + gpio_set_interrupt(nINT_PIN, GPIO_INTTYPE_EDGE_NEG, nINT_handler); #ifdef INT_DATA_RDY_USED // enable the data ready interrupt ccs811_enable_interrupt (sensor, true); - #else + #else // INT_THRESHOLD_USED // set threshold parameters and enable threshold interrupt mode ccs811_set_eco2_thresholds (sensor, 600, 1100, 40); #endif - #else - - // create a periodic task that uses the sensor - xTaskCreate(user_task_periodic, "user_task_periodic", 256, NULL, 2, NULL); - - #endif + #endif // !defined(INT_USED) // start periodic measurement with one measurement per second ccs811_set_mode (sensor, ccs811_mode_1s); diff --git a/examples/ccs811/ccs811_plus_sht3x/ccs811_plus_sht3x.c b/examples/ccs811/ccs811_plus_sht3x/ccs811_plus_sht3x.c index 90976bd..5e32f38 100644 --- a/examples/ccs811/ccs811_plus_sht3x/ccs811_plus_sht3x.c +++ b/examples/ccs811/ccs811_plus_sht3x/ccs811_plus_sht3x.c @@ -6,13 +6,13 @@ * * +------------------------+ +--------+ * | ESP8266 Bus 0 | | CCS811 | - * | GPIO 5 (SCL) >--+----> SCL | - * | GPIO 4 (SDA) ---|-+--- SDA | + * | GPIO 14 (SCL) ---+----> SCL | + * | GPIO 13 (SDA) <--|-+--> SDA | * | GND ---|-|--> /WAKE | * | | | | +--------+ * | | | | | SHT3x | * | | +----> SCL | - * | | +--- SDA | + * | | +--> SDA | * +------------------------+ +--------+ */ @@ -31,8 +31,8 @@ // define I2C interfaces at which CCS811 and SHT3x sensors are connected #define I2C_BUS 0 -#define I2C_SCL_PIN 5 -#define I2C_SDA_PIN 4 +#define I2C_SCL_PIN 14 +#define I2C_SDA_PIN 13 static ccs811_sensor_t* ccs811; // CCS811 device data structure static sht3x_sensor_t* sht3x; // SHT3x device data structure diff --git a/examples/ccs811/ccs811_temperature/ccs811_temperature.c b/examples/ccs811/ccs811_temperature/ccs811_temperature.c index 56cfaad..6a81c7f 100644 --- a/examples/ccs811/ccs811_temperature/ccs811_temperature.c +++ b/examples/ccs811/ccs811_temperature/ccs811_temperature.c @@ -7,8 +7,8 @@ * * +------------------------+ +--------+ * | ESP8266 Bus 0 | | CCS811 | - * | GPIO 5 (SCL) >----> SCL | - * | GPIO 4 (SDA) ------ SDA | + * | GPIO 14 (SCL) >----> SCL | + * | GPIO 13 (SDA) <----> SDA | * | GND -----> /WAKE | * +------------------------+ +--------+ */ @@ -27,8 +27,8 @@ // define I2C interfaces at which CCS811 sensors can be connected #define I2C_BUS 0 -#define I2C_SCL_PIN 5 -#define I2C_SDA_PIN 4 +#define I2C_SCL_PIN 14 +#define I2C_SDA_PIN 13 static ccs811_sensor_t* sensor; diff --git a/extras/ccs811/README.md b/extras/ccs811/README.md index d1795f1..fa660ae 100644 --- a/extras/ccs811/README.md +++ b/extras/ccs811/README.md @@ -1,6 +1,8 @@ # Driver for the ams CCS811 digital gas sensor for monitoring indoor air quality. -This driver is written for usage with the ESP8266 and FreeRTOS using the I2C interface driver. +The driver is for the usage with the ESP8266 and [esp-open-rtos](https://github.com/SuperHouse/esp-open-rtos). + +It is also working with ESP32 and [ESP-IDF](https://github.com/espressif/esp-idf.git) using a wrapper component for ESP8266 functions, see folder ```components/esp8266_wrapper```, as well as Linux based systems using a wrapper library. ## About the sensor @@ -32,7 +34,7 @@ After power up, the sensor starts automatically in *Idle, Low Current Mode* (``` **Please note:** In *Constant Power Mode* with measurements every 250 ms (```mode_250ms```) only raw data are available. In all other measurement modes, the Indoor Air Quality (IAQ) values are available additionally. The *Constant Power Mode* with measurements every 250 ms (```mode_250ms```) is only intended for systems where an external host system wants to run an algorithm with raw data. -Once the is initialized with function ```ccs811_init_sensor```, function ```ccs811_set_mode``` can be used to start periodic measurements with a given period. +Once the sensor is initialized with function ```ccs811_init_sensor```, function ```ccs811_set_mode``` can be used to start periodic measurements with a given period. ``` static ccs811_sensor_t* sensor; @@ -211,42 +213,46 @@ First, the hardware configuration has to be established. ### Hardware configurations -Following figure shows the hardware configuration if no interrupt is used. +Following figure shows the hardware configuration for ESP8266 and ESP32 if no interrupt is used. ``` - +------------------------+ +--------+ - | ESP8266 Bus 0 | | CCS811 | - | GPIO 5 (SCL) >----> SCL | - | GPIO 4 (SDA) ------ SDA | - | GND -----> /WAKE | - +------------------------+ +--------+ + +------------------+ +--------+ + | ESP8266 / ESP32 | | CCS811 | + | | | | + | GPIO 14 (SCL) >-------> SCL | + | GPIO 13 (SDA) <-------> SDA | + | GND --------> /WAKE | + +------------------+ +--------+ ``` If interrupt signal *nINT* is used to fetch new data, additionally the interrupt pin has to be connected to a GPIO pin. ``` - +------------------------+ +--------+ - | ESP8266 Bus 0 | | CCS811 | - | GPIO 5 (SCL) >----> SCL | - | GPIO 4 (SDA) ------ SDA | - | GPIO 2 <----- /nINT | - | GND -----> /WAKE | - +------------------------+ +--------+ + +------------------+ +--------+ + | ESP8266 / ESP32 | | CCS811 | + | | | | + | GPIO 14 (SCL) >-------> SCL | + | GPIO 13 (SDA) <-------> SDA | + | GPIO 5 <-------- /nINT | + | GND --------> /WAKE | + +------------------+ +--------+ ``` If CCS811 sensor is used in conjunction with another sensor, e.g., a SHT3x sensor, the hardware configuration looks like following: ``` - +------------------------+ +--------+ - | ESP8266 Bus 0 | | CCS811 | - | GPIO 5 (SCL) >--+----> SCL | - | GPIO 4 (SDA) ---|-+--- SDA | - | GND ---|-|--> /WAKE | - | | | | +--------+ - | | | | | SHT3x | - | | +----> SCL | - | | +--- SDA | - +------------------------+ +--------+ + +------------------+ +--------+ + | ESP8266 / ESP32 | | CCS811 | + | | | | + | GPIO 14 (SCL) >--+----> SCL | + | GPIO 13 (SDA) <--|-+--> SDA | + | GND ---|-|--> /WAKE | + | | | | +--------+ + | | | | | SHT3x | + | | | | | | + | | +----> SCL | + | | +--> SDA | + +------------------+ +--------+ ``` ### Communication interface settings @@ -256,12 +262,11 @@ Dependent on the hardware configuration, the communication interface settings ha ``` // define I2C interfaces at which CCS811 sensors can be connected #define I2C_BUS 0 -#define I2C_SCL_PIN 5 -#define I2C_SDA_PIN 4 +#define I2C_SCL_PIN 14 +#define I2C_SDA_PIN 13 // define GPIO for interrupt -#define INT_GPIO 2 -#include "sht3x/sht3x.h" +#define INT_GPIO 5 ``` ### Main program @@ -272,7 +277,7 @@ Before using the CCS811 driver, function ```i2c_init``` needs to be called for e ``` ... -i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K)); +i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); i2c_set_clock_stretch (I2C_BUS, CCS811_I2C_CLOCK_STRETCH); ... ``` @@ -401,31 +406,47 @@ ccs811_set_eco2_thresholds (sensor, 600, 1100, 40); ## Full Example ``` -// use following constants to define the demo mode +/* -- use following constants to define the example mode ----------- */ + // #define INT_DATA_RDY_USED // #define INT_THRESHOLD_USED -#include "espressif/esp_common.h" -#include "esp/uart.h" -#include "i2c/i2c.h" +#if defined(INT_DATA_RDY_USED) || defined(INT_THRESHOLD_USED) +#define INT_USED +#endif -#include "FreeRTOS.h" -#include +/* -- includes ----------------------------------------------------- */ -// include CCS811 driver -#include "ccs811/ccs811.h" +#include "ccs811.h" -// define I2C interfaces at which CCS811 sensors can be connected +/* -- platform dependent definitions ------------------------------- */ + +#ifdef ESP_PLATFORM // ESP32 (ESP-IDF) + +// user task stack depth for ESP32 +#define TASK_STACK_DEPTH 2048 + +#else // ESP8266 (esp-open-rtos) + +// user task stack depth for ESP8266 +#define TASK_STACK_DEPTH 256 + +#endif // ESP_PLATFORM + +// I2C interface defintions for ESP32 and ESP8266 #define I2C_BUS 0 -#define I2C_SCL_PIN 5 -#define I2C_SDA_PIN 4 +#define I2C_SCL_PIN 14 +#define I2C_SDA_PIN 13 +#define I2C_FREQ I2C_FREQ_100K -// define GPIO for interrupt -#define INT_GPIO 2 +// interrupt GPIOs defintions for ESP8266 and ESP32 +#define nINT_PIN 13 + +/* -- user tasks --------------------------------------------------- */ static ccs811_sensor_t* sensor; -#if defined(INT_DATA_RDY_USED) || defined(INT_THRESHOLD_USED) +#ifdef INT_USED /** * In this example, the interrupt *nINT* is used. It is triggered every time * new data are available (INT_DATA_RDY_USED) or exceed defined thresholds @@ -459,12 +480,12 @@ void user_task_interrupt (void *pvParameters) // Interrupt handler which resumes user_task_interrupt on interrupt -void nINT_handler (uint8_t gpio) +static void IRAM nINT_handler(uint8_t gpio) { xTaskResumeFromISR (nINT_task); } -#else +#else // !INT_USED /* * In this example, user task fetches the sensor values every seconds. @@ -492,21 +513,22 @@ void user_task_periodic(void *pvParameters) } } -#endif +#endif // INT_USED +/* -- main program ------------------------------------------------- */ void user_init(void) { - // set UART Parameter + // Set UART Parameter. uart_set_baud(0, 115200); - // give the UART some time to settle - sdk_os_delay_us(500); + // Give the UART some time to settle + vTaskDelay(1); /** -- MANDATORY PART -- */ // init all I2C bus interfaces at which CCS811 sensors are connected - i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); - + i2c_init (I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ); + // longer clock stretching is required for CCS811 i2c_set_clock_stretch (I2C_BUS, CCS811_I2C_CLOCK_STRETCH); @@ -515,33 +537,35 @@ void user_init(void) if (sensor) { - #if defined(INT_DATA_RDY_USED) || defined(INT_THRESHOLD_USED) + #if !defined (INT_USED) + + // create a periodic task that uses the sensor + xTaskCreate(user_task_periodic, "user_task_periodic", TASK_STACK_DEPTH, NULL, 2, NULL); + + #else // INT_USED // create a task that is resumed by interrupt handler to use the sensor - xTaskCreate(user_task_interrupt, "user_task_interrupt", 256, NULL, 2, &nINT_task); + xTaskCreate(user_task_interrupt, "user_task_interrupt", TASK_STACK_DEPTH, NULL, 2, &nINT_task); - // activate the interrupt for INT_GPIO and set the interrupt handler - gpio_set_interrupt(INT_GPIO, GPIO_INTTYPE_EDGE_NEG, nINT_handler); + // activate the interrupt for nINT_PIN and set the interrupt handler + gpio_enable(nINT_PIN, GPIO_INPUT); + gpio_set_interrupt(nINT_PIN, GPIO_INTTYPE_EDGE_NEG, nINT_handler); #ifdef INT_DATA_RDY_USED // enable the data ready interrupt ccs811_enable_interrupt (sensor, true); - #else + #else // INT_THRESHOLD_USED // set threshold parameters and enable threshold interrupt mode ccs811_set_eco2_thresholds (sensor, 600, 1100, 40); #endif - #else - - // create a periodic task that uses the sensor - xTaskCreate(user_task_periodic, "user_task_periodic", 256, NULL, 2, NULL); - - #endif + #endif // !defined(INT_USED) // start periodic measurement with one measurement per second ccs811_set_mode (sensor, ccs811_mode_1s); } } + ``` ## Further Examples diff --git a/extras/ccs811/ccs811.c b/extras/ccs811/ccs811.c index b1de154..2087b2a 100644 --- a/extras/ccs811/ccs811.c +++ b/extras/ccs811/ccs811.c @@ -1,14 +1,16 @@ /* - * Driver for ams CCS811 digital temperature, humity, pressure and - * gas sensor connected to I2C or SPI + * Driver for AMS CCS811 digital gas sensor connected to I2C. * - * Part of esp-open-rtos [https://github.com/SuperHouse/esp-open-rtos] + * This driver is for the usage with the ESP8266 and FreeRTOS (esp-open-rtos) + * [https://github.com/SuperHouse/esp-open-rtos]. It is also working with ESP32 + * and ESP-IDF [https://github.com/espressif/esp-idf.git] as well as Linux + * based systems using a wrapper library for ESP8266 functions. * * --------------------------------------------------------------------------- * * The BSD License (3-clause license) * - * Copyright (c) 2017 Gunar Schorcht (https://github.com/gschorcht] + * Copyright (c) 2017 Gunar Schorcht (https://github.com/gschorcht) * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -39,14 +41,7 @@ */ #include - -#include "espressif/esp_common.h" -#include "espressif/sdk_private.h" - -#include "FreeRTOS.h" -#include "task.h" - -#include "i2c/i2c.h" +#include #include "ccs811.h" @@ -239,7 +234,7 @@ bool ccs811_set_mode (ccs811_sensor_t* dev, ccs811_mode_t mode) // check whether setting measurement mode were succesfull if (!ccs811_reg_read(dev, CCS811_REG_MEAS_MODE, (uint8_t*)®, 1) || - !reg.drive_mode == mode) + reg.drive_mode != mode) { error_dev ("Could not set measurement mode to %d", __FUNCTION__, dev, mode); return ccs811_check_error_status (dev); diff --git a/extras/ccs811/ccs811.h b/extras/ccs811/ccs811.h index d4f08e9..d7d3aa5 100644 --- a/extras/ccs811/ccs811.h +++ b/extras/ccs811/ccs811.h @@ -1,13 +1,16 @@ /* - * Driver for AMS CCS811 digital gas sensor connected to I2C + * Driver for AMS CCS811 digital gas sensor connected to I2C. * - * Part of esp-open-rtos [https://github.com/SuperHouse/esp-open-rtos] + * This driver is for the usage with the ESP8266 and FreeRTOS (esp-open-rtos) + * [https://github.com/SuperHouse/esp-open-rtos]. It is also working with ESP32 + * and ESP-IDF [https://github.com/espressif/esp-idf.git] as well as Linux + * based systems using a wrapper library for ESP8266 functions. * * --------------------------------------------------------------------------- * * The BSD License (3-clause license) * - * Copyright (c) 2017 Gunar Schorcht (https://github.com/gschorcht] + * Copyright (c) 2017 Gunar Schorcht (https://github.com/gschorcht) * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -40,13 +43,15 @@ #ifndef CCS811_DRV_H_ #define CCS811_DRV_H_ -#include "stdint.h" -#include "stdbool.h" - // Uncomment one of the following defines to enable debug output // #define CCS811_DEBUG_LEVEL_1 // only error messages // #define CCS811_DEBUG_LEVEL_2 // debug and error messages +#include "stdint.h" +#include "stdbool.h" + +#include "ccs811_platform.h" + // CCS811 I2C addresses #define CCS811_I2C_ADDRESS_1 0x5A // default #define CCS811_I2C_ADDRESS_2 0x5B diff --git a/extras/ccs811/ccs811_platform.h b/extras/ccs811/ccs811_platform.h new file mode 100644 index 0000000..c8a23ab --- /dev/null +++ b/extras/ccs811/ccs811_platform.h @@ -0,0 +1,69 @@ +/* + * Driver for AMS CCS811 digital gas sensor connected to I2C. + * + * This driver is for the usage with the ESP8266 and FreeRTOS (esp-open-rtos) + * [https://github.com/SuperHouse/esp-open-rtos]. It is also working with ESP32 + * and ESP-IDF [https://github.com/espressif/esp-idf.git] as well as Linux + * based systems using a wrapper library for ESP8266 functions. + * + * --------------------------------------------------------------------------- + * + * The BSD License (3-clause license) + * + * Copyright (c) 2017 Gunar Schorcht (https://github.com/gschorcht) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. Neither the name of the copyright holder nor the names of its + * 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 THE 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. + */ + +/** + * Platform file: platform specific definitions, includes and functions + */ + +#ifndef __CCS811_PLATFORM_H__ +#define __CCS811_PLATFORM_H__ + +#if !defined(ESP_OPEN_RTOS) +#define ESP_OPEN_RTOS 1 +#endif + +#ifdef ESP_OPEN_RTOS // ESP8266 + +// platform specific includes + +#include "FreeRTOS.h" +#include "task.h" + +#include "espressif/esp_common.h" +#include "espressif/sdk_private.h" + +#include "esp/uart.h" +#include "i2c/i2c.h" + +#endif // ESP_OPEN_RTOS + +#endif // __CCS811_PLATFORM_H__ diff --git a/extras/ccs811/component.mk b/extras/ccs811/component.mk index b69ad0b..037b122 100644 --- a/extras/ccs811/component.mk +++ b/extras/ccs811/component.mk @@ -2,6 +2,7 @@ # expected anyone using ccs811 driver includes it as 'ccs811/ccs811.h' INC_DIRS += $(ccs811_ROOT).. +INC_DIRS += $(ccs811_ROOT) # args for passing into compile rule generation ccs811_SRC_DIR = $(ccs811_ROOT)