X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Finclude%2Fgnunet_sensor_service.h;h=c141def27072dd45ef4093456c9d052996466879;hb=418bf5953acdba2e325528d739fb115b51b7141f;hp=4ef2885e65d7f22b9eda4c7fa2c4a4b752a7e461;hpb=5051244c80bd93e1599c5c39aeeefebaeef40d61;p=oweals%2Fgnunet.git diff --git a/src/include/gnunet_sensor_service.h b/src/include/gnunet_sensor_service.h index 4ef2885e6..c141def27 100644 --- a/src/include/gnunet_sensor_service.h +++ b/src/include/gnunet_sensor_service.h @@ -1,32 +1,36 @@ /* This file is part of GNUnet - (C) + Copyright (C) - GNUnet is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published - by the Free Software Foundation; either version 3, or (at your - option) any later version. + GNUnet is free software: you can redistribute it and/or modify it + under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, + or (at your option) any later version. GNUnet is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GNUnet; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. + Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . */ /** - * @file include/gnunet_sensor_service.h - * @brief API to the sensor service * @author Omar Tarabai + * + * @file + * API to the sensor service + * + * @defgroup sensor Sensor service + * + * @{ */ + #ifndef GNUNET_SENSOR_SERVICE_H #define GNUNET_SENSOR_SERVICE_H -#include "platform.h" +#include "gnunet_common.h" #include "gnunet_util_lib.h" #ifdef __cplusplus @@ -43,6 +47,16 @@ extern "C" */ struct GNUNET_SENSOR_Handle; +/** + * Context for an iteration request. + */ +struct GNUNET_SENSOR_IterateContext; + +/** + * Context of a force anomaly request + */ +struct GNUNET_SENSOR_ForceAnomalyContext; + /** * Structure containing brief info about sensor */ @@ -72,13 +86,13 @@ struct SensorInfoShort }; /** - * Type of an iterator over sensor definitions. + * Sensor iterate request callback. * * @param cls closure - * @param hello hello message for the peer (can be NULL) + * @param sensor Brief sensor information * @param error message */ -typedef void (*GNUNET_SENSOR_SensorIteratorCB) (void *cls, +typedef void (*GNUNET_SENSOR_SensorIterateCB) (void *cls, const struct SensorInfoShort * sensor, const char *err_msg); @@ -92,6 +106,15 @@ typedef void (*GNUNET_SENSOR_SensorIteratorCB) (void *cls, typedef void (*GNUNET_SENSOR_Continuation) (void *cls, const char *emsg); +/** + * Disconnect from the sensor service + * + * @param h handle to disconnect + */ +void +GNUNET_SENSOR_disconnect (struct GNUNET_SENSOR_Handle *h); + + /** * Connect to the sensor service. * @@ -102,32 +125,66 @@ GNUNET_SENSOR_connect (const struct GNUNET_CONFIGURATION_Handle *cfg); /** - * Disconnect from the sensor service + * Cancel an iteration request. + * This should be called before the iterate callback is called with a NULL value. * - * @param h handle to disconnect + * @param ic context of the iterator to cancel */ void -GNUNET_SENSOR_disconnect (struct GNUNET_SENSOR_Handle *h); +GNUNET_SENSOR_iterate_cancel (struct GNUNET_SENSOR_IterateContext + *ic); /** - * Client asking to iterate all available sensors + * Get one or all sensors loaded by the sensor service. + * The callback will be called with each sensor received and once with a NULL + * value to signal end of iteration. * * @param h Handle to SENSOR service * @param timeout how long to wait until timing out - * @param sensorname information on one sensor only, can be NULL to get all - * @param sensorname_len length of the sensorname parameter - * @param callback the method to call for each sensor + * @param sensorname Name of the required sensor, NULL to get all + * @param callback the function to call for each sensor * @param callback_cls closure for callback * @return iterator context */ -struct GNUNET_SENSOR_SensorIteratorContext * -GNUNET_SENSOR_iterate_sensors (struct GNUNET_SENSOR_Handle *h, +struct GNUNET_SENSOR_IterateContext * +GNUNET_SENSOR_iterate (struct GNUNET_SENSOR_Handle *h, struct GNUNET_TIME_Relative timeout, - const char *sensorname, size_t sensorname_len, - GNUNET_SENSOR_SensorIteratorCB callback, + const char *sensor_name, + GNUNET_SENSOR_SensorIterateCB callback, void *callback_cls); + +/** + * Cancel a force anomaly request. + * + * @param fa Force anomaly context returned by GNUNET_SENSOR_force_anomaly() + */ +void +GNUNET_SENSOR_force_anomaly_cancel (struct GNUNET_SENSOR_ForceAnomalyContext + *fa); + + +/** + * Force an anomaly status change on a given sensor. If the sensor reporting + * module is running, this will trigger the usual reporting logic, therefore, + * please only use this in a test environment. + * + * Also, if the sensor analysis module is running, it might conflict and cause + * undefined behaviour if it detects a real anomaly. + * + * @param h Service handle + * @param sensor_name Sensor name to set the anomaly status + * @param anomalous The desired status: #GNUNET_YES / #GNUNET_NO + * @param cont Continuation function to be called after the request is sent + * @param cont_cls Closure for cont + */ +struct GNUNET_SENSOR_ForceAnomalyContext * +GNUNET_SENSOR_force_anomaly (struct GNUNET_SENSOR_Handle *h, char *sensor_name, + int anomalous, GNUNET_SENSOR_Continuation cont, + void *cont_cls); + + #if 0 /* keep Emacsens' auto-indent happy */ { #endif @@ -136,3 +193,5 @@ GNUNET_SENSOR_iterate_sensors (struct GNUNET_SENSOR_Handle *h, #endif #endif + +/** @} */ /* end of group */