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.
BT.cpp
- Committer:
- MwadimeMakokha
- Date:
- 2019-11-14
- Revision:
- 1:940070f92554
- Child:
- 2:83d03d7148a5
File content as of revision 1:940070f92554:
#include "BT.h" Serial* BT::modemSerial =0; BT::BT(Serial &port){ modemSerial = &port; } void BT::get_bt_status(){ send_bt_cmd("AT+BTSTATUS?"); get_response(1000,true); DEBUG_PRINTLN("%s",modem_response); } void BT::power_bt_device(bool on){ if(on)send_bt_cmd("AT+BTPOWER=1"); else send_bt_cmd("AT+BTPOWER=0"); get_response(1000,false); DEBUG_PRINTLN("%s",modem_response); } char BT::bt_scan(){ send_bt_cmd("AT+BTSCAN=1,10"); get_response(10000,true); DEBUG_PRINTLN("%s",modem_response); wait_ms(2000); char* mac_address = get_phone_mac_addr(); return get_phone_id(mac_address); } void BT::bt_pair_device(char id){ modemSerial->printf("AT+BTPAIR=0,%c\n\r",id); get_response(1000,true); DEBUG_PRINTLN("%s",modem_response); } char* BT::get_phone_mac_addr(){ return "74:e6:0f:b1:45:58"; } char BT::get_phone_id(char* addr){ char id=0; bool id_found=false; char* dev_addr; int comma_count =0; int arr_index =0; while(modem_response[arr_index] != 0){ if(comma_count==1)id = modem_response[arr_index++]; if(comma_count==3){ for(int k=0;k<17;k++){ //pcSerial.printf("%c",modem_response[arr_index+k]); dev_addr[k] = modem_response[arr_index+k]; } if(strcmp(dev_addr,addr) == 0){ DEBUG_PRINTLN("id = %c",id); id_found = true; break; } } if(modem_response[arr_index]==',')comma_count++; if(modem_response[arr_index]=='\n')comma_count=0; arr_index++; } return id_found?id:'0'; } void BT::send_bt_cmd(char cmd[]){ modemSerial->printf(cmd); modemSerial->printf("\n\r"); } void BT::get_response(uint16_t timeout,bool is_multiline){ int arr_index=0; while(timeout){ if(arr_index >= 254) break; while(modemSerial->readable()){ char c = modemSerial->getc(); if(c == '\r') continue; if(c=='\n' && arr_index==0){ continue; } if(c=='\n' && !is_multiline){ break; } modem_response[arr_index] = c; arr_index++; } timeout--; wait_ms(1); } modem_response[arr_index] = 0; }