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@32:56804dd00193, 2014-05-28 (annotated)
- Committer:
- vwochnik
- Date:
- Wed May 28 17:51:12 2014 +0000
- Revision:
- 32:56804dd00193
- Parent:
- 22:3a595f7826af
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 | 32:56804dd00193 | 3 | #include "mbed.h" |
vwochnik | 12:beb64aa0da86 | 4 | |
vwochnik | 15:0ccf0f530a05 | 5 | void timer_callback(void const*); |
vwochnik | 22:3a595f7826af | 6 | void lcd_update(void); |
vwochnik | 12:beb64aa0da86 | 7 | |
vwochnik | 14:56da550a1baa | 8 | // Using Arduino pin notation |
vwochnik | 17:877a9a3148a4 | 9 | C12832 lcdDisplay(D11, D13, D12, D7, D10); |
vwochnik | 17:877a9a3148a4 | 10 | MMA7660 accSensor(SDA,SCL); |
vwochnik | 17:877a9a3148a4 | 11 | LM75B tempSensor(SDA,SCL); |
vwochnik | 17:877a9a3148a4 | 12 | DigitalOut button(D4); |
vwochnik | 19:7bee744fe527 | 13 | AnalogIn meter0(A0); |
vwochnik | 19:7bee744fe527 | 14 | AnalogIn meter1(A1); |
vwochnik | 12:beb64aa0da86 | 15 | |
vwochnik | 15:0ccf0f530a05 | 16 | RtosTimer *timer; |
vwochnik | 15:0ccf0f530a05 | 17 | |
vwochnik | 15:0ccf0f530a05 | 18 | bool tempFound = false, accFound = false; |
vwochnik | 15:0ccf0f530a05 | 19 | uint32_t count = 0; |
vwochnik | 15:0ccf0f530a05 | 20 | bool btnPressed = false; |
vwochnik | 12:beb64aa0da86 | 21 | |
vwochnik | 22:3a595f7826af | 22 | char cSignal[80] = "", cTenant[80] = "", cStatus[80] = ""; |
vwochnik | 22:3a595f7826af | 23 | |
vwochnik | 15:0ccf0f530a05 | 24 | void io_init(void) |
vwochnik | 15:0ccf0f530a05 | 25 | { |
vwochnik | 15:0ccf0f530a05 | 26 | timer = new RtosTimer(&timer_callback, osTimerPeriodic); |
vwochnik | 15:0ccf0f530a05 | 27 | timer->start(50); |
vwochnik | 15:0ccf0f530a05 | 28 | tempFound = tempSensor.open(); |
vwochnik | 15:0ccf0f530a05 | 29 | accFound = accSensor.testConnection(); |
vwochnik | 18:6bce406b3da2 | 30 | |
vwochnik | 18:6bce406b3da2 | 31 | if (!tempFound) |
vwochnik | 18:6bce406b3da2 | 32 | puts("Temperature sensor not found."); |
vwochnik | 18:6bce406b3da2 | 33 | if (!accFound) |
vwochnik | 18:6bce406b3da2 | 34 | puts("Accelerometer not found."); |
vwochnik | 20:ef9cc1b42e9d | 35 | |
vwochnik | 22:3a595f7826af | 36 | lcd_update(); |
vwochnik | 15:0ccf0f530a05 | 37 | } |
vwochnik | 12:beb64aa0da86 | 38 | |
vwochnik | 12:beb64aa0da86 | 39 | float temperature() |
vwochnik | 12:beb64aa0da86 | 40 | { |
vwochnik | 15:0ccf0f530a05 | 41 | if (!tempFound) |
vwochnik | 15:0ccf0f530a05 | 42 | return 0.0; |
vwochnik | 12:beb64aa0da86 | 43 | |
vwochnik | 15:0ccf0f530a05 | 44 | return tempSensor.temp(); |
vwochnik | 12:beb64aa0da86 | 45 | } |
vwochnik | 12:beb64aa0da86 | 46 | |
vwochnik | 12:beb64aa0da86 | 47 | acceleration_t acceleration() |
vwochnik | 12:beb64aa0da86 | 48 | { |
vwochnik | 12:beb64aa0da86 | 49 | float data[3]; |
vwochnik | 12:beb64aa0da86 | 50 | acceleration_t ret = { 0.0, 0.0, 0.0 }; |
vwochnik | 12:beb64aa0da86 | 51 | |
vwochnik | 15:0ccf0f530a05 | 52 | if (accFound) { |
vwochnik | 12:beb64aa0da86 | 53 | accSensor.readData(data); |
vwochnik | 12:beb64aa0da86 | 54 | ret.x = data[0]; |
vwochnik | 12:beb64aa0da86 | 55 | ret.y = data[1]; |
vwochnik | 12:beb64aa0da86 | 56 | ret.z = data[2]; |
vwochnik | 12:beb64aa0da86 | 57 | } |
vwochnik | 12:beb64aa0da86 | 58 | |
vwochnik | 12:beb64aa0da86 | 59 | return ret; |
vwochnik | 12:beb64aa0da86 | 60 | } |
vwochnik | 12:beb64aa0da86 | 61 | |
vwochnik | 12:beb64aa0da86 | 62 | uint32_t counter() |
vwochnik | 12:beb64aa0da86 | 63 | { |
vwochnik | 12:beb64aa0da86 | 64 | return count; |
vwochnik | 12:beb64aa0da86 | 65 | } |
vwochnik | 12:beb64aa0da86 | 66 | |
vwochnik | 19:7bee744fe527 | 67 | double potentiometer(uint8_t n) |
vwochnik | 19:7bee744fe527 | 68 | { |
vwochnik | 19:7bee744fe527 | 69 | switch (n) { |
vwochnik | 19:7bee744fe527 | 70 | case 0: return (double)meter0; |
vwochnik | 19:7bee744fe527 | 71 | case 1: return (double)meter1; |
vwochnik | 19:7bee744fe527 | 72 | default: return 0.0; |
vwochnik | 19:7bee744fe527 | 73 | } |
vwochnik | 19:7bee744fe527 | 74 | } |
vwochnik | 19:7bee744fe527 | 75 | |
vwochnik | 20:ef9cc1b42e9d | 76 | void lcd_signal(int8_t rssi, uint8_t ber) |
vwochnik | 20:ef9cc1b42e9d | 77 | { |
vwochnik | 20:ef9cc1b42e9d | 78 | if ((rssi == 0) && (ber == 0)) |
vwochnik | 22:3a595f7826af | 79 | snprintf(cSignal, 80, "%s", "No signal"); |
vwochnik | 20:ef9cc1b42e9d | 80 | else |
vwochnik | 22:3a595f7826af | 81 | snprintf(cSignal, 80, "RSSI: %d dBm BER: %d %%", rssi, ber); |
vwochnik | 22:3a595f7826af | 82 | lcd_update(); |
vwochnik | 20:ef9cc1b42e9d | 83 | } |
vwochnik | 20:ef9cc1b42e9d | 84 | |
vwochnik | 20:ef9cc1b42e9d | 85 | void lcd_tenant(const char* tenant) |
vwochnik | 20:ef9cc1b42e9d | 86 | { |
vwochnik | 22:3a595f7826af | 87 | snprintf(cTenant, 80, "Tenant: %s", tenant); |
vwochnik | 22:3a595f7826af | 88 | lcd_update(); |
vwochnik | 20:ef9cc1b42e9d | 89 | } |
vwochnik | 20:ef9cc1b42e9d | 90 | |
vwochnik | 20:ef9cc1b42e9d | 91 | void lcd_status(const char* status) |
vwochnik | 20:ef9cc1b42e9d | 92 | { |
vwochnik | 22:3a595f7826af | 93 | snprintf(cStatus, 80, "%s", status); |
vwochnik | 22:3a595f7826af | 94 | lcd_update(); |
vwochnik | 20:ef9cc1b42e9d | 95 | } |
vwochnik | 20:ef9cc1b42e9d | 96 | |
vwochnik | 15:0ccf0f530a05 | 97 | void timer_callback(void const*) |
vwochnik | 12:beb64aa0da86 | 98 | { |
vwochnik | 15:0ccf0f530a05 | 99 | if ((!btnPressed) && (button)) |
vwochnik | 15:0ccf0f530a05 | 100 | count++; |
vwochnik | 15:0ccf0f530a05 | 101 | btnPressed = button; |
vwochnik | 12:beb64aa0da86 | 102 | } |
vwochnik | 22:3a595f7826af | 103 | |
vwochnik | 22:3a595f7826af | 104 | void lcd_update(void) |
vwochnik | 22:3a595f7826af | 105 | { |
vwochnik | 22:3a595f7826af | 106 | lcdDisplay.cls(); |
vwochnik | 22:3a595f7826af | 107 | lcdDisplay.locate(0, 0); |
vwochnik | 22:3a595f7826af | 108 | lcdDisplay.printf("%s\n%s\n%s\n", cSignal, cTenant, cStatus); |
vwochnik | 22:3a595f7826af | 109 | } |