Contiki-NG
tmp-007-sensor.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018, Texas Instruments Incorporated - http://www.ti.com/
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * 3. Neither the name of the copyright holder nor the names of its
14  * contributors may be used to endorse or promote products derived
15  * from this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
20  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
21  * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
22  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28  * OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 /**
31  * \addtogroup sensortag-peripherals
32  * @{
33  *
34  * \defgroup sensortag-tmp-sensor SensorTag IR Thermophile sensor
35  *
36  * Due to the time required for the sensor to startup, this driver is
37  * meant to be used in an asynchronous fashion. The caller must first
38  * activate the sensor by calling SENSORS_ACTIVATE(). This will trigger
39  * the sensor's startup sequence, but the call will not wait for it to
40  * complete so that the CPU can perform other tasks or drop to a low
41  * power mode.
42  *
43  * Once the sensor is stable, the driver will generate a
44  * sensors_changed event.
45  *
46  * The caller should then use value(TMP_007_SENSOR_TYPE_ALL) to
47  * read sensor values and latch them. Once completed successfully,
48  * individual readings can be retrieved with calls to
49  * value(TMP_007_SENSOR_TYPE_OBJECT) or
50  * value(TMP_007_SENSOR_TYPE_AMBIENT).
51  *
52  * Once required readings have been taken, the caller has two options:
53  * - Turn the sensor off by calling SENSORS_DEACTIVATE, but in order
54  * to take subsequent readings SENSORS_ACTIVATE must be called again.
55  * - Leave the sensor on. In this scenario, the caller can simply keep
56  * calling value(TMP_007_SENSOR_TYPE_ALL) to read and latch new
57  * values. However keeping the sensor on will consume more energy.
58  * @{
59  *
60  * \file
61  * Header file for the Sensortag TMP-007 IR Thermophile sensor.
62  * \author
63  * Edvard Pettersen <e.pettersen@ti.com>
64  */
65 /*---------------------------------------------------------------------------*/
66 #ifndef TMP_007_SENSOR_H_
67 #define TMP_007_SENSOR_H_
68 /*---------------------------------------------------------------------------*/
69 #include "contiki.h"
70 /*---------------------------------------------------------------------------*/
71 #include "board-conf.h"
72 /*---------------------------------------------------------------------------*/
73 #if BOARD_SENSORS_ENABLE
74 #if (TI_I2C_CONF_ENABLE == 0) || (TI_I2C_CONF_I2C0_ENABLE == 0)
75 #error "The BMP280 requires the I2C driver to be enabled (TI_I2C_CONF_ENABLE = 1)"
76 #endif
77 #endif
78 /*---------------------------------------------------------------------------*/
79 typedef enum {
80  TMP_007_TYPE_OBJECT = (1 << 0),
81  TMP_007_TYPE_AMBIENT = (1 << 1),
82 
83  TMP_007_TYPE_ALL = (TMP_007_TYPE_OBJECT |
84  TMP_007_TYPE_AMBIENT),
85 } TMP_007_TYPE;
86 /*---------------------------------------------------------------------------*/
87 typedef enum {
88  TMP_007_STATUS_DISABLED,
89  TMP_007_STATUS_INITIALIZED,
90  TMP_007_STATUS_NOT_READY,
91  TMP_007_STATUS_READY,
92  TMP_007_STATUS_I2C_ERROR,
93 } TMP_007_STATUS;
94 /*---------------------------------------------------------------------------*/
95 #define TMP_007_READING_ERROR -1
96 /*---------------------------------------------------------------------------*/
97 extern const struct sensors_sensor tmp_007_sensor;
98 /*---------------------------------------------------------------------------*/
99 #endif /* TMP_007_SENSOR_H_ */
100 /*---------------------------------------------------------------------------*/
101 /**
102  * @}
103  * @}
104  */
Header file with definitions related to the sensors on the Sensortags.