A compilation of some hardware sensors and their shared programming interfaces.

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers PeriodicSensor.cpp Source File

PeriodicSensor.cpp

00001 /* PeriodicSensor.cpp
00002  * Tested with mbed board: FRDM-KL46Z
00003  * Author: Mark Gottscho
00004  * mgottscho@ucla.edu
00005  */
00006  
00007 #include "mbed.h"
00008 #include "PeriodicSensor.h"
00009 
00010 PeriodicSensor::PeriodicSensor() :
00011                 __dataReady(false),
00012                 __interrupt(),
00013                 __sample_period(0),
00014                 __background_sampling(false),
00015                 __min_sample_period(0.05) {
00016     __interrupt.detach();
00017 }
00018 
00019 PeriodicSensor::PeriodicSensor(float min_sample_period) :
00020                 __dataReady(false),
00021                 __interrupt(),
00022                 __sample_period(0),
00023                 __background_sampling(false),
00024                 __min_sample_period(0.05) {
00025     if (min_sample_period > 0)
00026         __min_sample_period = min_sample_period;
00027     __interrupt.detach();
00028 }
00029 
00030 PeriodicSensor::~PeriodicSensor() { }
00031 
00032 bool PeriodicSensor::isDataReady () {
00033     return __dataReady;
00034 }
00035 
00036 void PeriodicSensor::enableBackgroundSampling(bool enable, float sample_period) {
00037     if (enable && sample_period >= __min_sample_period-0.0001) {
00038        __sample_period = sample_period;
00039        __background_sampling = true;
00040        __interrupt.attach(this, &PeriodicSensor::__sample_data_ISR, sample_period);
00041     }
00042     else if (!enable) {
00043         __sample_period = 0;
00044         __background_sampling = false;
00045         __interrupt.detach();   
00046     }
00047 }
00048 
00049 bool PeriodicSensor::isBackgroundSamplingEnabled () {
00050     return __background_sampling;   
00051 }
00052 
00053 float PeriodicSensor::getSamplePeriod () {
00054     return __sample_period;
00055 }
00056 
00057 float PeriodicSensor::getMinSamplePeriod () {
00058     return __min_sample_period;
00059 }