lib para o framework sgam
Dependencies: MPU6050 Grove_temperature
Dependents: example_smart-grid
peripheral/impl/Temperature.cpp@5:caecc2426bbb, 2019-06-06 (annotated)
- 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?
User | Revision | Line number | New 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 | } |