edited dilatometer
[matches/MCTX3420.git] / server / sensor.h
index 5cdfbaa..3de48e0 100644 (file)
@@ -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,23 @@ 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 **/
+       struct timespec sample_time;
+       /** Number of averages per sample **/
+       int averages;
+       /** Current data **/
+       DataPoint current_data;
+
+       /** Summed data **/
+       DataPoint averaged_data;
+       /** Number of points read so far before applying average **/
+       int num_read;
+
+
        
 } Sensor;
 
@@ -73,11 +81,12 @@ 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
 
+extern DataPoint Sensor_LastData(int id);
+
 extern const char * Sensor_GetName(int id);
 
 

UCC git Repository :: git.ucc.asn.au