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@67:c360a2b2c948, 2014-11-30 (annotated)
- Committer:
- vwochnik
- Date:
- Sun Nov 30 19:34:49 2014 +0000
- Revision:
- 67:c360a2b2c948
- Parent:
- 65:a62dbef2f924
- Child:
- 71:063c45e99578
refactor credentials persistence, add factory reset upon fire press button
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 | 67:c360a2b2c948 | 5 | #define MSG_BEEP_SUCCESS 1 |
vwochnik | 67:c360a2b2c948 | 6 | #define MSG_BEEP_FAILURE 2 |
vwochnik | 67:c360a2b2c948 | 7 | #define MSG_CLOSE_RELAY 3 |
vwochnik | 67:c360a2b2c948 | 8 | #define MSG_OPEN_RELAY 4 |
vwochnik | 65:a62dbef2f924 | 9 | |
vwochnik | 65:a62dbef2f924 | 10 | DeviceFeedback::DeviceFeedback(PwmOut speaker) : |
vwochnik | 65:a62dbef2f924 | 11 | _speaker(speaker), |
vwochnik | 65:a62dbef2f924 | 12 | _thread(DeviceFeedback::thread_func, this) |
vwochnik | 65:a62dbef2f924 | 13 | { |
vwochnik | 65:a62dbef2f924 | 14 | } |
vwochnik | 65:a62dbef2f924 | 15 | |
vwochnik | 67:c360a2b2c948 | 16 | void DeviceFeedback::beepSuccess() |
vwochnik | 67:c360a2b2c948 | 17 | { |
vwochnik | 67:c360a2b2c948 | 18 | sendMessage(MSG_BEEP_SUCCESS); |
vwochnik | 67:c360a2b2c948 | 19 | } |
vwochnik | 67:c360a2b2c948 | 20 | |
vwochnik | 67:c360a2b2c948 | 21 | void DeviceFeedback::beepFailure() |
vwochnik | 67:c360a2b2c948 | 22 | { |
vwochnik | 67:c360a2b2c948 | 23 | sendMessage(MSG_BEEP_FAILURE); |
vwochnik | 67:c360a2b2c948 | 24 | } |
vwochnik | 67:c360a2b2c948 | 25 | |
vwochnik | 65:a62dbef2f924 | 26 | void DeviceFeedback::closeRelay() |
vwochnik | 65:a62dbef2f924 | 27 | { |
vwochnik | 67:c360a2b2c948 | 28 | sendMessage(MSG_CLOSE_RELAY); |
vwochnik | 65:a62dbef2f924 | 29 | } |
vwochnik | 65:a62dbef2f924 | 30 | |
vwochnik | 65:a62dbef2f924 | 31 | void DeviceFeedback::openRelay() |
vwochnik | 65:a62dbef2f924 | 32 | { |
vwochnik | 67:c360a2b2c948 | 33 | sendMessage(MSG_OPEN_RELAY); |
vwochnik | 67:c360a2b2c948 | 34 | } |
vwochnik | 67:c360a2b2c948 | 35 | |
vwochnik | 67:c360a2b2c948 | 36 | void DeviceFeedback::sendMessage(uint8_t msg) |
vwochnik | 67:c360a2b2c948 | 37 | { |
vwochnik | 67:c360a2b2c948 | 38 | uint8_t *msgPtr; |
vwochnik | 65:a62dbef2f924 | 39 | |
vwochnik | 67:c360a2b2c948 | 40 | msgPtr = _mail.alloc(); |
vwochnik | 67:c360a2b2c948 | 41 | *msgPtr = msg; |
vwochnik | 67:c360a2b2c948 | 42 | _mail.put(msgPtr); |
vwochnik | 65:a62dbef2f924 | 43 | } |
vwochnik | 65:a62dbef2f924 | 44 | |
vwochnik | 65:a62dbef2f924 | 45 | void DeviceFeedback::thread() |
vwochnik | 65:a62dbef2f924 | 46 | { |
vwochnik | 65:a62dbef2f924 | 47 | osEvent evt; uint8_t *msg; |
vwochnik | 65:a62dbef2f924 | 48 | bool relayState = false; |
vwochnik | 65:a62dbef2f924 | 49 | |
vwochnik | 65:a62dbef2f924 | 50 | while (true) { |
vwochnik | 65:a62dbef2f924 | 51 | if ((evt = _mail.get(1000)).status == osEventMail) { |
vwochnik | 65:a62dbef2f924 | 52 | msg = (uint8_t*)evt.value.p; |
vwochnik | 65:a62dbef2f924 | 53 | switch (*msg) { |
vwochnik | 67:c360a2b2c948 | 54 | case MSG_BEEP_SUCCESS: |
vwochnik | 67:c360a2b2c948 | 55 | for (float i=2000.0; i<10000.0; i+=2000.0) { |
vwochnik | 67:c360a2b2c948 | 56 | _speaker.period(1.0/i); |
vwochnik | 67:c360a2b2c948 | 57 | _speaker = 0.5; |
vwochnik | 67:c360a2b2c948 | 58 | Thread::wait(200); |
vwochnik | 67:c360a2b2c948 | 59 | _speaker = 0.0; |
vwochnik | 67:c360a2b2c948 | 60 | Thread::wait(50); |
vwochnik | 67:c360a2b2c948 | 61 | } |
vwochnik | 67:c360a2b2c948 | 62 | break; |
vwochnik | 67:c360a2b2c948 | 63 | case MSG_BEEP_FAILURE: |
vwochnik | 67:c360a2b2c948 | 64 | for (float i=10000.0; i>2000.0; i-=2000.0) { |
vwochnik | 67:c360a2b2c948 | 65 | _speaker.period(1.0/i); |
vwochnik | 67:c360a2b2c948 | 66 | _speaker = 0.5; |
vwochnik | 67:c360a2b2c948 | 67 | Thread::wait(200); |
vwochnik | 67:c360a2b2c948 | 68 | _speaker = 0.0; |
vwochnik | 67:c360a2b2c948 | 69 | Thread::wait(50); |
vwochnik | 67:c360a2b2c948 | 70 | } |
vwochnik | 67:c360a2b2c948 | 71 | break; |
vwochnik | 65:a62dbef2f924 | 72 | case MSG_CLOSE_RELAY: |
vwochnik | 65:a62dbef2f924 | 73 | if (!relayState) { |
vwochnik | 65:a62dbef2f924 | 74 | relayState = true; |
vwochnik | 65:a62dbef2f924 | 75 | for (float i=2000.0; i<10000.0; i+=100) { |
vwochnik | 65:a62dbef2f924 | 76 | _speaker.period(1.0/i); |
vwochnik | 65:a62dbef2f924 | 77 | _speaker = 0.5; |
vwochnik | 65:a62dbef2f924 | 78 | Thread::wait(20); |
vwochnik | 65:a62dbef2f924 | 79 | } |
vwochnik | 65:a62dbef2f924 | 80 | _speaker = 0.0; |
vwochnik | 65:a62dbef2f924 | 81 | } |
vwochnik | 65:a62dbef2f924 | 82 | break; |
vwochnik | 65:a62dbef2f924 | 83 | case MSG_OPEN_RELAY: |
vwochnik | 65:a62dbef2f924 | 84 | if (relayState) { |
vwochnik | 65:a62dbef2f924 | 85 | relayState = false; |
vwochnik | 65:a62dbef2f924 | 86 | for (float i=10000.0; i>2000.0; i-=100) { |
vwochnik | 65:a62dbef2f924 | 87 | _speaker.period(1.0/i); |
vwochnik | 65:a62dbef2f924 | 88 | _speaker = 0.5; |
vwochnik | 65:a62dbef2f924 | 89 | Thread::wait(20); |
vwochnik | 65:a62dbef2f924 | 90 | } |
vwochnik | 65:a62dbef2f924 | 91 | _speaker = 0.0; |
vwochnik | 65:a62dbef2f924 | 92 | } |
vwochnik | 65:a62dbef2f924 | 93 | break; |
vwochnik | 65:a62dbef2f924 | 94 | } |
vwochnik | 65:a62dbef2f924 | 95 | _mail.free(msg); |
vwochnik | 65:a62dbef2f924 | 96 | } |
vwochnik | 65:a62dbef2f924 | 97 | |
vwochnik | 65:a62dbef2f924 | 98 | if (relayState) { |
vwochnik | 65:a62dbef2f924 | 99 | _speaker.period(1.0/10000); |
vwochnik | 65:a62dbef2f924 | 100 | _speaker = 0.5; |
vwochnik | 65:a62dbef2f924 | 101 | Thread::wait(20); |
vwochnik | 65:a62dbef2f924 | 102 | _speaker = 0.0; |
vwochnik | 65:a62dbef2f924 | 103 | } |
vwochnik | 65:a62dbef2f924 | 104 | } |
vwochnik | 65:a62dbef2f924 | 105 | } |
vwochnik | 65:a62dbef2f924 | 106 | |
vwochnik | 65:a62dbef2f924 | 107 | void DeviceFeedback::thread_func(void const *arg) |
vwochnik | 65:a62dbef2f924 | 108 | { |
vwochnik | 65:a62dbef2f924 | 109 | DeviceFeedback *that; |
vwochnik | 65:a62dbef2f924 | 110 | that = (DeviceFeedback*)arg; |
vwochnik | 65:a62dbef2f924 | 111 | that->thread(); |
vwochnik | 65:a62dbef2f924 | 112 | } |