Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: C027_Support C12832 LM75B MMA7660 MbedSmartRest mbed-rtos mbed
Fork of MbedSmartRestMain by
io/DeviceFeedback.cpp@78:bf32dfe6c47f, 2015-03-04 (annotated)
- Committer:
- xinlei
- Date:
- Wed Mar 04 09:36:03 2015 +0000
- Revision:
- 78:bf32dfe6c47f
- Parent:
- 76:b07effe83fb8
- Child:
- 90:423177e8a401
New version of ublox c207 firmware.
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), |
| xinlei | 71:063c45e99578 | 12 | _thread(DeviceFeedback::thread_func, this), |
| xinlei | 71:063c45e99578 | 13 | shieldLEDRed(D5), |
| xinlei | 71:063c45e99578 | 14 | shieldLEDBlue(D8), |
| xinlei | 71:063c45e99578 | 15 | shieldLEDGreen(D9) |
| vwochnik | 65:a62dbef2f924 | 16 | { |
| xinlei | 71:063c45e99578 | 17 | shieldLEDRed = 255; |
| xinlei | 71:063c45e99578 | 18 | shieldLEDBlue = 255; |
| xinlei | 71:063c45e99578 | 19 | shieldLEDGreen = 255; |
| vwochnik | 65:a62dbef2f924 | 20 | } |
| vwochnik | 65:a62dbef2f924 | 21 | |
| vwochnik | 67:c360a2b2c948 | 22 | void DeviceFeedback::beepSuccess() |
| vwochnik | 67:c360a2b2c948 | 23 | { |
| vwochnik | 67:c360a2b2c948 | 24 | sendMessage(MSG_BEEP_SUCCESS); |
| vwochnik | 67:c360a2b2c948 | 25 | } |
| vwochnik | 67:c360a2b2c948 | 26 | |
| vwochnik | 67:c360a2b2c948 | 27 | void DeviceFeedback::beepFailure() |
| vwochnik | 67:c360a2b2c948 | 28 | { |
| vwochnik | 67:c360a2b2c948 | 29 | sendMessage(MSG_BEEP_FAILURE); |
| vwochnik | 67:c360a2b2c948 | 30 | } |
| vwochnik | 67:c360a2b2c948 | 31 | |
| vwochnik | 65:a62dbef2f924 | 32 | void DeviceFeedback::closeRelay() |
| vwochnik | 65:a62dbef2f924 | 33 | { |
| xinlei | 71:063c45e99578 | 34 | shieldLEDRed = 255; |
| xinlei | 71:063c45e99578 | 35 | shieldLEDBlue = 255; |
| xinlei | 71:063c45e99578 | 36 | shieldLEDGreen = 0; |
| vwochnik | 67:c360a2b2c948 | 37 | sendMessage(MSG_CLOSE_RELAY); |
| vwochnik | 65:a62dbef2f924 | 38 | } |
| vwochnik | 65:a62dbef2f924 | 39 | |
| vwochnik | 65:a62dbef2f924 | 40 | void DeviceFeedback::openRelay() |
| vwochnik | 65:a62dbef2f924 | 41 | { |
| xinlei | 71:063c45e99578 | 42 | shieldLEDRed = 255; |
| xinlei | 71:063c45e99578 | 43 | shieldLEDBlue = 255; |
| xinlei | 71:063c45e99578 | 44 | shieldLEDGreen = 255; |
| vwochnik | 67:c360a2b2c948 | 45 | sendMessage(MSG_OPEN_RELAY); |
| vwochnik | 67:c360a2b2c948 | 46 | } |
| vwochnik | 67:c360a2b2c948 | 47 | |
| vwochnik | 67:c360a2b2c948 | 48 | void DeviceFeedback::sendMessage(uint8_t msg) |
| vwochnik | 67:c360a2b2c948 | 49 | { |
| xinlei | 78:bf32dfe6c47f | 50 | uint8_t *msgPtr = _mail.alloc(); |
| vwochnik | 67:c360a2b2c948 | 51 | *msgPtr = msg; |
| vwochnik | 67:c360a2b2c948 | 52 | _mail.put(msgPtr); |
| vwochnik | 65:a62dbef2f924 | 53 | } |
| vwochnik | 65:a62dbef2f924 | 54 | |
| vwochnik | 65:a62dbef2f924 | 55 | void DeviceFeedback::thread() |
| vwochnik | 65:a62dbef2f924 | 56 | { |
| vwochnik | 65:a62dbef2f924 | 57 | osEvent evt; uint8_t *msg; |
| vwochnik | 65:a62dbef2f924 | 58 | bool relayState = false; |
| vwochnik | 65:a62dbef2f924 | 59 | |
| vwochnik | 65:a62dbef2f924 | 60 | while (true) { |
| vwochnik | 65:a62dbef2f924 | 61 | if ((evt = _mail.get(1000)).status == osEventMail) { |
| vwochnik | 65:a62dbef2f924 | 62 | msg = (uint8_t*)evt.value.p; |
| vwochnik | 65:a62dbef2f924 | 63 | switch (*msg) { |
| vwochnik | 67:c360a2b2c948 | 64 | case MSG_BEEP_SUCCESS: |
| vwochnik | 67:c360a2b2c948 | 65 | for (float i=2000.0; i<10000.0; i+=2000.0) { |
| vwochnik | 67:c360a2b2c948 | 66 | _speaker.period(1.0/i); |
| vwochnik | 67:c360a2b2c948 | 67 | _speaker = 0.5; |
| vwochnik | 67:c360a2b2c948 | 68 | Thread::wait(200); |
| vwochnik | 67:c360a2b2c948 | 69 | _speaker = 0.0; |
| vwochnik | 67:c360a2b2c948 | 70 | Thread::wait(50); |
| vwochnik | 67:c360a2b2c948 | 71 | } |
| vwochnik | 67:c360a2b2c948 | 72 | break; |
| vwochnik | 67:c360a2b2c948 | 73 | case MSG_BEEP_FAILURE: |
| vwochnik | 67:c360a2b2c948 | 74 | for (float i=10000.0; i>2000.0; i-=2000.0) { |
| vwochnik | 67:c360a2b2c948 | 75 | _speaker.period(1.0/i); |
| vwochnik | 67:c360a2b2c948 | 76 | _speaker = 0.5; |
| vwochnik | 67:c360a2b2c948 | 77 | Thread::wait(200); |
| vwochnik | 67:c360a2b2c948 | 78 | _speaker = 0.0; |
| vwochnik | 67:c360a2b2c948 | 79 | Thread::wait(50); |
| vwochnik | 67:c360a2b2c948 | 80 | } |
| vwochnik | 67:c360a2b2c948 | 81 | break; |
| vwochnik | 65:a62dbef2f924 | 82 | case MSG_CLOSE_RELAY: |
| vwochnik | 65:a62dbef2f924 | 83 | if (!relayState) { |
| vwochnik | 65:a62dbef2f924 | 84 | relayState = true; |
| xinlei | 76:b07effe83fb8 | 85 | // for (float i=2000.0; i<10000.0; i+=100) { |
| xinlei | 76:b07effe83fb8 | 86 | // _speaker.period(1.0/i); |
| xinlei | 76:b07effe83fb8 | 87 | // _speaker = 0.5; |
| xinlei | 76:b07effe83fb8 | 88 | // Thread::wait(20); |
| xinlei | 76:b07effe83fb8 | 89 | // } |
| xinlei | 76:b07effe83fb8 | 90 | // _speaker = 0.0; |
| vwochnik | 65:a62dbef2f924 | 91 | } |
| vwochnik | 65:a62dbef2f924 | 92 | break; |
| vwochnik | 65:a62dbef2f924 | 93 | case MSG_OPEN_RELAY: |
| vwochnik | 65:a62dbef2f924 | 94 | if (relayState) { |
| vwochnik | 65:a62dbef2f924 | 95 | relayState = false; |
| xinlei | 76:b07effe83fb8 | 96 | // for (float i=10000.0; i>2000.0; i-=100) { |
| xinlei | 76:b07effe83fb8 | 97 | // _speaker.period(1.0/i); |
| xinlei | 76:b07effe83fb8 | 98 | // _speaker = 0.5; |
| xinlei | 76:b07effe83fb8 | 99 | // Thread::wait(20); |
| xinlei | 76:b07effe83fb8 | 100 | // } |
| xinlei | 76:b07effe83fb8 | 101 | // _speaker = 0.0; |
| vwochnik | 65:a62dbef2f924 | 102 | } |
| vwochnik | 65:a62dbef2f924 | 103 | break; |
| vwochnik | 65:a62dbef2f924 | 104 | } |
| vwochnik | 65:a62dbef2f924 | 105 | _mail.free(msg); |
| vwochnik | 65:a62dbef2f924 | 106 | } |
| vwochnik | 65:a62dbef2f924 | 107 | |
| xinlei | 76:b07effe83fb8 | 108 | // if (relayState) { |
| xinlei | 76:b07effe83fb8 | 109 | // _speaker.period(1.0/10000); |
| xinlei | 76:b07effe83fb8 | 110 | // _speaker = 0.5; |
| xinlei | 76:b07effe83fb8 | 111 | // Thread::wait(20); |
| xinlei | 76:b07effe83fb8 | 112 | // _speaker = 0.0; |
| xinlei | 76:b07effe83fb8 | 113 | // } |
| vwochnik | 65:a62dbef2f924 | 114 | } |
| vwochnik | 65:a62dbef2f924 | 115 | } |
| vwochnik | 65:a62dbef2f924 | 116 | |
| vwochnik | 65:a62dbef2f924 | 117 | void DeviceFeedback::thread_func(void const *arg) |
| vwochnik | 65:a62dbef2f924 | 118 | { |
| vwochnik | 65:a62dbef2f924 | 119 | DeviceFeedback *that; |
| vwochnik | 65:a62dbef2f924 | 120 | that = (DeviceFeedback*)arg; |
| vwochnik | 65:a62dbef2f924 | 121 | that->thread(); |
| vwochnik | 65:a62dbef2f924 | 122 | } |
