/* * Copyright (c) 2016, Zolertia * 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 Institute 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 INSTITUTE 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 INSTITUTE 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. * * This file is part of the Contiki operating system. * */ /* -------------------------------------------------------------------------- */ /** * \addtogroup zoul-sensors * @{ * \defgroup zoul-iaq-sensor IAQ driver (Indoor Air Quality) Sensor Module * IAQ driver RE-Mote Indoor Air Quality Sensor Module * Driver for the RE-Mote Sensor pack: Air Quality Sensor Module (IAQ) * @{ * \file * Header file for the RE-Mote Sensor IAQ */ /* -------------------------------------------------------------------------- */ #ifndef IAQ_H_ #define IAQ_H_ /* -------------------------------------------------------------------------- */ #include #include "lib/sensors.h" #include "dev/zoul-sensors.h" #include "iaq.h" #include "i2c.h" #include "sys/timer.h" #include "sys/rtimer.h" /* -------------------------------------------------------------------------- */ /** \name IAQ address and definition * @{ */ /* Address of the sensor: 1011010(1) Addr (R/W bit) */ #define IAQ_ADDR 0x5A #define IAQ_SENSOR "iAQ" /** @} */ /* -------------------------------------------------------------------------- */ /** \name IAQ sensor types in iAQ-Core module * @{ */ extern const struct sensors_sensor iaq; /** @} */ /* -------------------------------------------------------------------------- */ /** \name IAQ error values and definitions * @{ */ #define IAQ_ACTIVE SENSORS_ACTIVE #define IAQ_INIT_STATE SENSORS_HW_INIT #define IAQ_ERROR (-1) #define IAQ_SUCCESS 0x00 #define IAQ_FRAME_SIZE 0x09 /* Variables used by external driver to get the state */ #define IAQ_INTERNAL_SUCCESS 0x00 #define IAQ_INTERNAL_RUNIN 0x10 #define IAQ_INTERNAL_BUSY 0x01 #define IAQ_INTERNAL_ERROR 0x80 /* Value types for the sensor readings */ #define IAQ_CO2_VALUE 0x00 #define IAQ_VOC_VALUE 0x01 #define IAQ_STATUS 0x02 #define IAQ_DRIVER_STATUS 0x03 /* Definition that corresponds with the two models of iAQ Sensor */ #ifdef IAQ_PULSE_MODE #define IAQ_POLLING_TIME (CLOCK_SECOND * 11) #else #define IAQ_POLLING_TIME (CLOCK_SECOND) #endif /** @} */ /* -------------------------------------------------------------------------- */ /** \name IAQ enumeration and options * @{ */ enum { IAQ_INIT = 0, IAQ_STARTED, }; /** @} */ /* -------------------------------------------------------------------------- */ /** \name Readable IAQ-Core interface result conversion implementation as * datasheet specification. * * @{ */ typedef struct iaq_struct_simple_td_reg { uint16_t co2; uint8_t status; int32_t resistance; uint16_t tvoc; } __attribute__ ((packed)) simple_iaq_data; /** @} */ /* -------------------------------------------------------------------------- */ #endif /* -------------------------------------------------------------------------- */ /** * @} * @} */