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: mbed mbed-rtos 4DGL-uLCD-SE SDFileSystem ATParser
Diff: main.cpp
- Revision:
- 0:bedc25613430
- Child:
- 1:8eb0ee57df9f
--- /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