A compilation of some hardware sensors and their shared programming interfaces.
Diff: PeriodicSensor.cpp
- Revision:
- 0:8d34cc2ff388
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PeriodicSensor.cpp Sun Mar 16 01:48:59 2014 +0000 @@ -0,0 +1,59 @@ +/* PeriodicSensor.cpp + * Tested with mbed board: FRDM-KL46Z + * Author: Mark Gottscho + * mgottscho@ucla.edu + */ + +#include "mbed.h" +#include "PeriodicSensor.h" + +PeriodicSensor::PeriodicSensor() : + __dataReady(false), + __interrupt(), + __sample_period(0), + __background_sampling(false), + __min_sample_period(0.05) { + __interrupt.detach(); +} + +PeriodicSensor::PeriodicSensor(float min_sample_period) : + __dataReady(false), + __interrupt(), + __sample_period(0), + __background_sampling(false), + __min_sample_period(0.05) { + if (min_sample_period > 0) + __min_sample_period = min_sample_period; + __interrupt.detach(); +} + +PeriodicSensor::~PeriodicSensor() { } + +bool PeriodicSensor::isDataReady() { + return __dataReady; +} + +void PeriodicSensor::enableBackgroundSampling(bool enable, float sample_period) { + if (enable && sample_period >= __min_sample_period-0.0001) { + __sample_period = sample_period; + __background_sampling = true; + __interrupt.attach(this, &PeriodicSensor::__sample_data_ISR, sample_period); + } + else if (!enable) { + __sample_period = 0; + __background_sampling = false; + __interrupt.detach(); + } +} + +bool PeriodicSensor::isBackgroundSamplingEnabled() { + return __background_sampling; +} + +float PeriodicSensor::getSamplePeriod() { + return __sample_period; +} + +float PeriodicSensor::getMinSamplePeriod() { + return __min_sample_period; +} \ No newline at end of file