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:
- 11:74844f6ca8cf
- Parent:
- 9:9a4c81493a3d
- Child:
- 13:968af0520530
--- a/RN52.cpp Fri Jan 15 22:10:11 2016 +0000 +++ b/RN52.cpp Thu Jan 28 21:22:08 2016 +0000 @@ -15,9 +15,13 @@ #define CALLER_ID "T\r" #define TRACK_METADATA "AD\r" +#define RESPONSE_TIMEOUT 30 //ms Serial serial(p13, p14); // tx, rx DigitalIn event_pin(p20); +Timer responsetime; +char dummy_response[255]; + void RN52::init(){ serial.baud(115200); @@ -50,39 +54,33 @@ } bool RN52::connect(){ - char response[5]; serial.printf(CONNECT); - return capture_response(response); + return capture_response(dummy_response); } bool RN52::disconnect(){ - char response[5]; serial.printf(DISCONNECT); - return capture_response(response); + return capture_response(dummy_response); } bool RN52::next_track(){ - char response[5]; serial.printf(NEXTTRACK); - return capture_response(response); + return capture_response(dummy_response); } bool RN52::prev_track(){ - char response[5]; serial.printf(PREVTRACK); - return capture_response(response); + return capture_response(dummy_response); } bool RN52::toggle_play(){ - char response[5]; serial.printf(PLAYPAUSE); - return capture_response(response); + return capture_response(dummy_response); } bool RN52::maxvolume(){ - char response[5]; serial.printf(MAXVOLUME); - return capture_response(response); + return capture_response(dummy_response); } bool RN52::get_status(RN52_RESULT * result){ @@ -113,7 +111,9 @@ return 1; } + bool RN52::get_track_metadata(RN52_RESULT * result){ +/* serial.printf(TRACK_METADATA); if(capture_response(result->response)) {//AOK while(result->response[4] != '(') { //time(ms) - always the last one @@ -155,11 +155,13 @@ } clear_serial(); } + */ return 1; } - bool RN52::capture_response(char * str){ + responsetime.reset(); + responsetime.start(); char c = ' '; char n = 0; while(c != '\n') { @@ -168,6 +170,11 @@ str[n] = c; n++; } + else if(responsetime.read_ms() > RESPONSE_TIMEOUT) { + clear_serial(); + printf("timeout occured\r\n last response: %s\r\n", str); + return 0; + } } str[n-2] = '\0'; //terminate string before \r\n return (str[0] == 'A');