Petter Bellander / Mbed 2 deprecated Saab-BT

Dependencies:   mbed

Revision:
4:3041a571b7a7
Parent:
2:10c60edc8573
Child:
5:8e468fef2754
--- a/RN52.cpp	Tue Jan 05 21:32:11 2016 +0000
+++ b/RN52.cpp	Tue Jan 05 22:10:16 2016 +0000
@@ -24,11 +24,20 @@
     printf("Serial baudrate set\r\n");
 }
 
-bool RN52::changed(){
+bool RN52::check_event(RN52_RESULT * rn52_result){
     static bool last = 0;
-    if(last != event_pin) {
+    if((last == 1) && (event_pin == 0)) {
+        get(RN52_GETSTATUS, rn52_result);
+        switch (rn52_result->event) {
+            case RN52_CALLER_ID_EVENT:
+                get(RN52_CALLER_ID, rn52_result);
+                break;
+            case RN52_TRACK_CHANGE_EVENT:
+                get(RN52_TRACK_METADATA, rn52_result);
+                break;
+        }
         last = event_pin;
-        return !event_pin;
+        return 1;   
     }
     last = event_pin;
     return 0;
@@ -74,23 +83,26 @@
 
 bool RN52::get(RN52_COMMAND cmd, RN52_RESULT * result){
     switch (cmd) {
-        case RN52_GETSTATUS:
+        case RN52_GETSTATUS: {
             serial.printf(GETSTATUS);
             capture_response(result->response);
             int response_value = strtoul(result->response, NULL, 16);
             result->media_connected = (response_value & (1 << 10)) >> 10; //byte 0, bit 2
             result->phone_connected = (response_value & (1 << 11)) >> 11; //byte 0, bit 3
             result->connection = (RN52_CONNECTION)(response_value & 0x0F); //byte 1, bits 0-3
-            if((response_value & (1 << 12)) >> 12) { //byte 0, bit 4
-                result->event = RN52_CALLER_ID_EVENT;
-            }
-            else if((response_value & (1 << 13)) >> 13) { //byte 0, bit 5
-                result->event = RN52_TRACK_CHANGE_EVENT;
-            }
-            else {
-                result->event = RN52_NO_EVENT;
+            switch (response_value & 0x3000) {
+                case 0x1000:  //byte 0, bit 4
+                    result->event = RN52_CALLER_ID_EVENT;
+                    break;
+                case 0x2000:  //byte 0, bit 5
+                    result->event = RN52_TRACK_CHANGE_EVENT;
+                    break;
+                default:
+                    result->event = RN52_NO_EVENT;
+                    break;
             }
             break;
+        } //added to create local scope of response_value
         case RN52_CALLER_ID:
             serial.printf(CALLER_ID);
             capture_response(result->response);
@@ -100,6 +112,7 @@
             serial.printf(TRACK_METADATA);
             capture_response(result->response);
             //parse the response
+            break;
         default:
             return 0;
     }