X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Finclude%2Fgnunet_sensor_service.h;h=c141def27072dd45ef4093456c9d052996466879;hb=418bf5953acdba2e325528d739fb115b51b7141f;hp=eb4fbdc6782d067ed58fac400d254ecb780f2cb4;hpb=85e95fea731341b5bfdbb1175520220cd1d394d5;p=oweals%2Fgnunet.git diff --git a/src/include/gnunet_sensor_service.h b/src/include/gnunet_sensor_service.h index eb4fbdc67..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,15 +86,16 @@ 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, - const struct SensorInfoShort *sensor, - const char *err_msg); +typedef void (*GNUNET_SENSOR_SensorIterateCB) (void *cls, + const struct SensorInfoShort * + sensor, const char *err_msg); + /** * Continuation called with a status result. @@ -88,8 +103,17 @@ typedef void (*GNUNET_SENSOR_SensorIteratorCB) (void *cls, * @param cls closure * @param emsg error message, NULL on success */ -typedef void (*GNUNET_SENSOR_Continuation)(void *cls, - const char *emsg); +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. @@ -99,30 +123,67 @@ typedef void (*GNUNET_SENSOR_Continuation)(void *cls, struct GNUNET_SENSOR_Handle * 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_TIME_Relative timeout, - const char* sensorname, size_t sensorname_len, - GNUNET_SENSOR_SensorIteratorCB callback, void *callback_cls); +struct GNUNET_SENSOR_IterateContext * +GNUNET_SENSOR_iterate (struct GNUNET_SENSOR_Handle *h, + struct GNUNET_TIME_Relative timeout, + 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 */ { @@ -132,3 +193,5 @@ GNUNET_SENSOR_iterate_sensors (struct GNUNET_SENSOR_Handle *h, #endif #endif + +/** @} */ /* end of group */