Contiki 3.x
sensinode-sensors.c
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010, Loughborough University - Computer Science
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 Institute nor the names of its contributors
14  * may be used to endorse or promote products derived from this software
15  * without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27  * SUCH DAMAGE.
28  *
29  * This file is part of the Contiki operating system.
30  */
31 
32 /**
33  * \file
34  * This module centrally controls all sensors on sensinode devices
35  *
36  * It respects configuration in contiki-conf.h
37  *
38  * \author
39  * George Oikonomou - <oikonomou@users.sourceforge.net>
40  */
41 
42 #include "dev/sensinode-sensors.h"
43 #include "sys/energest.h"
44 
45 const struct sensors_sensor *sensors[] = {
46 #if ADC_SENSOR_ON
47  &adc_sensor,
48 #endif
49 #if BUTTON_SENSOR_ON
50  &button_1_sensor,
51  &button_2_sensor,
52 #endif
53  0
54 };
55 
56 unsigned char sensors_flags[(sizeof(sensors) / sizeof(struct sensors_sensor *))];
57 
58 /*---------------------------------------------------------------------------*/
59 void
60 sensinode_sensors_activate()
61 {
62  struct sensors_sensor *sensor;
63  sensor = sensors_first();
64  while(sensor) {
65  sensor->configure(SENSORS_ACTIVE, 1);
66  sensor = sensors_next(sensor);
67  }
68  ENERGEST_ON(ENERGEST_TYPE_SENSORS);
69 }
70 /*---------------------------------------------------------------------------*/
71 void
72 sensinode_sensors_deactivate()
73 {
74  struct sensors_sensor *sensor;
75  sensor = sensors_first();
76  while(sensor) {
77  sensor->configure(SENSORS_ACTIVE, 0);
78  sensor = sensors_next(sensor);
79  }
80  ENERGEST_OFF(ENERGEST_TYPE_SENSORS);
81 }
Header file for the energy estimation mechanism
Defines for the sensors on the various Sensinode models.