Ben with semaphore test 1
Dependencies: mbed mbed-rtos 4DGL-uLCD-SE SDFileSystem ATParser
Diff: main.cpp
- Revision:
- 5:53a86492622d
- Parent:
- 4:0a11aa484a67
- Child:
- 6:be33395fe424
diff -r 0a11aa484a67 -r 53a86492622d main.cpp --- a/main.cpp Fri Apr 24 21:06:06 2020 +0000 +++ b/main.cpp Fri Apr 24 21:38:36 2020 +0000 @@ -36,6 +36,7 @@ //RTOS Mutex Lock Mutex mutex_lock; +Mutex lcd_lock; //Global Data points and arrays int averageCount = 0; @@ -56,6 +57,7 @@ void parse_RSSI() { mutex_lock.lock(); + lcd_lock.lock(); at.send("AT+BLEGETRSSI") && at.read(buffer, 10); if(buffer[0] == '-') { //datalogged = 1; @@ -71,6 +73,7 @@ } averageCount++; if(averageCount > 15 && buffer[0] == '-') { + averageCount = 0; int average = calculate_average(RSSI_array, 15); if(average < 55) { @@ -83,8 +86,8 @@ temp_risk = 0; } if(risk_level != temp_risk) { - sem.release(); risk_level = temp_risk; + lcd_lock.release(); } } pc.printf("Risk level: "); @@ -119,15 +122,15 @@ void blink_leds() { while(1){ - if(risk_level <= 1 && datalogged){ + if(risk_level <= 1){ greenLED = 1; redLED = 0; yellowLED = 0; - }else if(risk_level == 2 && datalogged){ + }else if(risk_level == 2){ yellowLED = 1; greenLED = 0; redLED = 0; - }else if(risk_level == 3 && datalogged){ + }else if(risk_level == 3){ redLED = 1; yellowLED = 0; greenLED = 0; @@ -145,9 +148,9 @@ uLCD.color(WHITE); mutex_lock.unlock(); while(1){ - sem.wait(); mutex_lock.lock(); - if(risk_level <= 1 && datalogged){ + lcd_lock.lock(); + if(risk_level <= 1){ uLCD.cls(); uLCD.locate(5, 7); uLCD.text_width(2); @@ -155,7 +158,7 @@ uLCD.background_color(GREEN); uLCD.textbackground_color(GREEN); uLCD.printf("Safe"); - }else if(risk_level == 2 && datalogged){ + }else if(risk_level == 2){ uLCD.cls(); uLCD.locate(1, 7); uLCD.text_width(2); @@ -163,7 +166,7 @@ uLCD.background_color(0xFFFF00); uLCD.textbackground_color(0xFFFF00); uLCD.printf("Cautious"); - }else if(risk_level == 3 && datalogged){ + }else if(risk_level == 3){ uLCD.cls(); uLCD.locate(3, 7); uLCD.text_width(2); @@ -176,6 +179,7 @@ uLCD.printf("waiting"); } mutex_lock.unlock(); + lcd_lock.unlock(); } }