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 Jul 03 18:52:04 2014 +0000
Revision:
35:ee1c6289e617
Parent:
32:56804dd00193
official cumulocity library

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 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 }