那么相应回调函数在哪里呢?
参看如下函数入口,在main.c文件中,单单理解该函数的意思可以理解为,调度!
static voidble_evt_dispatch(ble_evt_t * p_ble_evt)
{
ble_bondmngr_on_ble_evt(p_ble_evt);
ble_conn_params_on_ble_evt(p_ble_evt);
ble_ias_on_ble_evt(&m_ias, p_ble_evt);
ble_lls_on_ble_evt(&m_lls, p_ble_evt);
ble_bas_on_ble_evt(&m_bas, p_ble_evt);
ble_ias_c_on_ble_evt(&m_ias_c,p_ble_evt);
on_ble_evt(p_ble_evt);
}
当某个事件产生时,就会进入该函数,执行相应操作。这里拿简单的on_ble_evt(p_ble_evt)来当例子。
static voidon_ble_evt(ble_evt_t * p_ble_evt)
{
uint32_t err_code;
static uint16_t m_conn_handle =BLE_CONN_HANDLE_INVALID;
switch (p_ble_evt->header.evt_id)
{
case BLE_GAP_EVT_CONNECTED:
……
} 可以发现 on_ble_evt内部是 根据不同的evt_id来执行不同的函数,想验证的话可以在每个case中printf出一个消息
这样就能知道到底是不是执行了该流程。
BLE_GAP_EVT_CONNECTED 很好理解,就是当设备建立连接的时候会进入该函数~在该语句中增加Printf(“BLE_GAP_EVT_CONNECTEDRN");然后编译,debug下咯。
可能需要借助具备BLE的安卓或者苹果手机安装nRFmaster control panel 传送门:自己找,反正它不让发链接让我很生气(提交的时候把东西都删掉了!!!!)!!!!google play自己搜索安装。简单介绍下该工具:可以作为center,搜索所有的BLE设备与它们建立连接,进行服务的发现、对相应特性值进行读写操作。
假设你已经安装好了该软件~
假设你已将源码烧入开发板并全速执行了。
假设你已经打开串口调试工具来显示数据了。
那么你打开手机软件、将会搜索到Nordic_Prox的设备名,点击connect,串口将会打印出消息:BLE_GAP_EVT_CONNECTED
那么恭喜你,BLE从机端(Preipheral)的基本流程你可能稍微有点了解了。
以上简单的BLE工程示例到此结束。