STM32L476

Dependencies:   MbedJSONValue SDFileSystem WConstants mbed-dev DS1820 TinyGPSPlus epd1in54

Fork of A_SSL_Main by SilentSensors

Committer:
WaleedElmughrabi
Date:
Sun Sep 09 23:08:02 2018 +0000
Revision:
8:bc5a3b2ff424
Parent:
6:d30c8e8678c9
Child:
9:4ac09d77e2a0
JSON string saved on memory card

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bcostm 0:eafcd0445e97 1 #include "mbed.h"
WaleedElmughrabi 2:b14aac0ec647 2 #include "stm32l496g_discovery.h"
bcostm 0:eafcd0445e97 3 #include "stm32l496g_discovery_lcd.h"
WaleedElmughrabi 2:b14aac0ec647 4 #include "stm32l496g_discovery_sd.h"
WaleedElmughrabi 2:b14aac0ec647 5 #include "DS1820.h"
WaleedElmughrabi 2:b14aac0ec647 6 #include "epd1in54.h"
WaleedElmughrabi 2:b14aac0ec647 7 #include "stdio.h"
WaleedElmughrabi 4:06edbeb05013 8 #include "math.h"
WaleedElmughrabi 4:06edbeb05013 9 #include "TinyGPSPlus.h"
WaleedElmughrabi 6:d30c8e8678c9 10 #include "SDFileSystem.h"
WaleedElmughrabi 6:d30c8e8678c9 11 #include "errno.h"
WaleedElmughrabi 8:bc5a3b2ff424 12 #include "MbedJSONValue.h"
WaleedElmughrabi 8:bc5a3b2ff424 13 #include <string>
WaleedElmughrabi 4:06edbeb05013 14
WaleedElmughrabi 8:bc5a3b2ff424 15 #define TX5 PB_6
WaleedElmughrabi 8:bc5a3b2ff424 16 #define RX5 PG_10
WaleedElmughrabi 4:06edbeb05013 17 #define GPSBaud 9600
WaleedElmughrabi 4:06edbeb05013 18 #define Serial0Baud 115200
WaleedElmughrabi 6:d30c8e8678c9 19 #define SD_FILE_SYSTEM_H
WaleedElmughrabi 6:d30c8e8678c9 20 SDFileSystem* fs;
WaleedElmughrabi 6:d30c8e8678c9 21 FILE* fp;
WaleedElmughrabi 2:b14aac0ec647 22
WaleedElmughrabi 2:b14aac0ec647 23
WaleedElmughrabi 4:06edbeb05013 24
WaleedElmughrabi 4:06edbeb05013 25 Serial GPSSerial(TX5, RX5);
WaleedElmughrabi 4:06edbeb05013 26 TinyGPSPlus tgps;
WaleedElmughrabi 4:06edbeb05013 27
WaleedElmughrabi 4:06edbeb05013 28 void displayInfo(void);
WaleedElmughrabi 4:06edbeb05013 29
WaleedElmughrabi 4:06edbeb05013 30 int i = 0;
WaleedElmughrabi 4:06edbeb05013 31
WaleedElmughrabi 4:06edbeb05013 32
WaleedElmughrabi 4:06edbeb05013 33
WaleedElmughrabi 2:b14aac0ec647 34 //DS18B20 temperature sensor
WaleedElmughrabi 2:b14aac0ec647 35 Serial serial(USBTX, USBRX);
WaleedElmughrabi 2:b14aac0ec647 36 DS1820 ds1820(PG_15); //pin name connected to the DS1820 data pin
WaleedElmughrabi 2:b14aac0ec647 37 float t;
WaleedElmughrabi 3:bc4495101c7b 38 float tempSerial;
WaleedElmughrabi 3:bc4495101c7b 39 float tCompare = 0;
WaleedElmughrabi 3:bc4495101c7b 40 int ab=1;
WaleedElmughrabi 3:bc4495101c7b 41
WaleedElmughrabi 6:d30c8e8678c9 42 SDFileSystem sd(PI_3, PC_2, PD_3, PB_12, "sd");
WaleedElmughrabi 2:b14aac0ec647 43
WaleedElmughrabi 2:b14aac0ec647 44 //E-ink Display
WaleedElmughrabi 2:b14aac0ec647 45 // Control
WaleedElmughrabi 2:b14aac0ec647 46 PinName rst;
WaleedElmughrabi 2:b14aac0ec647 47 PinName dc;
WaleedElmughrabi 2:b14aac0ec647 48 PinName busy;
WaleedElmughrabi 2:b14aac0ec647 49 //SPI communication
WaleedElmughrabi 2:b14aac0ec647 50 PinName mosi;
WaleedElmughrabi 2:b14aac0ec647 51 PinName miso;
WaleedElmughrabi 2:b14aac0ec647 52 PinName sclk;
WaleedElmughrabi 2:b14aac0ec647 53 PinName cs;
WaleedElmughrabi 2:b14aac0ec647 54 unsigned char frame_black[EPD_HEIGHT*EPD_WIDTH/8];
WaleedElmughrabi 2:b14aac0ec647 55
WaleedElmughrabi 3:bc4495101c7b 56
WaleedElmughrabi 4:06edbeb05013 57 //function to determine if within polygon geofence
WaleedElmughrabi 4:06edbeb05013 58 //first argument is an integer, the rest are floats
WaleedElmughrabi 4:06edbeb05013 59 //The last vertix should be the same as the first vertix
WaleedElmughrabi 4:06edbeb05013 60 int pnpoly(int nvert, float *vertx, float *verty, float testx, float testy)
WaleedElmughrabi 4:06edbeb05013 61 {
WaleedElmughrabi 4:06edbeb05013 62 int i, j, c = 0;
WaleedElmughrabi 4:06edbeb05013 63 for (i = 0, j = nvert-1; i < nvert; j = i++) {
WaleedElmughrabi 4:06edbeb05013 64 if ( ((verty[i]>testy) != (verty[j]>testy)) &&
WaleedElmughrabi 4:06edbeb05013 65 (testx < (vertx[j]-vertx[i]) * (testy-verty[i]) / (verty[j]-verty[i]) + vertx[i]) )
WaleedElmughrabi 4:06edbeb05013 66 c = !c;
WaleedElmughrabi 4:06edbeb05013 67 }
WaleedElmughrabi 4:06edbeb05013 68 return c;
WaleedElmughrabi 4:06edbeb05013 69 }
WaleedElmughrabi 4:06edbeb05013 70
WaleedElmughrabi 4:06edbeb05013 71
WaleedElmughrabi 4:06edbeb05013 72 int inCircle(float radius, float xcentre, float ycentre, float testx, float testy)
WaleedElmughrabi 4:06edbeb05013 73 {
WaleedElmughrabi 4:06edbeb05013 74 float distance;
WaleedElmughrabi 4:06edbeb05013 75 int test;
WaleedElmughrabi 4:06edbeb05013 76 distance = (sqrt((testx-xcentre)*(testx-xcentre)+(testy-ycentre)*(testy-ycentre)));
WaleedElmughrabi 4:06edbeb05013 77
WaleedElmughrabi 4:06edbeb05013 78 if(distance < radius){
WaleedElmughrabi 4:06edbeb05013 79 test = 1;
WaleedElmughrabi 4:06edbeb05013 80 }
WaleedElmughrabi 4:06edbeb05013 81 else{
WaleedElmughrabi 4:06edbeb05013 82 test = 0;
WaleedElmughrabi 4:06edbeb05013 83 }
WaleedElmughrabi 4:06edbeb05013 84 return (test);
WaleedElmughrabi 4:06edbeb05013 85 }
WaleedElmughrabi 4:06edbeb05013 86
WaleedElmughrabi 5:4525141f69d2 87 //GPS acquisition
WaleedElmughrabi 4:06edbeb05013 88 void displayInfo(void)
WaleedElmughrabi 4:06edbeb05013 89 {
WaleedElmughrabi 4:06edbeb05013 90 serial.printf("Location: ");
WaleedElmughrabi 4:06edbeb05013 91 if (tgps.location.isValid())
WaleedElmughrabi 4:06edbeb05013 92 {
WaleedElmughrabi 4:06edbeb05013 93 serial.printf("%3.6f, %3.6f", tgps.location.lat(), tgps.location.lng());
WaleedElmughrabi 4:06edbeb05013 94 }
WaleedElmughrabi 4:06edbeb05013 95 else
WaleedElmughrabi 4:06edbeb05013 96 {
WaleedElmughrabi 4:06edbeb05013 97 serial.printf("INVALID");
WaleedElmughrabi 4:06edbeb05013 98 }
WaleedElmughrabi 4:06edbeb05013 99
WaleedElmughrabi 4:06edbeb05013 100 serial.printf(" - Date/Time: ");
WaleedElmughrabi 4:06edbeb05013 101 if (tgps.date.isValid())
WaleedElmughrabi 4:06edbeb05013 102 {
WaleedElmughrabi 4:06edbeb05013 103 serial.printf("%d/", tgps.date.year());
WaleedElmughrabi 4:06edbeb05013 104 if (tgps.date.month() < 10) serial.printf("0");
WaleedElmughrabi 4:06edbeb05013 105 serial.printf("%d/", tgps.date.month());
WaleedElmughrabi 4:06edbeb05013 106 if (tgps.date.day() < 10) serial.printf("0");
WaleedElmughrabi 4:06edbeb05013 107 serial.printf("%d", tgps.date.day());
WaleedElmughrabi 4:06edbeb05013 108 }
WaleedElmughrabi 4:06edbeb05013 109 else
WaleedElmughrabi 4:06edbeb05013 110 {
WaleedElmughrabi 4:06edbeb05013 111 serial.printf("INVALID");
WaleedElmughrabi 4:06edbeb05013 112 }
WaleedElmughrabi 4:06edbeb05013 113
WaleedElmughrabi 4:06edbeb05013 114 serial.printf(" ");
WaleedElmughrabi 4:06edbeb05013 115 if (tgps.time.isValid())
WaleedElmughrabi 4:06edbeb05013 116 {
WaleedElmughrabi 4:06edbeb05013 117 if (tgps.time.hour() < 10) serial.printf("0");
WaleedElmughrabi 4:06edbeb05013 118 serial.printf("%d:", tgps.time.hour());
WaleedElmughrabi 4:06edbeb05013 119 if (tgps.time.minute() < 10) serial.printf("0");
WaleedElmughrabi 4:06edbeb05013 120 serial.printf("%d:", tgps.time.minute());
WaleedElmughrabi 4:06edbeb05013 121 if (tgps.time.second() < 10) serial.printf("0");
WaleedElmughrabi 4:06edbeb05013 122 serial.printf("%d\r\n", tgps.time.second());
WaleedElmughrabi 4:06edbeb05013 123 }
WaleedElmughrabi 4:06edbeb05013 124 else
WaleedElmughrabi 4:06edbeb05013 125 {
WaleedElmughrabi 4:06edbeb05013 126 serial.printf("INVALID\r\n");
WaleedElmughrabi 4:06edbeb05013 127 }
WaleedElmughrabi 4:06edbeb05013 128 }
WaleedElmughrabi 4:06edbeb05013 129
WaleedElmughrabi 4:06edbeb05013 130
WaleedElmughrabi 6:d30c8e8678c9 131 float getTemp()
WaleedElmughrabi 4:06edbeb05013 132 {
WaleedElmughrabi 6:d30c8e8678c9 133 float t;
WaleedElmughrabi 4:06edbeb05013 134 // getTemp(tRead);
WaleedElmughrabi 4:06edbeb05013 135 if(ds1820.begin()) {
WaleedElmughrabi 4:06edbeb05013 136 ds1820.startConversion();
WaleedElmughrabi 4:06edbeb05013 137 wait(1.0);
WaleedElmughrabi 4:06edbeb05013 138 t = ds1820.read(); // read temperature
WaleedElmughrabi 4:06edbeb05013 139 tCompare;
WaleedElmughrabi 4:06edbeb05013 140 serial.printf("temp = %3.1f\r\n", t); // Display temp on terminal
WaleedElmughrabi 4:06edbeb05013 141
WaleedElmughrabi 4:06edbeb05013 142 } else
WaleedElmughrabi 4:06edbeb05013 143 serial.printf("No DS1820 sensor found!\r\n");
WaleedElmughrabi 4:06edbeb05013 144
WaleedElmughrabi 4:06edbeb05013 145
WaleedElmughrabi 4:06edbeb05013 146
WaleedElmughrabi 4:06edbeb05013 147
WaleedElmughrabi 4:06edbeb05013 148 mosi = PB_5;
WaleedElmughrabi 4:06edbeb05013 149 miso = PB_4;
WaleedElmughrabi 4:06edbeb05013 150 sclk = PA_5;
WaleedElmughrabi 4:06edbeb05013 151 cs = PA_15;
WaleedElmughrabi 4:06edbeb05013 152 rst = PI_6;
WaleedElmughrabi 4:06edbeb05013 153 dc = PG_6;
WaleedElmughrabi 4:06edbeb05013 154 busy = PI_11;
WaleedElmughrabi 4:06edbeb05013 155
WaleedElmughrabi 4:06edbeb05013 156 char cVal[32];
WaleedElmughrabi 4:06edbeb05013 157 //char* t_str;
WaleedElmughrabi 4:06edbeb05013 158 sprintf(cVal,"%.2f", t);
WaleedElmughrabi 4:06edbeb05013 159
WaleedElmughrabi 4:06edbeb05013 160
WaleedElmughrabi 4:06edbeb05013 161
WaleedElmughrabi 4:06edbeb05013 162 memset(frame_black, 0xFF, sizeof(unsigned char)*EPD_HEIGHT*EPD_WIDTH/8);
WaleedElmughrabi 4:06edbeb05013 163 Epd epd = Epd(mosi, miso, sclk, cs, dc, rst, busy);
WaleedElmughrabi 4:06edbeb05013 164
WaleedElmughrabi 4:06edbeb05013 165
WaleedElmughrabi 4:06edbeb05013 166 if (epd.Init(lut_full_update) != 0) {
WaleedElmughrabi 4:06edbeb05013 167 return -1;
WaleedElmughrabi 4:06edbeb05013 168 }
WaleedElmughrabi 4:06edbeb05013 169 /*Write strings to the buffer */
WaleedElmughrabi 4:06edbeb05013 170 epd.DrawStringAt(frame_black, 50, 30, cVal, &Font24, COLORED);
WaleedElmughrabi 4:06edbeb05013 171 epd.DrawStringAt(frame_black, 28, 10, "Temperature", &Font16, COLORED);
WaleedElmughrabi 4:06edbeb05013 172 /* Display the frame_buffer */
WaleedElmughrabi 4:06edbeb05013 173 epd.SetFrameMemory(frame_black, 0, 0, epd.width, epd.height);
WaleedElmughrabi 4:06edbeb05013 174 epd.DisplayFrame();
WaleedElmughrabi 4:06edbeb05013 175 epd.Sleep();
WaleedElmughrabi 4:06edbeb05013 176 return t;
WaleedElmughrabi 4:06edbeb05013 177 }
WaleedElmughrabi 4:06edbeb05013 178
WaleedElmughrabi 8:bc5a3b2ff424 179 int sdCardTest()
WaleedElmughrabi 6:d30c8e8678c9 180 {
WaleedElmughrabi 6:d30c8e8678c9 181 //SD card
WaleedElmughrabi 6:d30c8e8678c9 182 // Create and mount SDFileSystem
WaleedElmughrabi 6:d30c8e8678c9 183 /*fs = new SDFileSystem(PI_3, PC_2, PD_3, PB_12, "sd"); // mosi, miso, sck, cs
WaleedElmughrabi 6:d30c8e8678c9 184 serial.printf("Mounting file system...\r\n");
WaleedElmughrabi 6:d30c8e8678c9 185 int err = fs->mount();
WaleedElmughrabi 6:d30c8e8678c9 186 serial.printf("%s\r\n", (err ? "Failed :(\r\n" : "OK\r\n"));
WaleedElmughrabi 6:d30c8e8678c9 187 if (err)
WaleedElmughrabi 6:d30c8e8678c9 188 return err;
WaleedElmughrabi 6:d30c8e8678c9 189
WaleedElmughrabi 6:d30c8e8678c9 190 // Open the file.
WaleedElmughrabi 6:d30c8e8678c9 191 serial.printf("Opening file '/sd/mytest/sdtest.txt'... ");
WaleedElmughrabi 6:d30c8e8678c9 192 fp = fopen("/sd/mytest/sdtest.txt", "w+");
WaleedElmughrabi 6:d30c8e8678c9 193 serial.printf("%s\r\n", (!fp ? "Failed :(\r\n" : "OK\r\n"));
WaleedElmughrabi 6:d30c8e8678c9 194
WaleedElmughrabi 6:d30c8e8678c9 195 if (!fp) {
WaleedElmughrabi 6:d30c8e8678c9 196 // Check whether directory '/sd/mytest' exists.
WaleedElmughrabi 6:d30c8e8678c9 197 serial.printf("\r\nChecking directory '/sd/mytest'...\r\n");
WaleedElmughrabi 6:d30c8e8678c9 198 struct stat info;
WaleedElmughrabi 6:d30c8e8678c9 199 err = stat("/sd/mytest", &info);
WaleedElmughrabi 6:d30c8e8678c9 200 if (err) {
WaleedElmughrabi 6:d30c8e8678c9 201 serial.printf("Directory '/sd/mytest' does not exist.\r\n");
WaleedElmughrabi 6:d30c8e8678c9 202 serial.printf("Trying to create it...");
WaleedElmughrabi 6:d30c8e8678c9 203 err = mkdir("/sd/mytest", 0777);
WaleedElmughrabi 6:d30c8e8678c9 204 serial.printf("%s\r\n", (err ? "Failed :(\r\n" : "OK\r\n"));
WaleedElmughrabi 6:d30c8e8678c9 205 if (err)
WaleedElmughrabi 6:d30c8e8678c9 206 return err;
WaleedElmughrabi 6:d30c8e8678c9 207 }
WaleedElmughrabi 6:d30c8e8678c9 208
WaleedElmughrabi 6:d30c8e8678c9 209 // Create a new 'sdtest.txt' file.
WaleedElmughrabi 6:d30c8e8678c9 210 serial.printf("File not found, creating a new one...\r\n");
WaleedElmughrabi 6:d30c8e8678c9 211 fp = fopen("/sd/mytest/sdtest.txt", "w+");
WaleedElmughrabi 6:d30c8e8678c9 212 serial.printf("%s\r\n", (!fp ? "Failed :(" : "OK"));
WaleedElmughrabi 6:d30c8e8678c9 213 if (!fp) {
WaleedElmughrabi 6:d30c8e8678c9 214 error("error: %s (%d)\r\n", strerror(errno), -errno);
WaleedElmughrabi 6:d30c8e8678c9 215 return errno;
WaleedElmughrabi 6:d30c8e8678c9 216 }
WaleedElmughrabi 6:d30c8e8678c9 217 }
WaleedElmughrabi 6:d30c8e8678c9 218 for (int i = 0; i < 10; i++) {
WaleedElmughrabi 6:d30c8e8678c9 219 serial.printf("Writing numbers (%d/%d)... ", i, 10);
WaleedElmughrabi 6:d30c8e8678c9 220 err = fprintf(fp, " %d\r\n", i);
WaleedElmughrabi 6:d30c8e8678c9 221 if (err < 0) {
WaleedElmughrabi 6:d30c8e8678c9 222 serial.printf("Fail :(\r\n");
WaleedElmughrabi 8:bc5a3b2ff424 223
WaleedElmughrabi 6:d30c8e8678c9 224 error("error: %s (%d)\r\n", strerror(errno), -errno);
WaleedElmughrabi 6:d30c8e8678c9 225 } else
WaleedElmughrabi 6:d30c8e8678c9 226 serial.printf("OK\r\n");
WaleedElmughrabi 6:d30c8e8678c9 227 }
WaleedElmughrabi 6:d30c8e8678c9 228
WaleedElmughrabi 6:d30c8e8678c9 229 serial.printf("Writing numbers (%d/%d)... OK\r\n\r\n", 10, 10);
WaleedElmughrabi 6:d30c8e8678c9 230 err = fclose(fp);
WaleedElmughrabi 6:d30c8e8678c9 231 serial.printf("Closing file '/sd/mytest/sdtest.txt'... ");
WaleedElmughrabi 6:d30c8e8678c9 232 //serial.printf("%s\r\n", (err ? "Failed :(\r\n" : "OK\r\n"));
WaleedElmughrabi 6:d30c8e8678c9 233 //if (err)
WaleedElmughrabi 6:d30c8e8678c9 234 // return err;
WaleedElmughrabi 6:d30c8e8678c9 235 */
WaleedElmughrabi 6:d30c8e8678c9 236 //Mount the filesystem
WaleedElmughrabi 6:d30c8e8678c9 237 sd.mount();
WaleedElmughrabi 6:d30c8e8678c9 238
WaleedElmughrabi 6:d30c8e8678c9 239 //Perform a write test
WaleedElmughrabi 6:d30c8e8678c9 240 printf("\nWriting to SD card...");
WaleedElmughrabi 6:d30c8e8678c9 241 FILE *fp = fopen("/sd/sdtest.txt", "w");
WaleedElmughrabi 6:d30c8e8678c9 242 if (fp != NULL) {
WaleedElmughrabi 6:d30c8e8678c9 243 fprintf(fp, "We're writing to an SD card!");
WaleedElmughrabi 6:d30c8e8678c9 244 fclose(fp);
WaleedElmughrabi 6:d30c8e8678c9 245 printf("success!\n");
WaleedElmughrabi 6:d30c8e8678c9 246 } else {
WaleedElmughrabi 6:d30c8e8678c9 247 printf("failed!\n");
WaleedElmughrabi 6:d30c8e8678c9 248 }
WaleedElmughrabi 6:d30c8e8678c9 249
WaleedElmughrabi 6:d30c8e8678c9 250 //Perform a read test
WaleedElmughrabi 6:d30c8e8678c9 251 printf("Reading from SD card...");
WaleedElmughrabi 6:d30c8e8678c9 252 fp = fopen("/sd/sdtest.txt", "r");
WaleedElmughrabi 6:d30c8e8678c9 253 if (fp != NULL) {
WaleedElmughrabi 6:d30c8e8678c9 254 char c = fgetc(fp);
WaleedElmughrabi 6:d30c8e8678c9 255 if (c == 'W')
WaleedElmughrabi 6:d30c8e8678c9 256 printf("success!\n");
WaleedElmughrabi 6:d30c8e8678c9 257 else
WaleedElmughrabi 6:d30c8e8678c9 258 printf("incorrect char (%c)!\n", c);
WaleedElmughrabi 6:d30c8e8678c9 259 fclose(fp);
WaleedElmughrabi 6:d30c8e8678c9 260 } else {
WaleedElmughrabi 6:d30c8e8678c9 261 printf("failed!\n");
WaleedElmughrabi 6:d30c8e8678c9 262 }
WaleedElmughrabi 6:d30c8e8678c9 263
WaleedElmughrabi 6:d30c8e8678c9 264 //Unmount the filesystem
WaleedElmughrabi 6:d30c8e8678c9 265 sd.unmount();
WaleedElmughrabi 6:d30c8e8678c9 266
WaleedElmughrabi 6:d30c8e8678c9 267
WaleedElmughrabi 6:d30c8e8678c9 268 }
WaleedElmughrabi 6:d30c8e8678c9 269
WaleedElmughrabi 8:bc5a3b2ff424 270 //ToDo: pass arguments, organise inner subobjects, currently dummy values
WaleedElmughrabi 8:bc5a3b2ff424 271 string jsonSerializeDeviceToSystem()
WaleedElmughrabi 8:bc5a3b2ff424 272 {
WaleedElmughrabi 8:bc5a3b2ff424 273 MbedJSONValue statusReport;
WaleedElmughrabi 8:bc5a3b2ff424 274 std::string s;
WaleedElmughrabi 8:bc5a3b2ff424 275
WaleedElmughrabi 8:bc5a3b2ff424 276 //fill the object
WaleedElmughrabi 8:bc5a3b2ff424 277 statusReport["timestamp"]= "2018-04-23T18:25:43.511Z";
WaleedElmughrabi 8:bc5a3b2ff424 278 statusReport["device"] = "DEVICE-1";
WaleedElmughrabi 8:bc5a3b2ff424 279 statusReport["latitude"]= 57.1234;
WaleedElmughrabi 8:bc5a3b2ff424 280 statusReport["longitude"] = -4.567;
WaleedElmughrabi 8:bc5a3b2ff424 281 statusReport["geoFence"] = 1;
WaleedElmughrabi 8:bc5a3b2ff424 282 statusReport["container"] = 12.3;
WaleedElmughrabi 8:bc5a3b2ff424 283 statusReport["heater"] = 34.5;
WaleedElmughrabi 8:bc5a3b2ff424 284 statusReport["batteryVoltage"] = 4.98;
WaleedElmughrabi 8:bc5a3b2ff424 285 statusReport["network"] = "Vodafone UK";
WaleedElmughrabi 8:bc5a3b2ff424 286 statusReport["signalStrength"] = -89;
WaleedElmughrabi 8:bc5a3b2ff424 287
WaleedElmughrabi 8:bc5a3b2ff424 288 //serialize it into a JSON string
WaleedElmughrabi 8:bc5a3b2ff424 289 s = statusReport.serialize();
WaleedElmughrabi 8:bc5a3b2ff424 290 serial.printf("status: %s\r\n",s );
WaleedElmughrabi 8:bc5a3b2ff424 291 //
WaleedElmughrabi 8:bc5a3b2ff424 292
WaleedElmughrabi 8:bc5a3b2ff424 293 return s;
WaleedElmughrabi 8:bc5a3b2ff424 294 }
WaleedElmughrabi 8:bc5a3b2ff424 295
WaleedElmughrabi 4:06edbeb05013 296 int main()
WaleedElmughrabi 4:06edbeb05013 297 {
WaleedElmughrabi 4:06edbeb05013 298 GPSSerial.baud(GPSBaud);
WaleedElmughrabi 4:06edbeb05013 299 wait(0.001);
WaleedElmughrabi 4:06edbeb05013 300
WaleedElmughrabi 4:06edbeb05013 301
WaleedElmughrabi 4:06edbeb05013 302
WaleedElmughrabi 4:06edbeb05013 303
WaleedElmughrabi 6:d30c8e8678c9 304 //Variables
WaleedElmughrabi 4:06edbeb05013 305 int inpoly;
WaleedElmughrabi 4:06edbeb05013 306 float x[5] = { 1,4,4,1,1};
WaleedElmughrabi 4:06edbeb05013 307 float y[5] = { 1,1,4,4,1};
WaleedElmughrabi 6:d30c8e8678c9 308 float xtest;
WaleedElmughrabi 6:d30c8e8678c9 309 float ytest;
WaleedElmughrabi 8:bc5a3b2ff424 310 char xtestchar[32];
WaleedElmughrabi 8:bc5a3b2ff424 311 char ytestchar[32];
WaleedElmughrabi 6:d30c8e8678c9 312 float cx = 1;
WaleedElmughrabi 6:d30c8e8678c9 313 float cy = 50;
WaleedElmughrabi 6:d30c8e8678c9 314 float r = 15;
WaleedElmughrabi 6:d30c8e8678c9 315 int ans = 0;
WaleedElmughrabi 6:d30c8e8678c9 316 float liquidTemp = 0;
WaleedElmughrabi 8:bc5a3b2ff424 317 std::string srr;
WaleedElmughrabi 6:d30c8e8678c9 318 wait(2);
WaleedElmughrabi 6:d30c8e8678c9 319
WaleedElmughrabi 4:06edbeb05013 320
WaleedElmughrabi 4:06edbeb05013 321 while(1){
WaleedElmughrabi 4:06edbeb05013 322 //inCircle(r, cx, cy, xtest, ytest);
WaleedElmughrabi 4:06edbeb05013 323 //serial.printf("rx = 0x%02X\n", aRxBuffer);
WaleedElmughrabi 4:06edbeb05013 324 //tempSerial = getTemp(t);
WaleedElmughrabi 4:06edbeb05013 325 //inpoly = pnpoly(5,x, y, xtest,ytest);
WaleedElmughrabi 4:06edbeb05013 326 //serial.printf("inpoly = %d\r\n", inpoly);
WaleedElmughrabi 4:06edbeb05013 327 //ans = inCircle(r, cx, cy, xtest, ytest);
WaleedElmughrabi 4:06edbeb05013 328 //serial.printf("distance = %3.1f\r\n", ans);
WaleedElmughrabi 4:06edbeb05013 329 // GPS
WaleedElmughrabi 4:06edbeb05013 330 //if(gps.sample()){
WaleedElmughrabi 4:06edbeb05013 331 // serial.printf("%f\t%c\t%f\t%c\t%f\t%f\t%f\n\r",gps.longitude, gps.ns,gps.latitude,gps.ew, gps.alt, gps.geoid, gps.time);
WaleedElmughrabi 4:06edbeb05013 332 // serial.printf("%d:%d:%d",gps.hour,gps.minute,gps.seconed);
WaleedElmughrabi 4:06edbeb05013 333 // }
WaleedElmughrabi 8:bc5a3b2ff424 334 sdCardTest();
WaleedElmughrabi 4:06edbeb05013 335 while(1) {
WaleedElmughrabi 6:d30c8e8678c9 336 //wait (1);
WaleedElmughrabi 4:06edbeb05013 337
WaleedElmughrabi 8:bc5a3b2ff424 338 /*
WaleedElmughrabi 4:06edbeb05013 339 if (tgps.encode(GPSSerial.getc()))
WaleedElmughrabi 4:06edbeb05013 340 {
WaleedElmughrabi 4:06edbeb05013 341 displayInfo();
WaleedElmughrabi 6:d30c8e8678c9 342 xtest = tgps.location.lng();
WaleedElmughrabi 6:d30c8e8678c9 343 ytest = tgps.location.lat();
WaleedElmughrabi 8:bc5a3b2ff424 344 sprintf(xtestchar,"%.2f", xtest);
WaleedElmughrabi 8:bc5a3b2ff424 345 sprintf(ytestchar,"%.2f", ytest);
WaleedElmughrabi 8:bc5a3b2ff424 346
WaleedElmughrabi 6:d30c8e8678c9 347 serial.printf("\r\n %3.6f, %3.6f, \r\n", ytest, xtest);
WaleedElmughrabi 6:d30c8e8678c9 348 ans = inCircle(r, cx, cy, xtest, ytest);
WaleedElmughrabi 6:d30c8e8678c9 349 wait(5); //little delay to prevent double writing
WaleedElmughrabi 6:d30c8e8678c9 350 liquidTemp = getTemp();
WaleedElmughrabi 6:d30c8e8678c9 351 serial.printf("\r\n In geofence = %d: \r\n", ans);
WaleedElmughrabi 8:bc5a3b2ff424 352 */
WaleedElmughrabi 6:d30c8e8678c9 353
WaleedElmughrabi 8:bc5a3b2ff424 354 srr = jsonSerializeDeviceToSystem();
WaleedElmughrabi 8:bc5a3b2ff424 355 //char srrrr=srr.c_str();
WaleedElmughrabi 8:bc5a3b2ff424 356 //const char srr = sr.c_str();
WaleedElmughrabi 8:bc5a3b2ff424 357
WaleedElmughrabi 8:bc5a3b2ff424 358 sd.mount();
WaleedElmughrabi 8:bc5a3b2ff424 359 FILE *fp = fopen("/sd/logtest.txt", "w");
WaleedElmughrabi 8:bc5a3b2ff424 360 fprintf(fp, srr.c_str());
WaleedElmughrabi 8:bc5a3b2ff424 361 sd.unmount();
WaleedElmughrabi 8:bc5a3b2ff424 362 /*
WaleedElmughrabi 4:06edbeb05013 363 }
WaleedElmughrabi 4:06edbeb05013 364
WaleedElmughrabi 4:06edbeb05013 365 if (millis() > 5000 && tgps.charsProcessed() < 10)
WaleedElmughrabi 4:06edbeb05013 366 {
WaleedElmughrabi 4:06edbeb05013 367 serial.printf("No GPS detected: check wiring.\r\n");
WaleedElmughrabi 4:06edbeb05013 368 // while(true);
WaleedElmughrabi 4:06edbeb05013 369 break;
WaleedElmughrabi 4:06edbeb05013 370 }
WaleedElmughrabi 6:d30c8e8678c9 371
WaleedElmughrabi 4:06edbeb05013 372
WaleedElmughrabi 4:06edbeb05013 373 }
WaleedElmughrabi 4:06edbeb05013 374 serial.printf("%d\r\n",i);
WaleedElmughrabi 4:06edbeb05013 375 i++;
WaleedElmughrabi 4:06edbeb05013 376 wait(1.0);
WaleedElmughrabi 8:bc5a3b2ff424 377 */
WaleedElmughrabi 8:bc5a3b2ff424 378 wait(5);
WaleedElmughrabi 8:bc5a3b2ff424 379
WaleedElmughrabi 4:06edbeb05013 380 }
WaleedElmughrabi 4:06edbeb05013 381
WaleedElmughrabi 4:06edbeb05013 382
WaleedElmughrabi 8:bc5a3b2ff424 383
WaleedElmughrabi 4:06edbeb05013 384 }
WaleedElmughrabi 4:06edbeb05013 385
WaleedElmughrabi 4:06edbeb05013 386
WaleedElmughrabi 4:06edbeb05013 387
WaleedElmughrabi 8:bc5a3b2ff424 388 }