Vincent Wochnik / Mbed 2 deprecated MbedSmartRestMain

Dependencies:   C027 C027_Support mbed mbed-rtos MbedSmartRest LM75B MMA7660 C12832

Fork of MbedSmartRestTest by Vincent Wochnik

Committer:
vwochnik
Date:
Mon Feb 10 15:46:26 2014 +0000
Revision:
6:642e7c233e83
Child:
7:f77afd49c35d
fix

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vwochnik 6:642e7c233e83 1 #include "common.h"
vwochnik 6:642e7c233e83 2 #include "StaticData.h"
vwochnik 6:642e7c233e83 3 #include "ComposedRecord.h"
vwochnik 6:642e7c233e83 4 #include "CharValue.h"
vwochnik 6:642e7c233e83 5 #include "IntegerValue.h"
vwochnik 6:642e7c233e83 6 #include "FloatValue.h"
vwochnik 6:642e7c233e83 7
vwochnik 6:642e7c233e83 8 const char * const serialNumber = "ublox-123456789";
vwochnik 6:642e7c233e83 9 StaticData srtpl(
vwochnik 6:642e7c233e83 10 // get device by identity
vwochnik 6:642e7c233e83 11 // Usage: 100,<SERIAL/NR>
vwochnik 6:642e7c233e83 12 "10,100,GET,/identity/externalIds/c8y_Serial/%%,,application/vnd.com.nsn.cumulocity.externalId+json,%%,STRING,\r\n"
vwochnik 6:642e7c233e83 13 // get device id from identity
vwochnik 6:642e7c233e83 14 // Response: 200,<DEVICE/ID>
vwochnik 6:642e7c233e83 15 "11,200,\"$.managedObject\",,\"$.id\"\r\n"
vwochnik 6:642e7c233e83 16 // Create device
vwochnik 6:642e7c233e83 17 // Usage: 101,<SERIAL/NR>
vwochnik 6:642e7c233e83 18 "10,101,POST,/inventory/managedObjects,application/vnd.com.nsn.cumulocity.managedObject+json,application/vnd.com.nsn.cumulocity.managedObject+json,%%,STRING,\"{\"\"name\"\":\"\"Curl 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"
vwochnik 6:642e7c233e83 19 // Get device id
vwochnik 6:642e7c233e83 20 // Response: 201,<DEVICE/ID>
vwochnik 6:642e7c233e83 21 "11,201,,\"$.c8y_IsDevice\",\"$.id\"\r\n"
vwochnik 6:642e7c233e83 22 // Insert global ID
vwochnik 6:642e7c233e83 23 // Usage: 102,<DEVICE/ID>,<SERIAL/NR>
vwochnik 6:642e7c233e83 24 "10,102,POST,/identity/globalIds/%%/externalIds,application/vnd.com.nsn.cumulocity.externalId+json,application/vnd.com.nsn.cumulocity.externalId+json,%%,UNSIGNED STRING,\"{\"\"type\"\":\"\"c8y_Serial\"\",\"\"externalId\"\":\"\"%%\"\"}\"\r\n"
vwochnik 6:642e7c233e83 25 // Insert measurement
vwochnik 6:642e7c233e83 26 // USAGE: 103,<DEVICE/ID>,<RSSI>,<BER>
vwochnik 6:642e7c233e83 27 "10,103,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"
vwochnik 6:642e7c233e83 28 );
vwochnik 6:642e7c233e83 29
vwochnik 6:642e7c233e83 30 long existing();
vwochnik 6:642e7c233e83 31 long create();
vwochnik 6:642e7c233e83 32 bool identify(long deviceId);
vwochnik 6:642e7c233e83 33 bool measurement(long deviceId, double rssi, int ber);
vwochnik 6:642e7c233e83 34
vwochnik 6:642e7c233e83 35 MbedSmartRest client("http://developer.cumulocity.com/s", "vaillant/admin", "klanpi", "com_u-blox_C027_REV-A_0.3");
vwochnik 6:642e7c233e83 36 //MbedSmartRest client("http://nocore.info:8888/", "vaillant/admin", "klanpi", "com_cumulocity_MbedTestDevice_2.0");
vwochnik 6:642e7c233e83 37
vwochnik 6:642e7c233e83 38 int program(void)
vwochnik 6:642e7c233e83 39 {
vwochnik 6:642e7c233e83 40 long deviceId; double rssi; int ber;
vwochnik 6:642e7c233e83 41
vwochnik 6:642e7c233e83 42 puts("Hello!");
vwochnik 6:642e7c233e83 43
vwochnik 6:642e7c233e83 44 puts("Bootstrapping");
vwochnik 6:642e7c233e83 45 if (client.bootstrap(srtpl) != SMARTREST_SUCCESS) {
vwochnik 6:642e7c233e83 46 puts("Bootstrapping failed.");
vwochnik 6:642e7c233e83 47 return 2;
vwochnik 6:642e7c233e83 48 }
vwochnik 6:642e7c233e83 49
vwochnik 6:642e7c233e83 50 puts("Starting action...");
vwochnik 6:642e7c233e83 51
vwochnik 6:642e7c233e83 52 if ((deviceId = existing()) == 0) {
vwochnik 6:642e7c233e83 53 deviceId = create();
vwochnik 6:642e7c233e83 54 if (deviceId != 0)
vwochnik 6:642e7c233e83 55 identify(deviceId);
vwochnik 6:642e7c233e83 56 }
vwochnik 6:642e7c233e83 57
vwochnik 6:642e7c233e83 58 printf("Device ID: %ld\r\n", deviceId);
vwochnik 6:642e7c233e83 59
vwochnik 6:642e7c233e83 60 if (deviceId != 0) {
vwochnik 6:642e7c233e83 61 rssi = -50;
vwochnik 6:642e7c233e83 62 ber = 50;
vwochnik 6:642e7c233e83 63
vwochnik 6:642e7c233e83 64 while (true) {
vwochnik 6:642e7c233e83 65 printf("[MEASUREMENT] RSSI: %lf, BER: %d %%\n", rssi, ber);
vwochnik 6:642e7c233e83 66 measurement(deviceId, rssi, ber);
vwochnik 6:642e7c233e83 67 wait(60000);
vwochnik 6:642e7c233e83 68 }
vwochnik 6:642e7c233e83 69 }
vwochnik 6:642e7c233e83 70
vwochnik 6:642e7c233e83 71 return 0;
vwochnik 6:642e7c233e83 72 }
vwochnik 6:642e7c233e83 73
vwochnik 6:642e7c233e83 74 long existing()
vwochnik 6:642e7c233e83 75 {
vwochnik 6:642e7c233e83 76 ComposedRecord newMoRec(true); // set copy=true b/c tmp objects
vwochnik 6:642e7c233e83 77 ParsedRecord received;
vwochnik 6:642e7c233e83 78
vwochnik 6:642e7c233e83 79 puts("Checking for device existance...");
vwochnik 6:642e7c233e83 80
vwochnik 6:642e7c233e83 81 newMoRec.add(IntegerValue(100)).add(CharValue(serialNumber));
vwochnik 6:642e7c233e83 82
vwochnik 6:642e7c233e83 83 if (client.send(newMoRec) != SMARTREST_SUCCESS) {
vwochnik 6:642e7c233e83 84 puts("Send failed.");
vwochnik 6:642e7c233e83 85 return 0;
vwochnik 6:642e7c233e83 86 }
vwochnik 6:642e7c233e83 87
vwochnik 6:642e7c233e83 88 if (client.receive(received) != SMARTREST_SUCCESS) {
vwochnik 6:642e7c233e83 89 puts("No device found.");
vwochnik 6:642e7c233e83 90 return 0;
vwochnik 6:642e7c233e83 91 }
vwochnik 6:642e7c233e83 92
vwochnik 6:642e7c233e83 93 if (received.values() == 0) {
vwochnik 6:642e7c233e83 94 puts("Received no values.");
vwochnik 6:642e7c233e83 95 return 0;
vwochnik 6:642e7c233e83 96 }
vwochnik 6:642e7c233e83 97 if (received.value(0).integerValue() == 50) {
vwochnik 6:642e7c233e83 98 client.stop();
vwochnik 6:642e7c233e83 99 return 0;
vwochnik 6:642e7c233e83 100 }
vwochnik 6:642e7c233e83 101
vwochnik 6:642e7c233e83 102 if (received.value(0).integerValue() != 200) {
vwochnik 6:642e7c233e83 103 puts("Bad response.");
vwochnik 6:642e7c233e83 104 return 0;
vwochnik 6:642e7c233e83 105 }
vwochnik 6:642e7c233e83 106
vwochnik 6:642e7c233e83 107 client.stop();
vwochnik 6:642e7c233e83 108 return received.value(2).integerValue();
vwochnik 6:642e7c233e83 109 }
vwochnik 6:642e7c233e83 110
vwochnik 6:642e7c233e83 111 long create()
vwochnik 6:642e7c233e83 112 {
vwochnik 6:642e7c233e83 113 ComposedRecord newMoRec(true); // set copy=true b/c tmp objects
vwochnik 6:642e7c233e83 114 ParsedRecord received;
vwochnik 6:642e7c233e83 115
vwochnik 6:642e7c233e83 116 puts("Creating device...");
vwochnik 6:642e7c233e83 117
vwochnik 6:642e7c233e83 118 newMoRec.add(IntegerValue(101)).add(CharValue(serialNumber));
vwochnik 6:642e7c233e83 119
vwochnik 6:642e7c233e83 120 if (client.send(newMoRec) != SMARTREST_SUCCESS) {
vwochnik 6:642e7c233e83 121 puts("Send failed.");
vwochnik 6:642e7c233e83 122 return 0;
vwochnik 6:642e7c233e83 123 }
vwochnik 6:642e7c233e83 124
vwochnik 6:642e7c233e83 125 if (client.receive(received) != SMARTREST_SUCCESS) {
vwochnik 6:642e7c233e83 126 puts("No device found.");
vwochnik 6:642e7c233e83 127 return 0;
vwochnik 6:642e7c233e83 128 }
vwochnik 6:642e7c233e83 129
vwochnik 6:642e7c233e83 130 if (received.values() != 3) {
vwochnik 6:642e7c233e83 131 puts("Bad received data.");
vwochnik 6:642e7c233e83 132 return 0;
vwochnik 6:642e7c233e83 133 }
vwochnik 6:642e7c233e83 134
vwochnik 6:642e7c233e83 135 if (received.value(0).integerValue() != 201) {
vwochnik 6:642e7c233e83 136 puts("Bad received data.");
vwochnik 6:642e7c233e83 137 return 0;
vwochnik 6:642e7c233e83 138 }
vwochnik 6:642e7c233e83 139
vwochnik 6:642e7c233e83 140 client.stop();
vwochnik 6:642e7c233e83 141 return received.value(2).integerValue();
vwochnik 6:642e7c233e83 142 }
vwochnik 6:642e7c233e83 143
vwochnik 6:642e7c233e83 144 bool identify(long deviceId)
vwochnik 6:642e7c233e83 145 {
vwochnik 6:642e7c233e83 146 ComposedRecord newMoRec(true); // set copy=true b/c tmp objects
vwochnik 6:642e7c233e83 147 ParsedRecord received;
vwochnik 6:642e7c233e83 148
vwochnik 6:642e7c233e83 149 puts("Adding global identifier...");
vwochnik 6:642e7c233e83 150
vwochnik 6:642e7c233e83 151 newMoRec.add(IntegerValue(102)).add(IntegerValue(deviceId)).add(CharValue(serialNumber));
vwochnik 6:642e7c233e83 152
vwochnik 6:642e7c233e83 153 if (client.send(newMoRec) != SMARTREST_SUCCESS) {
vwochnik 6:642e7c233e83 154 puts("Sending failed.");
vwochnik 6:642e7c233e83 155 return false;
vwochnik 6:642e7c233e83 156 }
vwochnik 6:642e7c233e83 157
vwochnik 6:642e7c233e83 158 if (client.receive(received) != SMARTREST_SUCCESS) {
vwochnik 6:642e7c233e83 159 puts("Failed.");
vwochnik 6:642e7c233e83 160 return false;
vwochnik 6:642e7c233e83 161 }
vwochnik 6:642e7c233e83 162
vwochnik 6:642e7c233e83 163 if (received.values() != 3) {
vwochnik 6:642e7c233e83 164 puts("Received bad data.");
vwochnik 6:642e7c233e83 165 return false;
vwochnik 6:642e7c233e83 166 }
vwochnik 6:642e7c233e83 167
vwochnik 6:642e7c233e83 168 if (received.value(0).integerValue() != 200) {
vwochnik 6:642e7c233e83 169 puts("Received bad data.");
vwochnik 6:642e7c233e83 170 return false;
vwochnik 6:642e7c233e83 171 }
vwochnik 6:642e7c233e83 172
vwochnik 6:642e7c233e83 173 client.stop();
vwochnik 6:642e7c233e83 174 return true;
vwochnik 6:642e7c233e83 175 }
vwochnik 6:642e7c233e83 176
vwochnik 6:642e7c233e83 177 bool measurement(long deviceId, double rssi, int ber)
vwochnik 6:642e7c233e83 178 {
vwochnik 6:642e7c233e83 179 ComposedRecord newMoRec(true); // set copy=true b/c tmp objects
vwochnik 6:642e7c233e83 180
vwochnik 6:642e7c233e83 181 puts("Creating measurement...");
vwochnik 6:642e7c233e83 182
vwochnik 6:642e7c233e83 183 newMoRec.add(IntegerValue(103)).add(IntegerValue(deviceId)).add(FloatValue(rssi, 0)).add(IntegerValue(ber));
vwochnik 6:642e7c233e83 184
vwochnik 6:642e7c233e83 185 if (client.send(newMoRec) != SMARTREST_SUCCESS) {
vwochnik 6:642e7c233e83 186 puts("Send failed.");
vwochnik 6:642e7c233e83 187 return false;
vwochnik 6:642e7c233e83 188 }
vwochnik 6:642e7c233e83 189
vwochnik 6:642e7c233e83 190 client.stop();
vwochnik 6:642e7c233e83 191 return true;
vwochnik 6:642e7c233e83 192 }