lib para o framework sgam
Dependencies: MPU6050 Grove_temperature
Dependents: example_smart-grid
Diff: peripheral/impl/Temperature.cpp
- Revision:
- 5:caecc2426bbb
- Parent:
- 4:f21aab30658a
diff -r f21aab30658a -r caecc2426bbb peripheral/impl/Temperature.cpp --- a/peripheral/impl/Temperature.cpp Mon Jun 03 23:33:00 2019 -0300 +++ b/peripheral/impl/Temperature.cpp Thu Jun 06 23:54:07 2019 -0300 @@ -1,13 +1,13 @@ #include "mbed.h" #include "Temperature.h" -Temperature::Temperature(PinName pin): temperature(pin) { - // Temperature::value +// using namespace rtos; + +Temperature::Temperature(PinName pin): temperature(pin), timeout(10*1000) { } Temperature::~Temperature() { - // ~Sensor(); - + finalizeTask(); temperature.~Grove_temperature(); } @@ -15,16 +15,32 @@ return temperature.getTemperature(); } -void Temperature::setCallbackReadOcurred( void* (*callback)(float* value), float timeout ) { - Temperature::callback = callback; - // configure the run method !! +void Temperature::setCallbackReadOcurred( void (*callback_sensor)(float* value), uint32_t timeout = 10*1000 ) { + Temperature::callback_sensor = callback_sensor; + Temperature::timeout = timeout; } -void Temperature::run(float timeout) { - // TODO: Configure the readTimeOut !! +void Temperature::run(void const *self_context) { + Temperature* self = (Temperature*)self_context; + + while(1) { + float val = self->getValue(); + self->acceptDataEvent( &val ); + ThisThread::sleep_for(self->timeout); + } } void Temperature::acceptDataEvent(float* data) { - if(Temperature::callback != NULL) - Temperature::callback(data); + if(callback_sensor != NULL) + callback_sensor(data); } + +void Temperature::initializeTask() { + t = new Thread(); + t->start(callback(run, this)); +} + +void Temperature::finalizeTask() { + if(t != NULL) + t->terminate(); +}