Benjamin Leverett / Mbed 2 deprecated Final_Project_2

Dependencies:   mbed mbed-rtos 4DGL-uLCD-SE SDFileSystem ATParser

Files at this revision

API Documentation at this revision

Comitter:
bleverett3
Date:
Fri Apr 24 21:06:06 2020 +0000
Parent:
3:2a4bee05d0c1
Child:
5:53a86492622d
Commit message:
Ben with semaphore test 1

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Fri Apr 24 20:46:56 2020 +0000
+++ b/main.cpp	Fri Apr 24 21:06:06 2020 +0000
@@ -19,6 +19,8 @@
 DigitalOut redLED(p26);
 uLCD_4DGL uLCD(p28,p27,p30);
 SDFileSystem sd(p5, p6, p7, p8, "sd");
+
+Semaphore sem(0);
 //Speaker mySpeaker(p21);
 
 //AT command data handlers
@@ -30,6 +32,7 @@
 ATParser at(ble, delimiter, buffer_size, timeout, debug);
 char buffer[10];
 volatile int risk_level = 0;
+int temp_risk = -1;
 
 //RTOS Mutex Lock
 Mutex mutex_lock;
@@ -55,7 +58,7 @@
     mutex_lock.lock();
     at.send("AT+BLEGETRSSI") && at.read(buffer, 10);
     if(buffer[0] == '-') {
-        datalogged = 1;
+        //datalogged = 1;
         pc.printf("RSSI: ");
         pc.putc(buffer[1]);
         pc.putc(buffer[2]);
@@ -71,13 +74,17 @@
             averageCount = 0;
             int average = calculate_average(RSSI_array, 15);
             if(average < 55) {
-                risk_level = 3;
+                temp_risk = 3;
             } else if(average > 55 && average < 70) {
-                risk_level = 2;
+                temp_risk = 2;
             } else if(average > 70 && average < 90) {
-                risk_level = 1;
+                temp_risk = 1;
             } else {
-                risk_level = 0;
+                temp_risk = 0;
+            }
+            if(risk_level != temp_risk) {
+                sem.release();
+                risk_level = temp_risk;
             }
         }
         pc.printf("Risk level: ");
@@ -138,6 +145,7 @@
     uLCD.color(WHITE);
     mutex_lock.unlock();
     while(1){
+        sem.wait();
         mutex_lock.lock();
         if(risk_level <= 1 && datalogged){
             uLCD.cls();