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