Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: CheckRTC LPS25H hts221
Fork of ELEC350-extended-referral2 by
Revision 41:ce3d6fb38d3b, committed 2017-11-17
- Comitter:
- spanesar
- Date:
- Fri Nov 17 14:40:45 2017 +0000
- Parent:
- 40:426cd176ce80
- Child:
- 42:4bf55ab88fbc
- Commit message:
- tried doing the threading for the serial commands but only one thread is working but also locks;
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- 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=="?") {
