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 Vincent Wochnik

Committer:
vwochnik
Date:
Tue Feb 18 13:59:21 2014 +0000
Revision:
14:56da550a1baa
Parent:
12:beb64aa0da86
Child:
15:0ccf0f530a05
fix

Who changed what in which revision?

UserRevisionLine numberNew 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 14:56da550a1baa 10 // Using Arduino pin notation
vwochnik 14:56da550a1baa 11 LM75B tempSensor(SDA, SCL);
vwochnik 12:beb64aa0da86 12 MMA7660 accSensor(p28, p27);
vwochnik 12:beb64aa0da86 13 DigitalIn button(p14);
vwochnik 14:56da550a1baa 14 //C12832 lcdDisplay(D11, D13, D12, D7, D10);
vwochnik 12:beb64aa0da86 15
vwochnik 12:beb64aa0da86 16 Thread worker(thread_callback);
vwochnik 12:beb64aa0da86 17
vwochnik 12:beb64aa0da86 18 uint8_t tempState = S_INIT;
vwochnik 12:beb64aa0da86 19 uint8_t accState = S_INIT;
vwochnik 12:beb64aa0da86 20 uint32_t count = 0;
vwochnik 12:beb64aa0da86 21
vwochnik 12:beb64aa0da86 22 float temperature()
vwochnik 12:beb64aa0da86 23 {
vwochnik 12:beb64aa0da86 24 if ((tempState == S_INIT) && (tempSensor.open()))
vwochnik 12:beb64aa0da86 25 tempState = S_OPEN;
vwochnik 12:beb64aa0da86 26 else
vwochnik 12:beb64aa0da86 27 tempState = S_GONE;
vwochnik 12:beb64aa0da86 28
vwochnik 12:beb64aa0da86 29 if (tempState == S_OPEN)
vwochnik 12:beb64aa0da86 30 return tempSensor.temp();
vwochnik 12:beb64aa0da86 31
vwochnik 12:beb64aa0da86 32 return 0.0;
vwochnik 12:beb64aa0da86 33 }
vwochnik 12:beb64aa0da86 34
vwochnik 12:beb64aa0da86 35 acceleration_t acceleration()
vwochnik 12:beb64aa0da86 36 {
vwochnik 12:beb64aa0da86 37 float data[3];
vwochnik 12:beb64aa0da86 38 acceleration_t ret = { 0.0, 0.0, 0.0 };
vwochnik 12:beb64aa0da86 39
vwochnik 12:beb64aa0da86 40 if ((accState == S_INIT) && (accSensor.testConnection()))
vwochnik 12:beb64aa0da86 41 accState = S_OPEN;
vwochnik 12:beb64aa0da86 42 else
vwochnik 12:beb64aa0da86 43 accState = S_GONE;
vwochnik 12:beb64aa0da86 44
vwochnik 12:beb64aa0da86 45 if (accState == S_OPEN) {
vwochnik 12:beb64aa0da86 46 accSensor.readData(data);
vwochnik 12:beb64aa0da86 47 ret.x = data[0];
vwochnik 12:beb64aa0da86 48 ret.y = data[1];
vwochnik 12:beb64aa0da86 49 ret.z = data[2];
vwochnik 12:beb64aa0da86 50 }
vwochnik 12:beb64aa0da86 51
vwochnik 12:beb64aa0da86 52 return ret;
vwochnik 12:beb64aa0da86 53 }
vwochnik 12:beb64aa0da86 54
vwochnik 12:beb64aa0da86 55 uint32_t counter()
vwochnik 12:beb64aa0da86 56 {
vwochnik 12:beb64aa0da86 57 return count;
vwochnik 12:beb64aa0da86 58 }
vwochnik 12:beb64aa0da86 59
vwochnik 12:beb64aa0da86 60 void thread_callback(void const*)
vwochnik 12:beb64aa0da86 61 {
vwochnik 12:beb64aa0da86 62 bool pressed = false;
vwochnik 12:beb64aa0da86 63
vwochnik 12:beb64aa0da86 64 while (true) {
vwochnik 12:beb64aa0da86 65 if ((!pressed) && (button))
vwochnik 12:beb64aa0da86 66 count++;
vwochnik 12:beb64aa0da86 67 pressed = button;
vwochnik 12:beb64aa0da86 68 }
vwochnik 12:beb64aa0da86 69 }