From 53edff765542878bd6bd6dc4bebc03147598e034 Mon Sep 17 00:00:00 2001 From: adamdunkels Date: Thu, 14 Jan 2010 20:16:33 +0000 Subject: [PATCH] Added sensor API for the SHT11 driver --- core/dev/sht11-sensor.c | 102 ++++++++++++++++++++++++++++++++++++++++ core/dev/sht11-sensor.h | 51 ++++++++++++++++++++ 2 files changed, 153 insertions(+) create mode 100644 core/dev/sht11-sensor.c create mode 100644 core/dev/sht11-sensor.h diff --git a/core/dev/sht11-sensor.c b/core/dev/sht11-sensor.c new file mode 100644 index 000000000..f9834a1c2 --- /dev/null +++ b/core/dev/sht11-sensor.c @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2005, Swedish Institute of Computer Science + * 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. + * + * @(#)$Id: sht11-sensor.c,v 1.1 2010/01/14 20:16:33 adamdunkels Exp $ + */ + +#include + +#include + +#include "contiki.h" +#include "lib/sensors.h" +#include "dev/sht11.h" +#include "dev/sht11-sensor.h" + +const struct sensors_sensor sht11_sensor; + +enum { + ON, OFF +}; +static uint8_t state = OFF; + +/*---------------------------------------------------------------------------*/ +static int +value(int type) +{ + switch(type) { + /* Photosynthetically Active Radiation. */ + case SHT11_SENSOR_TEMP: + return sht11_temp();; + + /* Total Solar Radiation. */ + case SHT11_SENSOR_HUMIDITY: + return sht11_humidity(); + } + return 0; +} +/*---------------------------------------------------------------------------*/ +static int +status(int type) +{ + switch(type) { + case SENSORS_ACTIVE: + case SENSORS_READY: + return (state == ON); + } + return 0; +} + +/*---------------------------------------------------------------------------*/ +static int +configure(int type, void *c) +{ + switch(type) { + case SENSORS_ACTIVE: + if(c) { + if(!status(SENSORS_ACTIVE)) { + rtimer_clock_t t0; + sht11_init(); + state = ON; + + /* For for about 11 ms before the SHT11 can be used. */ + t0 = RTIMER_NOW(); + while(RTIMER_CLOCK_LT(RTIMER_NOW(), t0 + RTIMER_SECOND / 100)); + } + } else { + sht11_off(); + state = OFF; + } + } + return 0; +} +/*---------------------------------------------------------------------------*/ +SENSORS_SENSOR(sht11_sensor, "sht11", + value, configure, status); diff --git a/core/dev/sht11-sensor.h b/core/dev/sht11-sensor.h new file mode 100644 index 000000000..f09e7908e --- /dev/null +++ b/core/dev/sht11-sensor.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2010, Swedish Institute of Computer Science. + * 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. + * + * + * $Id: sht11-sensor.h,v 1.1 2010/01/14 20:16:33 adamdunkels Exp $ + * + * ----------------------------------------------------------------- + * + * Author : Adam Dunkels, Joakim Eriksson, Niclas Finne + * Created : 2010-01-08 + * Updated : $Date: 2010/01/14 20:16:33 $ + * $Revision: 1.1 $ + */ + +#ifndef __SHT11_SENSOR_H__ +#define __SHT11_SENSOR_H__ + +#include "lib/sensors.h" + +extern const struct sensors_sensor sht11_sensor; + +#define SHT11_SENSOR_TEMP 0 +#define SHT11_SENSOR_HUMIDITY 1 + + +#endif /* __SHT11-SENSOR_H__ */