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.
Diff: RN52.cpp
- 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; }