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