Syggestions

Dependencies:   CheckRTC LPS25H hts221

Fork of ELEC350-extended-referral2 by satbir panesar

Revision:
41:ce3d6fb38d3b
Parent:
40:426cd176ce80
Child:
42:4bf55ab88fbc
--- a/main.cpp	Thu Nov 16 01:06:41 2017 +0000
+++ b/main.cpp	Fri Nov 17 14:40:45 2017 +0000
@@ -3,7 +3,12 @@
 #include "hts221.h"
 #include "LPS25H.h"
 #include <sstream>
-//#include "CheckRTC.h"
+#define READALL_OFF 1
+#define SETTIME_OFF 2
+#define SETT_OFF    4
+#define READ_OFF    7   
+#define ALL_OFF     9  
+
 
 
 DigitalOut myled(LED1);
@@ -33,42 +38,77 @@
 void function1();
 void function2();
 void function3();
+void function4();
 
 Thread t1;
 Thread t2;
 Thread t3;
 Thread t4;
+Thread t5;
 
 osThreadId idMain;
 osThreadId id1;
+osThreadId id2;
+osThreadId id3;
+osThreadId id4;
+
+   
 
 void function1()
 {
+    while (true){
     char buffer [128];
     scanf("%127s", buffer);
     string buffer_str(buffer);
+    char date [32];
+    strftime(date, 32, "%Y/%m/%d %a", localtime(&seconds));
     
-    /*--------------If 'A' is pressed then all sensor data is diplayed---------------------*/
     if(buffer_str=="READALL") {
         humidity.ReadTempHumi(&tempCelsius, &humi); // reads temperature and humity levels
         barometer.get(); // gets barometer readings
         // displays all the variables of time, date, temperature, humidity and all the barometric readings to the serial
         printf("%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());
         myled = 1; // LED is ON
-        Thread::wait(200); // 200 ms NB 'Thread::wait(int d);' !!! d is in milliseconds!
-        myled = 0; // LED is OFF
-        Thread::wait(100); // 100 ms
-    }
-    /*-------------- if 'T' is pressed then the time and date are set to the UTC below------------------------*/
+        t2.signal_set(READALL_OFF);
+        }
+        Thread::wait(200);
+        //Thread::wait(200); // 200 ms NB 'Thread::wait(int d);' !!! d is in milliseconds!
+        //myled = 0; // LED is OFF
+        //Thread::wait(100); // 100 ms
+        }
+}
+void function2()
+{
+    while (true){
+    Thread::signal_wait(READALL_OFF);    
+    char buffer [128];
+    scanf("%127s", buffer);
+    string buffer_str(buffer);
+    char date [32];
+    strftime(date, 32, "%Y/%m/%d %a", localtime(&seconds));
     if(buffer_str=="SETTIME") {
         set_time(1508268288);
         printf("time and date updated to %s %s\n\r", time, date);
         myled = 1;
-        Thread::wait(200);
-        myled = 0;
-        Thread::wait(100);
-    }
-    /*-------------if 's' is pressed, 5 sample of data are taken and stored to the RAM every second-------------------------*/
+        
+        t3.signal_set(SETTIME_OFF);
+        }
+        //Thread::wait(200);
+        //Thread::wait(200);
+        //myled = 0;
+        //Thread::wait(100);
+        }
+}
+
+void function3()
+{
+    while (true){
+    Thread::signal_wait(SETTIME_OFF);    
+    char buffer [128];
+    scanf("%127s", buffer);
+    string buffer_str(buffer);
+    char date [32];
+    strftime(date, 32, "%Y/%m/%d %a", localtime(&seconds));
     if(buffer_str=="SETT") {
         for (count = 0; count < 5; count++) {
             sz = snprintf(NULL, 0,"%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());
@@ -77,33 +117,50 @@
             printf("%s\n\r",buf);
             printf("written to memory\n\r");
             myled = 1;
-            Thread::wait(200);
-            myled = 0;
-            Thread::wait(100);
-            wait(1);
-        }
+            t4.signal_set(SETT_OFF);
+            }
+            //Thread::wait(200);
+            //myled = 0;
+            //Thread::wait(100);
+            //wait(1);
+            }
+            }
+}
+void function4()
+{
+        while (true){
+    Thread::signal_wait(SETT_OFF);    
+    char buffer [128];
+    scanf("%127s", buffer);
+    string buffer_str(buffer);
+    char date [32];
+    strftime(date, 32, "%Y/%m/%d %a", localtime(&seconds));
         if(buffer_str=="READ") {
             printf("%s\n\r", buf);
             myled = 1;
-            Thread::wait(200);
-            myled = 0;
-            Thread::wait (100);
+            t5.signal_set(READ_OFF);
+            }
+            //Thread::wait(200);
+            //myled = 0;
+            //Thread::wait (100);
         }
     }
-}
 
 int main()
 {
     pc.baud(9600); //sets baud rate to 9600
     idMain = osThreadGetId();
     t1.start(function1);
+    t2.start(function2);
+    t3.start(function3);
+    t4.start(function4);
     id1 = t1.gettid();
-
+    id2 = t2.gettid();
+    id3 = t3.gettid();
+    id4 = t4.gettid();
     time_t seconds = time(NULL);
     char time [32];
-    char date [32];
     strftime(time, 32, "%H:%M:%S %p", localtime(&seconds));
-    strftime(date, 32, "%Y/%m/%d %a", localtime(&seconds));
     humidity.init();
     humidity.calib();
     printf("Type SETTIME to set time and date [enter] \n\r");
@@ -120,6 +177,7 @@
         char buffer [128];
         scanf("%127s", buffer);
         string buffer_str(buffer);
+        osSignalWait(ALL_OFF,osWaitForever);
 
 
         if(buffer_str=="?") {