X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=server%2Fsensor.h;h=a2590365ecf3f484bdef615c9e4ca505ed4a9a40;hb=cf310248b767630a93e81f9cd9cd3700d0d45cb5;hp=d0ab7d53e1eea8e8c95776db754e43e283add53c;hpb=b1a8334f97f84e10ee9cef96377bbdcfbf5f945c;p=matches%2FMCTX3420.git diff --git a/server/sensor.h b/server/sensor.h index d0ab7d5..a259036 100644 --- a/server/sensor.h +++ b/server/sensor.h @@ -1,16 +1,61 @@ + /** * @file sensor.h - * @purpose Declarations for sensor thread stuff + * @purpose Declarations for sensor thread related stuff */ -///TODO: Add more; this is currently just for testing #ifndef _SENSOR_H #define _SENSOR_H +/** Number of data points to keep in sensor buffers **/ +#define SENSOR_DATABUFSIZ 10 + +#define SENSOR_QUERYBUFSIZ 10 + +/** Number of sensors **/ +#define NUMSENSORS 1 + +/** Structure to represent data recorded by a sensor at an instant in time **/ +typedef struct +{ + /** Time at which data was taken **/ + struct timeval time_stamp; //TODO: Consider; use float instead? + /** Value of data **/ + float value; +} DataPoint; + +/** Structure to represent a sensor **/ +typedef struct +{ + /** ID number of the sensor **/ + enum {SENSOR_TEST0=0, SENSOR_TEST1=1} id; + /** Buffer to store data from the sensor **/ + DataPoint buffer[SENSOR_DATABUFSIZ]; + /** Index of last point written in the data buffer **/ + int write_index; + /** Offset position in binary file for query thread to read from**/ + int read_offset; + /** Binary file to write data into when buffer is full **/ + FILE * file; + /** Thread running the sensor **/ + pthread_t thread; + /** Mutex to protect access to stuff **/ + pthread_mutex_t mutex; + + +} Sensor; + + + +extern void Sensor_Spawn(); // Initialise sensor +extern void Sensor_Join(); //Join sensor threads +extern void * Sensor_Main(void * args); // main loop for sensor thread; pass a Sensor* cast to void* + +extern int Sensor_Query(Sensor * s, DataPoint * buffer, int bufsiz); // fill buffer with sensor data +extern void Sensor_Handler(FCGIContext *context, char * params); -extern void * Sensor_Main(void * args); // main loop for sensor thread #endif //_SENSOR_H