Syggestions
Dependencies: CheckRTC LPS25H hts221
Fork of ELEC350-extended-referral2 by
Diff: main.cpp
- Revision:
- 41:ce3d6fb38d3b
- Parent:
- 40:426cd176ce80
- Child:
- 42:4bf55ab88fbc
diff -r 426cd176ce80 -r ce3d6fb38d3b main.cpp --- 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=="?") {