SmartREST client reference implementation for the u-blox C027 mbed compatible device.
Dependencies: C027 C027_Support mbed mbed-rtos MbedSmartRest LM75B MMA7660 C12832
Fork of MbedSmartRestTest by
io.cpp@12:beb64aa0da86, 2014-02-14 (annotated)
- Committer:
- vwochnik
- Date:
- Fri Feb 14 12:28:41 2014 +0000
- Revision:
- 12:beb64aa0da86
- Child:
- 14:56da550a1baa
fix
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
vwochnik | 12:beb64aa0da86 | 1 | #include "io.h" |
vwochnik | 12:beb64aa0da86 | 2 | #include "rtos.h" |
vwochnik | 12:beb64aa0da86 | 3 | |
vwochnik | 12:beb64aa0da86 | 4 | #define S_INIT 0 |
vwochnik | 12:beb64aa0da86 | 5 | #define S_OPEN 1 |
vwochnik | 12:beb64aa0da86 | 6 | #define S_GONE 2 |
vwochnik | 12:beb64aa0da86 | 7 | |
vwochnik | 12:beb64aa0da86 | 8 | void thread_callback(void const*); |
vwochnik | 12:beb64aa0da86 | 9 | |
vwochnik | 12:beb64aa0da86 | 10 | // adjust pin numbers |
vwochnik | 12:beb64aa0da86 | 11 | LM75B tempSensor(p28, p27); |
vwochnik | 12:beb64aa0da86 | 12 | MMA7660 accSensor(p28, p27); |
vwochnik | 12:beb64aa0da86 | 13 | DigitalIn button(p14); |
vwochnik | 12:beb64aa0da86 | 14 | |
vwochnik | 12:beb64aa0da86 | 15 | Thread worker(thread_callback); |
vwochnik | 12:beb64aa0da86 | 16 | |
vwochnik | 12:beb64aa0da86 | 17 | uint8_t tempState = S_INIT; |
vwochnik | 12:beb64aa0da86 | 18 | uint8_t accState = S_INIT; |
vwochnik | 12:beb64aa0da86 | 19 | uint32_t count = 0; |
vwochnik | 12:beb64aa0da86 | 20 | |
vwochnik | 12:beb64aa0da86 | 21 | float temperature() |
vwochnik | 12:beb64aa0da86 | 22 | { |
vwochnik | 12:beb64aa0da86 | 23 | if ((tempState == S_INIT) && (tempSensor.open())) |
vwochnik | 12:beb64aa0da86 | 24 | tempState = S_OPEN; |
vwochnik | 12:beb64aa0da86 | 25 | else |
vwochnik | 12:beb64aa0da86 | 26 | tempState = S_GONE; |
vwochnik | 12:beb64aa0da86 | 27 | |
vwochnik | 12:beb64aa0da86 | 28 | if (tempState == S_OPEN) |
vwochnik | 12:beb64aa0da86 | 29 | return tempSensor.temp(); |
vwochnik | 12:beb64aa0da86 | 30 | |
vwochnik | 12:beb64aa0da86 | 31 | return 0.0; |
vwochnik | 12:beb64aa0da86 | 32 | } |
vwochnik | 12:beb64aa0da86 | 33 | |
vwochnik | 12:beb64aa0da86 | 34 | acceleration_t acceleration() |
vwochnik | 12:beb64aa0da86 | 35 | { |
vwochnik | 12:beb64aa0da86 | 36 | float data[3]; |
vwochnik | 12:beb64aa0da86 | 37 | acceleration_t ret = { 0.0, 0.0, 0.0 }; |
vwochnik | 12:beb64aa0da86 | 38 | |
vwochnik | 12:beb64aa0da86 | 39 | if ((accState == S_INIT) && (accSensor.testConnection())) |
vwochnik | 12:beb64aa0da86 | 40 | accState = S_OPEN; |
vwochnik | 12:beb64aa0da86 | 41 | else |
vwochnik | 12:beb64aa0da86 | 42 | accState = S_GONE; |
vwochnik | 12:beb64aa0da86 | 43 | |
vwochnik | 12:beb64aa0da86 | 44 | if (accState == S_OPEN) { |
vwochnik | 12:beb64aa0da86 | 45 | accSensor.readData(data); |
vwochnik | 12:beb64aa0da86 | 46 | ret.x = data[0]; |
vwochnik | 12:beb64aa0da86 | 47 | ret.y = data[1]; |
vwochnik | 12:beb64aa0da86 | 48 | ret.z = data[2]; |
vwochnik | 12:beb64aa0da86 | 49 | } |
vwochnik | 12:beb64aa0da86 | 50 | |
vwochnik | 12:beb64aa0da86 | 51 | return ret; |
vwochnik | 12:beb64aa0da86 | 52 | } |
vwochnik | 12:beb64aa0da86 | 53 | |
vwochnik | 12:beb64aa0da86 | 54 | uint32_t counter() |
vwochnik | 12:beb64aa0da86 | 55 | { |
vwochnik | 12:beb64aa0da86 | 56 | return count; |
vwochnik | 12:beb64aa0da86 | 57 | } |
vwochnik | 12:beb64aa0da86 | 58 | |
vwochnik | 12:beb64aa0da86 | 59 | void thread_callback(void const*) |
vwochnik | 12:beb64aa0da86 | 60 | { |
vwochnik | 12:beb64aa0da86 | 61 | bool pressed = false; |
vwochnik | 12:beb64aa0da86 | 62 | |
vwochnik | 12:beb64aa0da86 | 63 | while (true) { |
vwochnik | 12:beb64aa0da86 | 64 | if ((!pressed) && (button)) |
vwochnik | 12:beb64aa0da86 | 65 | count++; |
vwochnik | 12:beb64aa0da86 | 66 | pressed = button; |
vwochnik | 12:beb64aa0da86 | 67 | } |
vwochnik | 12:beb64aa0da86 | 68 | } |