We are making a bluetooth application for a vehicle.

Dependencies:   BLE_API X_NUCLEO_IDB0XA1 mbed

Fork of BLE_HeartRate_IDB0XA1 by ST

Revision:
28:a56710056f4d
Parent:
27:49f379daad68
Child:
29:e7d4922a4620
--- a/main.cpp	Tue Jun 27 19:44:12 2017 +0000
+++ b/main.cpp	Mon Jul 17 17:16:11 2017 +0000
@@ -19,24 +19,29 @@
 #include "bike_service.h"
 #include "ble/services/BatteryService.h"
 
-int alarm = 0;
+int alarm_activated = 0;
+int alarm_on = 0;
+int alarm_counter = 0;
 
+DigitalOut led_0(PC_6);
+DigitalOut led_1(PC_7);
 DigitalOut buzzer(PC_8);
+DigitalOut rumblr(PC_9);;
 DigitalOut led1(LED1, 1);
 
-const static char     DEVICE_NAME[]        = "HeckBike";
+const static char     DEVICE_NAME[]        = "HeckBike!";
 static const uint16_t uuid16_list[]        = {GattService::UUID_BATTERY_SERVICE,
                                               0x8EC5};//made up UUID for the Heck bike
 
 #define on  0xFFFF
 #define off 0
  
-#define buttonMask 0x006F
+#define buttonMask 0x003F
  
 PortIn sixButtons(PortC, buttonMask);
  
 unsigned char byteOut = 0; 
- 
+unsigned char prevByteOut = 0;
 unsigned char byteIn = 0x08;
 
     uint8_t inputs = 0x00;
@@ -109,44 +114,75 @@
     while (true) {
         // check for trigger from periodicCallback()
         if (triggerSensorPolling && ble.getGapState().connected) {
-            if (outputs & 0x80){
-                if (alarm == 0) {
-                    alarm = 1;
+            if (outputs & 0x01){
+                led_0 = 1;
+                }
+            if ((outputs & 0x01) == 0){
+                led_0 = 0;
+                }
+            if (outputs & 0x02){
+                led_1 = 1;
+                }
+            if ((outputs & 0x02) == 0){
+                led_1 = 0;
+                }
+            if (outputs & 0x04){
+                buzzer = 1;
+                }
+            if ((outputs & 0x04) == 0){
+                buzzer = 0;
                 }
-               
+            if (outputs & 0x08){
+                rumblr = 1;
+                }
+            if ((outputs & 0x08) == 0){
+                rumblr = 0;
+                }
+            if (outputs & 0x10){
+                alarm_activated = 1;
             }
-            else {
-                alarm = 0;
-                buzzer = 0;
+            if ((outputs & 0x10) == 0){
+                alarm_activated = 0;
+            }
+            if (outputs & 0x20){
+                alarm_on = 1;
+            }
+            if ((outputs & 0x20) == 0){
+                alarm_on = 0;
             }
             
             triggerSensorPolling = false;
              
             byteOut = sixButtons & buttonMask;
-
-            // update the ble with the inputs
-            bikeService.updateInputs(byteOut);
-            bikeService.updateTimestamp();
+            if ((byteOut & 0x01) && alarm_activated==1) {
+                alarm_on = 1;
+                }
+            if (byteOut != prevByteOut){
+                // update the ble with the inputs
+                bikeService.updateInputs(byteOut);
+                bikeService.updateTimestamp();
+            }
+            prevByteOut = byteOut;
         } else {
             ble.waitForEvent(); // low power wait for event
         }
         
-        if (alarm) {                                        //Flag set to sound the alarm?
+        if (alarm_activated && alarm_on) {                                        //Flag set to sound the alarm?
             
-            if (alarm++ < 500) {                            //Beep it on and off
+            if (alarm_counter++ < 500) {                            //Beep it on and off
                 buzzer = 1;
+                led_0 = 1;
+                led_1 = 1;
+                rumblr = 1;
             }
             else {
+                if (alarm_counter > 1000){alarm_counter = 0;}
                 buzzer = 0;
+                led_0 = 0;
+                led_1 = 0;
+                rumblr = 0;
             }
-            
-            if (alarm > 1000) {
-                alarm = 1;
-            }  
-            
-        }      
-        
-        
+        }     
     }
 }