*/
#include "common.h"
+#include "control.h"
#include "sensor.h"
#include "options.h"
#include <math.h>
{1,-1,1,-1}, // ANALOG_TEST0
{500,0,499,0}, // ANALOG_TEST1
{5,-5,4,-4}, // ANALOG_FAIL0
- {1,0,1,0}, // DIGITAL_TEST0
- {1,0,1,0}, // DIGITAL_TEST1
- {1,0,1,0} // DIGITAL_FAIL0
+ {1,0,1,0}, // DIGITAL_TEST0
+ {1,0,1,0}, // DIGITAL_TEST1
+ {1,0,1,0} // DIGITAL_FAIL0
};
/** Human readable names for the sensors **/
}
/**
- * Stop a Sensor from recording DataPoints. Blocks until it has stopped.
- * @param s - The Sensor to stop
+ * Pause a sensor from recording DataPoints. Blocks until it is paused.
+ * @param s - The Sensor to pause
*/
-void Sensor_Stop(Sensor * s)
+void Sensor_Pause(Sensor *s)
{
- // Stop
if (s->record_data)
{
s->record_data = false;
- pthread_join(s->thread, NULL); // Wait for thread to exit
- Data_Close(&(s->data_file)); // Close DataFile
- s->newest_data.time_stamp = 0;
- s->newest_data.value = 0;
+ pthread_join(s->thread, NULL);
}
}
+/**
+ * Resumes a paused sensor.
+ * @param s - The Sensor to resume
+ */
+void Sensor_Resume(Sensor *s)
+{
+ if (!s->record_data)
+ {
+ s->record_data = true;
+ pthread_create(&(s->thread), NULL, Sensor_Loop, (void*)(s));
+ }
+}
+
+/**
+ * Stop a Sensor from recording DataPoints. Blocks until it has stopped.
+ * @param s - The Sensor to stop
+ */
+void Sensor_Stop(Sensor * s)
+{
+ Sensor_Pause(s);
+ Data_Close(&(s->data_file)); // Close DataFile
+ s->newest_data.time_stamp = 0;
+ s->newest_data.value = 0;
+}
+
/**
* Stop all Sensors
*/
Sensor_Stop(g_sensors+i);
}
+void Sensor_PauseAll()
+{
+ for (int i = 0; i < NUMSENSORS; ++i)
+ Sensor_Pause(g_sensors+i);
+}
+
+void Sensor_ResumeAll()
+{
+ for (int i = 0; i < NUMSENSORS; ++i)
+ Sensor_Resume(g_sensors+i);
+}
+
/**
* Start all Sensors
*/
// Set time stamp
struct timeval t;
gettimeofday(&t, NULL);
- d->time_stamp = TIMEVAL_DIFF(t, g_options.start_time);
+ d->time_stamp = TIMEVAL_DIFF(t, *Control_GetStartTime());
// Read value based on Sensor Id
switch (s->id)
{
struct timeval now;
gettimeofday(&now, NULL);
- double current_time = TIMEVAL_DIFF(now, g_options.start_time);
+ double current_time = TIMEVAL_DIFF(now, *Control_GetStartTime());
int id = 0;
double start_time = 0;
return;
}
Sensor * s = g_sensors+id;
-
+
DataFormat format = Data_GetFormat(&(values[FORMAT]));
// Begin response
// Finish response
Sensor_EndResponse(context, id, format);
-
}