lib para o framework sgam

Dependencies:   MPU6050 Grove_temperature

Dependents:   example_smart-grid

Committer:
AndersonIctus
Date:
Thu Jun 06 23:54:07 2019 -0300
Revision:
5:caecc2426bbb
Parent:
4:f21aab30658a
- Mudancas para por a chamada Assincrona na LIB !!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AndersonIctus 3:f998244e9f80 1 #include "mbed.h"
AndersonIctus 1:53edfdd6ac03 2 #include "Temperature.h"
AndersonIctus 1:53edfdd6ac03 3
AndersonIctus 5:caecc2426bbb 4 // using namespace rtos;
AndersonIctus 5:caecc2426bbb 5
AndersonIctus 5:caecc2426bbb 6 Temperature::Temperature(PinName pin): temperature(pin), timeout(10*1000) {
AndersonIctus 4:f21aab30658a 7 }
AndersonIctus 1:53edfdd6ac03 8
AndersonIctus 3:f998244e9f80 9 Temperature::~Temperature() {
AndersonIctus 5:caecc2426bbb 10 finalizeTask();
AndersonIctus 3:f998244e9f80 11 temperature.~Grove_temperature();
AndersonIctus 1:53edfdd6ac03 12 }
AndersonIctus 1:53edfdd6ac03 13
AndersonIctus 4:f21aab30658a 14 float Temperature::getValue() {
AndersonIctus 4:f21aab30658a 15 return temperature.getTemperature();
AndersonIctus 4:f21aab30658a 16 }
AndersonIctus 4:f21aab30658a 17
AndersonIctus 5:caecc2426bbb 18 void Temperature::setCallbackReadOcurred( void (*callback_sensor)(float* value), uint32_t timeout = 10*1000 ) {
AndersonIctus 5:caecc2426bbb 19 Temperature::callback_sensor = callback_sensor;
AndersonIctus 5:caecc2426bbb 20 Temperature::timeout = timeout;
AndersonIctus 3:f998244e9f80 21 }
AndersonIctus 3:f998244e9f80 22
AndersonIctus 5:caecc2426bbb 23 void Temperature::run(void const *self_context) {
AndersonIctus 5:caecc2426bbb 24 Temperature* self = (Temperature*)self_context;
AndersonIctus 5:caecc2426bbb 25
AndersonIctus 5:caecc2426bbb 26 while(1) {
AndersonIctus 5:caecc2426bbb 27 float val = self->getValue();
AndersonIctus 5:caecc2426bbb 28 self->acceptDataEvent( &val );
AndersonIctus 5:caecc2426bbb 29 ThisThread::sleep_for(self->timeout);
AndersonIctus 5:caecc2426bbb 30 }
AndersonIctus 4:f21aab30658a 31 }
AndersonIctus 1:53edfdd6ac03 32
AndersonIctus 4:f21aab30658a 33 void Temperature::acceptDataEvent(float* data) {
AndersonIctus 5:caecc2426bbb 34 if(callback_sensor != NULL)
AndersonIctus 5:caecc2426bbb 35 callback_sensor(data);
AndersonIctus 1:53edfdd6ac03 36 }
AndersonIctus 5:caecc2426bbb 37
AndersonIctus 5:caecc2426bbb 38 void Temperature::initializeTask() {
AndersonIctus 5:caecc2426bbb 39 t = new Thread();
AndersonIctus 5:caecc2426bbb 40 t->start(callback(run, this));
AndersonIctus 5:caecc2426bbb 41 }
AndersonIctus 5:caecc2426bbb 42
AndersonIctus 5:caecc2426bbb 43 void Temperature::finalizeTask() {
AndersonIctus 5:caecc2426bbb 44 if(t != NULL)
AndersonIctus 5:caecc2426bbb 45 t->terminate();
AndersonIctus 5:caecc2426bbb 46 }