Semaphore attempt ben

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

Revision:
0:bedc25613430
Child:
1:8eb0ee57df9f
diff -r 000000000000 -r bedc25613430 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Apr 20 02:19:40 2020 +0000
@@ -0,0 +1,120 @@
+#include "mbed.h"
+#include "rtos.h"
+#include "ATParser.h"
+#include "uLCD_4DGL.h"
+#include "SDFileSystem.h"
+//#include "wave_player.h"
+#include <string>
+#include <iostream> 
+using namespace std;
+
+//General setups
+DigitalOut cmdMode(p18);
+Serial pc(USBTX, USBRX);
+BufferedSerial ble(p13,p14);
+DigitalOut cmdstuff(p18);
+uLCD_4DGL uLCD(p28,p27,p30);
+SDFileSystem sd(p5, p6, p7, p8, "sd");
+
+//AT command data handlers
+char delimiter[] = "\r\n";
+int buffer_size = 256;
+int timeout = 100;
+bool debug = false;
+ATParser at(ble, delimiter, buffer_size, timeout, debug);
+char buffer[10];
+volatile int risk_level = 0;
+
+//RTOS
+Mutex mutex_lock;
+
+//Global Data points and arrays
+int averageCount = 0;
+volatile int RSSI_array[15];
+
+
+int calculate_average(volatile int *input, int size){
+    int average;
+    for(int i = 0; i< size; i++){
+        average = average + input[i];
+    }
+    average = average/size;
+    return average;
+}
+
+void parse_RSSI(){
+    if(buffer[0] == '-'){
+        pc.printf("RSSI: ");
+        pc.putc(buffer[1]);
+        pc.putc(buffer[2]);
+        pc.printf("\n");
+        int digit1 = buffer[1] - 48;
+        int digit2 = buffer[2] - 48;
+        int total = 10*digit1 + digit2;
+        if (averageCount <= 15){
+            RSSI_array[averageCount] = total;
+        }
+        averageCount++;
+        
+        if(averageCount > 15 && buffer[0] == '-'){
+            averageCount = 0;
+            int average = calculate_average(RSSI_array, 15);
+            if(average < 55){
+                risk_level = 3;
+            }else if(average > 55 && average < 70) {
+                risk_level = 2;
+            }else if(average > 70 && average < 90) {
+                risk_level = 1;
+            }
+            else{
+               risk_level = 0; 
+            }
+        }
+        pc.printf("Risk level: ");
+        pc.printf("%i\n", risk_level);
+    }else{
+        pc.printf("Disconnected\n");
+        
+    }
+}
+
+void speaker_alarm(){
+ 
+}
+
+void logging_SD_card(){
+ 
+}
+
+void blink_leds(){
+ 
+}
+
+void display_ulcd(){
+
+}
+ 
+int main()
+{
+    cmdstuff = 1;
+    at.send("AT") && at.recv("OK");
+    at.send("AT+AB ChangeDefaultBaud [9600]", 3) && at.recv("OK");
+    pc.baud(9600);
+    ble.baud(9600);
+    
+    //Thread SD_Thread();
+    //Thread ULCD_Thread();
+    //Thread LED_Thread();
+    //Thread Speaker_Thread();
+    
+    while(1) {
+        //wait(0.05);
+        at.send("AT+BLEGETRSSI") && at.read(buffer, 10);
+        /*for(int i = 0; i < 10; i++){
+            pc.putc(buffer[i]);
+        }*/
+        parse_RSSI();
+        //pc.putc("\n");
+        //pc.putc();   
+    }
+}
\ No newline at end of file