X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=server%2Fsensor.h;h=0285252dd0760167f412e96859e0f1a25781a167;hb=5b98dd1c37a6151e734e8fa3a7054248ae3455c6;hp=5cdfbaa7a4123ba19a0ffbbd1bb8dc040d56abeb;hpb=289794ba2dcbe6234e25e5d00531b26baee342b7;p=matches%2FMCTX3420.git diff --git a/server/sensor.h b/server/sensor.h index 5cdfbaa..0285252 100644 --- a/server/sensor.h +++ b/server/sensor.h @@ -7,6 +7,7 @@ #define _SENSOR_H #include "data.h" +#include "device.h" /** @@ -18,6 +19,7 @@ extern int g_num_sensors; // in sensor.c /** Structure to define the warning and error thresholds of the sensors **/ +//TODO: Replace with a call to an appropriate "Sanity" function? (see the actuator code) typedef struct { /** Maximum safe value **/ @@ -30,13 +32,6 @@ typedef struct double min_warn; } SensorThreshold; -/** Function pointer for sensor reading **/ -typedef bool (*ReadFn)(int, double * val); -/** Function pointer for sensor initialisation **/ -typedef bool (*InitFn)(const char *, int); -/** Function pointer for sensor cleanup **/ -typedef bool (*CleanFn)(int); - /** Structure to represent a sensor **/ typedef struct { @@ -56,10 +51,16 @@ typedef struct InitFn init; /** Function to cleanup the sensor **/ CleanFn cleanup; + /** Function to sanity check the sensor readings **/ + SanityFn sanity; /** Human readable name of the sensor **/ const char * name; - /** Thresholds on the sensor **/ - SensorThreshold thresholds; + /** Sampling rate **/ + int sample_us; + /** Number of averages per sample **/ + int averages; + + } Sensor; @@ -73,7 +74,6 @@ extern void Sensor_SetMode(Sensor * s, ControlModes mode, void * arg); extern void * Sensor_Loop(void * args); // Main loop for a thread that handles a Sensor extern bool Sensor_Read(Sensor * s, DataPoint * d); // Read a single DataPoint, indicating if it has changed since the last one -extern void Sensor_CheckData(Sensor * s, double value); // Check a DataPoint extern Sensor * Sensor_Identify(const char * str); // Identify a Sensor from a string extern void Sensor_Handler(FCGIContext *context, char * params); // Handle a FCGI request for Sensor data