lib para o framework sgam

Dependencies:   MPU6050 Grove_temperature

Dependents:   example_smart-grid

Revision:
5:caecc2426bbb
Parent:
4:f21aab30658a
--- 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();
+}