五、蓝牙实验
5.1.手机APP通过蓝牙控制开发板
首先我们使能蓝牙功能:
/*
*bluetooth api demo
*/
int demo_bt_enable()
{
tls_bt_status_t status;
uint8_t uart_no = 1; //default we use uart 1 for testing;
tls_appl_trace_level = TLS_BT_LOG_VERBOSE;
tls_bt_hci_if_t hci_if;
if(bt_adapter_state == WM_BT_STATE_ON)
{
TLS_BT_APPL_TRACE_VERBOSE("bt system enabled already");
return TLS_BT_STATUS_SUCCESS;
}
tls_open_peripheral_clock(TLS_PERIPHERAL_TYPE_BT);
TLS_BT_APPL_TRACE_VERBOSE("bt system running, uart_no=%d, log_level=%d\r\n", uart_no, tls_appl_trace_level);
hci_if.uart_index = uart_no;
hci_if.band_rate = 115200;
hci_if.data_bit = 8;
hci_if.stop_bit = 1;
hci_if.verify_bit = 0;
status = tls_bt_enable(tls_bt_host_callback_handler, &hci_if, TLS_BT_LOG_NONE);
if((status != TLS_BT_STATUS_SUCCESS) &&(status != TLS_BT_STATUS_DONE) )
{
TLS_BT_APPL_TRACE_ERROR("tls_bt_enable, ret:%s,%d\r\n", tls_bt_status_2_str(status),status);
}
return status;
}
接下来打开蓝牙服务:
int demo_ble_server_on()
{
if(bt_adapter_state == WM_BT_STATE_OFF)
{
TLS_BT_APPL_TRACE_VERBOSE("please enable bluetooth system first\r\n");
return -1;
}
wm_ble_server_api_demo_init();
return 0;
}
测试的时候,我们通过串口终端输入命令使能蓝牙功能,蓝牙服务:
手机安装 nRF Connect(从应用商店下载即可),手机打开蓝牙,使用 nRF connect 扫描到设备(名称默认为WM-XX:XX:XX,即模块 mac 后六位),App 连接设备。
App 点击查看 service:
App 点击向上箭头,写特征值
点击 SEND 后,uart0 打印 app 发的数据:###write cb12;
App 点击向下箭头,读取描述符,app 显示设备发的“Hello”
App 点击 3 个向下箭头,使能 Notifications,App 再次点击 3 个向下箭头,则关闭 Notifications。