minor fix
[oweals/gnunet.git] / src / sensor / sensor.h
1 /*
2       This file is part of GNUnet
3       (C) 2012-2013 Christian Grothoff (and other contributing authors)
4
5       GNUnet is free software; you can redistribute it and/or modify
6       it under the terms of the GNU General Public License as published
7       by the Free Software Foundation; either version 3, or (at your
8       option) any later version.
9
10       GNUnet is distributed in the hope that it will be useful, but
11       WITHOUT ANY WARRANTY; without even the implied warranty of
12       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13       General Public License for more details.
14
15       You should have received a copy of the GNU General Public License
16       along with GNUnet; see the file COPYING.  If not, write to the
17       Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18       Boston, MA 02111-1307, USA.
19  */
20 /**
21  * @file sensor/sensor.h
22  * @brief IPC messages and private service declarations
23  * @author Omar Tarabai
24  */
25
26 #include "gnunet_sensor_service.h"
27 #include "gnunet_sensor_util_lib.h"
28
29
30 GNUNET_NETWORK_STRUCT_BEGIN
31 /**
32  * Carries a summary of a sensor
33  *
34  */
35     struct SensorInfoMessage
36 {
37   /**
38    * Message header
39    */
40   struct GNUNET_MessageHeader header;
41
42   /**
43    * Length of sensor name (name follows the struct)
44    */
45   size_t name_len;
46
47   /**
48    * First part of version number
49    */
50   uint16_t version_major;
51
52   /**
53    * Second part of version number
54    */
55   uint16_t version_minor;
56
57   /**
58    * Length of sensor description (description itself follows)
59    */
60   size_t description_len;
61 };
62
63 GNUNET_NETWORK_STRUCT_END
64 /**
65  * Stop the sensor analysis module
66  */
67     void
68 SENSOR_analysis_stop ();
69
70
71 /**
72  * Start the sensor analysis module
73  *
74  * @param c our service configuration
75  * @param sensors multihashmap of loaded sensors
76  * @return #GNUNET_OK if started successfully, #GNUNET_SYSERR otherwise
77  */
78 int
79 SENSOR_analysis_start (const struct GNUNET_CONFIGURATION_Handle *c,
80                        struct GNUNET_CONTAINER_MultiHashMap *sensors);
81
82
83 /**
84  * Stop sensor value reporting module
85  */
86 void
87 SENSOR_reporting_value_stop ();
88
89
90 /**
91  * Start the sensor value reporting module
92  *
93  * @param c our service configuration
94  * @param sensors multihashmap of loaded sensors
95  * @return #GNUNET_OK if started successfully, #GNUNET_SYSERR otherwise
96  */
97 int
98 SENSOR_reporting_value_start (const struct GNUNET_CONFIGURATION_Handle *c,
99                               struct GNUNET_CONTAINER_MultiHashMap *sensors);
100
101
102 /**
103  * Stop sensor anomaly reporting module
104  */
105 void
106 SENSOR_reporting_anomaly_stop ();
107
108 /**
109  * Used by the analysis module to tell the reporting module about a change in
110  * the anomaly status of a sensor.
111  *
112  * @param sensor Related sensor
113  * @param anomalous The new sensor anomalous status
114  */
115 void
116 SENSOR_reporting_anomaly_update (struct GNUNET_SENSOR_SensorInfo *sensor,
117                                  int anomalous);
118
119
120 /**
121  * Start the sensor anomaly reporting module
122  *
123  * @param c our service configuration
124  * @param s multihashmap of loaded sensors
125  * @return #GNUNET_OK if started successfully, #GNUNET_SYSERR otherwise
126  */
127 int
128 SENSOR_reporting_anomaly_start (const struct GNUNET_CONFIGURATION_Handle *c,
129                                 struct GNUNET_CONTAINER_MultiHashMap *s);
130
131
132 /**
133  * Stop the sensor update module
134  */
135 void
136 SENSOR_update_stop ();
137
138
139 /**
140  * Start the sensor update module
141  *
142  * @param c our service configuration
143  * @param s multihashmap of loaded sensors
144  * @param cb callback to reset service components when we have new updates
145  * @return #GNUNET_OK if started successfully, #GNUNET_SYSERR otherwise
146  */
147 int
148 SENSOR_update_start (const struct GNUNET_CONFIGURATION_Handle *c,
149                      struct GNUNET_CONTAINER_MultiHashMap *s, void (*cb) ());