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

Revision:
8:940c782eec5e
Parent:
7:f77afd49c35d
Child:
9:5e182f6e5e9b
--- a/program.cpp	Wed Feb 12 11:25:26 2014 +0000
+++ b/program.cpp	Wed Feb 12 12:13:36 2014 +0000
@@ -5,7 +5,13 @@
 #include "IntegerValue.h"
 #include "FloatValue.h"
 
-const char * const serialNumber = "ublox-1231aa8d9";
+long existing();
+long create();
+bool identify(long deviceId);
+bool update(long deviceId);
+void loop(long deviceId);
+bool measurement(long deviceId, double rssi, int ber);
+
 StaticData srtpl(
 // get device by identity
 // Usage: 100,<SERIAL/NR>
@@ -15,7 +21,7 @@
 "11,200,\"$.managedObject\",,\"$.id\"\r\n"
 // Create device
 // Usage: 101,<SERIAL/NR>
-"10,101,POST,/inventory/managedObjects,application/vnd.com.nsn.cumulocity.managedObject+json,application/vnd.com.nsn.cumulocity.managedObject+json,%%,STRING,\"{\"\"name\"\":\"\"Mbed Test Device\"\",\"\"type\"\":\"\"com_yourcompany?CurlDevice_1.0\"\",\"\"c8y_Hardware\"\":{\"\"revision\"\":\"\"1\"\",\"\"model\"\":\"\"Curl Test Device\"\",\"\"serialNumber\"\":\"\"%%\"\"},\"\"c8y_SupportedMeasurements\"\":[\"\"c8y_SignalStrength\"\"],\"\"c8y_IsDevice\"\":{}}\"\r\n"
+"10,101,POST,/inventory/managedObjects,application/vnd.com.nsn.cumulocity.managedObject+json,application/vnd.com.nsn.cumulocity.managedObject+json,%%,STRING,\"{\"\"name\"\":\"\"Mbed Test Device\"\",\"\"type\"\":\"\"com_ublox_C027_REV-A\"\",\"\"c8y_Hardware\"\":{\"\"revision\"\":\"\"1\"\",\"\"model\"\":\"\"Curl Test Device\"\",\"\"serialNumber\"\":\"\"%%\"\"},\"\"c8y_SupportedMeasurements\"\":[\"\"c8y_SignalStrength\"\"],\"\"c8y_RequiredAvailability\"\":{ \"\"responseInterval\"\":15},\"\"c8y_IsDevice\"\":{}}\"\r\n"
 // Get device id
 // Response: 201,<DEVICE/ID>
 "11,201,,\"$.c8y_IsDevice\",\"$.id\"\r\n"
@@ -30,19 +36,15 @@
 "10,104,POST,/measurement/measurements,application/vnd.com.nsn.cumulocity.measurement+json,application/vnd.com.nsn.cumulocity.measurement+json,%%,NOW UNSIGNED NUMBER UNSIGNED,\"{\"\"time\"\":\"\"%%\"\",\"\"source\"\":{\"\"id\"\":\"\"%%\"\"},\"\"type\"\":\"\"c8y_SignalStrength\"\",\"\"c8y_SignalStrength\"\":{\"\"rssi\"\":{\"\"value\"\":%%,\"\"unit\"\":\"\"dBm\"\"},\"\"ber\"\":{\"\"value\"\":%%,\"\"unit\"\":\"\"%\"\"}}}\"\r\n"
 );
 
-long existing();
-long create();
-bool identify(long deviceId);
-bool update(long deviceId);
-bool measurement(long deviceId, double rssi, int ber);
-
-MbedSmartRest client("http://developer.cumulocity.com/s", "vaillant/admin", "klanpi", "com_u-blox_C027_REV-A_0.5");
+const char * const serialNumber = "ublox-2a354bd";
+float interval = 120.0; // send measurements every two minutes
+MbedSmartRest client("http://developer.cumulocity.com/s", "vaillant/admin", "klanpi", "com_u-blox_C027_REV-A_0.6");
 //MbedSmartRest client("http://nocore.info:8888/", "vaillant/admin", "klanpi", "com_cumulocity_MbedTestDevice_2.0");
 
 int program(void)
 {
-    long deviceId; sigq_t *signal;
-    
+    long deviceId; Timer timer;
+
     puts("Hello!");
 
     puts("Bootstrapping");
@@ -64,15 +66,15 @@
         return 3;
 
     printf("Device ID: %ld\r\n", deviceId);
-    
+
+    timer.start();
     while (true) {
-        signal = signalQuality();
-        printf("[MEASUREMENT] RSSI: %lf, BER: %d %%\n", signal->rssi, signal->ber);
-        measurement(deviceId, signal->rssi, signal->ber);
-        wait(2000);
+        timer.reset();
+        loop(deviceId);
+
+        // block remaining number of seconds
+        while (timer.read() < interval);
     }
-
-    return 0;
 }
 
 long existing()
@@ -212,6 +214,12 @@
     return true;
 }
 
+void loop(long deviceId)
+{
+    sigq_t *signal = signalQuality();
+    measurement(deviceId, signal->rssi, signal->ber);
+}
+
 bool measurement(long deviceId, double rssi, int ber)
 {
     ComposedRecord newMoRec(true); // set copy=true b/c tmp objects