Official reference client implementation for Cumulocity SmartREST on u-blox C027.
Dependencies: C027_Support C12832 LM75B MMA7660 MbedSmartRest mbed-rtos mbed
Fork of MbedSmartRestMain by
io/DeviceFeedback.cpp@65:a62dbef2f924, 2014-10-30 (annotated)
- Committer:
- vwochnik
- Date:
- Thu Oct 30 13:38:20 2014 +0000
- Revision:
- 65:a62dbef2f924
- Child:
- 67:c360a2b2c948
operation support
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
vwochnik | 65:a62dbef2f924 | 1 | #include "DeviceFeedback.h" |
vwochnik | 65:a62dbef2f924 | 2 | #include <stdlib.h> |
vwochnik | 65:a62dbef2f924 | 3 | #include <string.h> |
vwochnik | 65:a62dbef2f924 | 4 | |
vwochnik | 65:a62dbef2f924 | 5 | #define MSG_CLOSE_RELAY 1 |
vwochnik | 65:a62dbef2f924 | 6 | #define MSG_OPEN_RELAY 2 |
vwochnik | 65:a62dbef2f924 | 7 | |
vwochnik | 65:a62dbef2f924 | 8 | DeviceFeedback::DeviceFeedback(PwmOut speaker) : |
vwochnik | 65:a62dbef2f924 | 9 | _speaker(speaker), |
vwochnik | 65:a62dbef2f924 | 10 | _thread(DeviceFeedback::thread_func, this) |
vwochnik | 65:a62dbef2f924 | 11 | { |
vwochnik | 65:a62dbef2f924 | 12 | } |
vwochnik | 65:a62dbef2f924 | 13 | |
vwochnik | 65:a62dbef2f924 | 14 | void DeviceFeedback::closeRelay() |
vwochnik | 65:a62dbef2f924 | 15 | { |
vwochnik | 65:a62dbef2f924 | 16 | uint8_t *msg; |
vwochnik | 65:a62dbef2f924 | 17 | |
vwochnik | 65:a62dbef2f924 | 18 | msg = _mail.alloc(); |
vwochnik | 65:a62dbef2f924 | 19 | *msg = MSG_CLOSE_RELAY; |
vwochnik | 65:a62dbef2f924 | 20 | _mail.put(msg); |
vwochnik | 65:a62dbef2f924 | 21 | } |
vwochnik | 65:a62dbef2f924 | 22 | |
vwochnik | 65:a62dbef2f924 | 23 | void DeviceFeedback::openRelay() |
vwochnik | 65:a62dbef2f924 | 24 | { |
vwochnik | 65:a62dbef2f924 | 25 | uint8_t *msg; |
vwochnik | 65:a62dbef2f924 | 26 | |
vwochnik | 65:a62dbef2f924 | 27 | msg = _mail.alloc(); |
vwochnik | 65:a62dbef2f924 | 28 | *msg = MSG_OPEN_RELAY; |
vwochnik | 65:a62dbef2f924 | 29 | _mail.put(msg); |
vwochnik | 65:a62dbef2f924 | 30 | } |
vwochnik | 65:a62dbef2f924 | 31 | |
vwochnik | 65:a62dbef2f924 | 32 | void DeviceFeedback::thread() |
vwochnik | 65:a62dbef2f924 | 33 | { |
vwochnik | 65:a62dbef2f924 | 34 | osEvent evt; uint8_t *msg; |
vwochnik | 65:a62dbef2f924 | 35 | bool relayState = false; |
vwochnik | 65:a62dbef2f924 | 36 | |
vwochnik | 65:a62dbef2f924 | 37 | while (true) { |
vwochnik | 65:a62dbef2f924 | 38 | if ((evt = _mail.get(1000)).status == osEventMail) { |
vwochnik | 65:a62dbef2f924 | 39 | msg = (uint8_t*)evt.value.p; |
vwochnik | 65:a62dbef2f924 | 40 | switch (*msg) { |
vwochnik | 65:a62dbef2f924 | 41 | case MSG_CLOSE_RELAY: |
vwochnik | 65:a62dbef2f924 | 42 | if (!relayState) { |
vwochnik | 65:a62dbef2f924 | 43 | relayState = true; |
vwochnik | 65:a62dbef2f924 | 44 | for (float i=2000.0; i<10000.0; i+=100) { |
vwochnik | 65:a62dbef2f924 | 45 | _speaker.period(1.0/i); |
vwochnik | 65:a62dbef2f924 | 46 | _speaker = 0.5; |
vwochnik | 65:a62dbef2f924 | 47 | Thread::wait(20); |
vwochnik | 65:a62dbef2f924 | 48 | } |
vwochnik | 65:a62dbef2f924 | 49 | _speaker = 0.0; |
vwochnik | 65:a62dbef2f924 | 50 | } |
vwochnik | 65:a62dbef2f924 | 51 | break; |
vwochnik | 65:a62dbef2f924 | 52 | case MSG_OPEN_RELAY: |
vwochnik | 65:a62dbef2f924 | 53 | if (relayState) { |
vwochnik | 65:a62dbef2f924 | 54 | relayState = false; |
vwochnik | 65:a62dbef2f924 | 55 | for (float i=10000.0; i>2000.0; i-=100) { |
vwochnik | 65:a62dbef2f924 | 56 | _speaker.period(1.0/i); |
vwochnik | 65:a62dbef2f924 | 57 | _speaker = 0.5; |
vwochnik | 65:a62dbef2f924 | 58 | Thread::wait(20); |
vwochnik | 65:a62dbef2f924 | 59 | } |
vwochnik | 65:a62dbef2f924 | 60 | _speaker = 0.0; |
vwochnik | 65:a62dbef2f924 | 61 | } |
vwochnik | 65:a62dbef2f924 | 62 | break; |
vwochnik | 65:a62dbef2f924 | 63 | } |
vwochnik | 65:a62dbef2f924 | 64 | _mail.free(msg); |
vwochnik | 65:a62dbef2f924 | 65 | } |
vwochnik | 65:a62dbef2f924 | 66 | |
vwochnik | 65:a62dbef2f924 | 67 | if (relayState) { |
vwochnik | 65:a62dbef2f924 | 68 | _speaker.period(1.0/10000); |
vwochnik | 65:a62dbef2f924 | 69 | _speaker = 0.5; |
vwochnik | 65:a62dbef2f924 | 70 | Thread::wait(20); |
vwochnik | 65:a62dbef2f924 | 71 | _speaker = 0.0; |
vwochnik | 65:a62dbef2f924 | 72 | } |
vwochnik | 65:a62dbef2f924 | 73 | } |
vwochnik | 65:a62dbef2f924 | 74 | } |
vwochnik | 65:a62dbef2f924 | 75 | |
vwochnik | 65:a62dbef2f924 | 76 | void DeviceFeedback::thread_func(void const *arg) |
vwochnik | 65:a62dbef2f924 | 77 | { |
vwochnik | 65:a62dbef2f924 | 78 | DeviceFeedback *that; |
vwochnik | 65:a62dbef2f924 | 79 | that = (DeviceFeedback*)arg; |
vwochnik | 65:a62dbef2f924 | 80 | that->thread(); |
vwochnik | 65:a62dbef2f924 | 81 | } |