Full project folder

Dependencies:   GPSLibrary GSM mbed-modifed Storage_Library Temp_Library Wakeup pH_Sensor

Revision:
13:52fba498c00d
Parent:
12:973566676eba
Child:
14:196ed16cd62b
--- a/main.cpp	Mon Nov 30 21:07:03 2015 +0000
+++ b/main.cpp	Wed Dec 02 06:29:20 2015 +0000
@@ -25,7 +25,7 @@
 AnalogIn temperature(TMP_ANALOG);
 
 #define READINGSIZE sizeof(struct reading)
-#define URL "http://requestb.in/sd2o2gsd"
+#define URL "http://requestb.in/1ihfre81"
 
 // Cellular communication global variables
 Adafruit_FONA fona(FONA_TX, FONA_RX, FONA_RST, FONA_RI);
@@ -93,10 +93,16 @@
 }
 
 void setup() {
-    printf("\n=====\nSetup in Full Project\n");
+    wait(2);
     setupPCSerial();
+    wait(2);
+    printf("\n=====\nSetup in Full Project\n");
+    wait(2);
     setupGPS();
+    wait(2);
     setupPH();
+    wait(2);
+    wait(20);
 } 
 
 // Send default message to pH sensor, asking for data.
@@ -144,7 +150,7 @@
 
 // n_queries is the number of times we query the GPS. We need something like 23000 characters.
 void GPSRead(int n_queries) {
-    for(int i = 0; i < 20; i++){
+    for(int i = 0; i < 60; i++){
         wait(1);
         if(myGPS.fix) break;
     }
@@ -197,32 +203,41 @@
     pcSerial.printf("\n");
 }
 
+void changeGSMPowerState()
+{
+    key.write(1);
+    wait(2);
+    key.write(0);
+    wait(2);
+    key.write(1);
+    wait(2);
+}
+
 void setupGSM()
 {
     printf("Starting FONA\n");
-    while(!fona.begin(9600)) {
+    if(!fona.begin(9600)){
+        changeGSMPowerState();
         printf("Cannot find FONA\n");
-        wait(1);
+        wait(2);
     }
-    fona.begin(9600);
+    if(!fona.begin(9600)){
+        changeGSMPowerState(); 
+        return;
+    }
     printf("After begin\n");
     fona.setGPRSNetworkSettings("pwg", "", "");
     printf("After set setting\n");
     bool enable = false;
+    int i = 0;
     while(enable != true) {
+        if(i > 5) break;
+        i++;
         fona.enableGPRS(true);
         fona.enableGPRS(false);
         enable = fona.enableGPRS(true);
     }
     printf("After enable\n");
-    key.write(1);
-}
-
-void changeGSMPowerState()
-{
-    key.write(0);
-    wait(2);
-    key.write(1);
 }
 
 //Found this online and it claims that it resets ADC to work after deepsleep \_O_/
@@ -236,13 +251,15 @@
     HAL_RCC_OscConfig(&RCC_OscInitStruct);  
 }
 
-void enterSleep(int msec)
+void enterSleep(int sec)
 {
     gpsEN.write(0);
-    if(msec > 0) WakeUp::set_ms(msec);
+    wait(2);
+    WakeUp::set(sec);
     deepsleep();
     resetADC();
     gpsEN.write(1);
+    wait(2);
 }
 
 bool sendDataOverHTTP(char* url, uint8_t* data, int dlength)
@@ -342,12 +359,11 @@
 
 bool sendDataToURL(uint8_t* data, int size)
 {
-    changeGSMPowerState();
     setupGSM();
     printf("Setup GSM\n");
     bool res = sendDataOverHTTP(URL, data, size);
-    printf("After sent data\n");
-    changeGSMPowerState();    
+    if(!res) res = sendDataOverHTTP(URL, data, size);
+    printf("After sent data\n");   
     return res;
 }
 
@@ -373,6 +389,7 @@
 int main()
 {
     setup();
+    changeGSMPowerState();
     int nreadings = 0;
     bool toSend = false;
     while (true) {
@@ -388,15 +405,17 @@
         wait(1);
         writeEEPROMbytes((uint8_t *) &lastReadingBuffer, READINGSIZE);
         nreadings++;
-        if(nreadings == 10)
+        changeGSMPowerState();
+        if(nreadings == 5)
             toSend = true;
         if(toSend) {
             struct reading* data = new struct reading[nreadings];
             getEEPROM((uint8_t*) data);
-            char buffer[((8+8+10+10+5*sizeof(int)+8)*nreadings) + 1];
+            int sizeofentry = 8+8+10+10+5*sizeof(int)+8+1;
+            char buffer[(sizeofentry*nreadings) + 1];
             for(int i = 0; i < nreadings; i++)
             {
-                int n = sprintf(buffer, "%8f %8f %10f %10f %d %d %d %d %d", data[i].temperature, data[i].pH, data[i].latitude, data[i].longitude, data[i].day, 
+                int n = sprintf(buffer+sizeofentry*i, "%8f %8f %10f %10f %d %d %d %d %d\t", data[i].temperature, data[i].pH, data[i].latitude, data[i].longitude, data[i].day, 
                                               data[i].month, data[i].year, data[i].hour, data[i].minutes);
                 printf("%s\n", buffer);
                 printf("%d\n", n);
@@ -412,23 +431,8 @@
             }
             delete[] data;
         }
-        //else changeGSMPowerState();
-        /*
-        printf("Reading Size is %d\n", READINGSIZE);
-        printf("ROM Latitude: %f\n", verifier.latitude);
-        printf("ROM Longitude: %f\n", verifier.longitude);
-        printf("ROM pH: %f\n", verifier.pH);
-        printf("ROM Temperature: %f\n", verifier.temperature);
-        printf("ROM Day: %d\n", verifier.day);
-        printf("ROM Month: %d\n", verifier.month);
-        printf("ROM Year: %d\n", verifier.year);
-        printf("ROM Hour: %d\n", verifier.hour);
-        printf("ROM Minutes: %d\n", verifier.minutes);
-        */
-        wait(1);
-        key.write(1);
-        enterSleep(360000);
+        changeGSMPowerState();
+        wait(2);
+        enterSleep(60);
     }
-
-    return 0;
 }
\ No newline at end of file