我正在使用DA14681开发一个BLE外围设备的固件,并遇到了ble_gap_disconnect函数工作的问题。固件是USB HID和BLE之间的桥梁,设备作为BLE外设工作。
固件的要求之一是,它应该能够断开连接的智能手机应用程序。
当我用当前连接的连接索引调用ble_gap_disconnect函数时,什么也不会发生。没有断开连接。
这怎么可能呢?
嗨Ulf Soderberg,
你能看到通过嗅探器从空中发送的指令吗?您是否能够获得声明断开过程完成的消息之一BLE_EVT_GAP_DISCONNECTED或BLE_EVT_GAP_DISCONNECT_FAILED ?
由于MT_dialog
我还没用过嗅探器。我没有看到BLE_EVT_GAP_DISCONNECTED被switch语句捕获,也没有BLE_EVT_GAP_DISCONNECT_FAILED事件的情况。我在默认情况下添加了以下几行,通过设置一个断点,我可以看到BLE_EVT_GAP_DISCONNECT_FAILED事件到达。
默认值:if (hdr->evt_code == BLE_EVT_GAP_DISCONNECT_FAILED) {fff = 1;//上面定义的变量在这一行上设置了一个断点}ble_handle_event_default (hdr);打破;
那么,BLE_EVT_GAP_DISCONNECT_FAILED是怎么回事呢?
经过更多的调试,我发现了问题。原来“reason”参数是错误的。
通过改变ble_gap_disconnect (peer_conn_idx BLE_HCI_ERROR_CON_TERM_BY_LOCAL_HOST);来ble_gap_disconnect (peer_conn_idx BLE_HCI_ERROR_REMOTE_USER_TERM_CON);它知道工作正常。
ble_gap_disconnect (peer_conn_idx BLE_HCI_ERROR_CON_TERM_BY_LOCAL_HOST);
ble_gap_disconnect (peer_conn_idx BLE_HCI_ERROR_REMOTE_USER_TERM_CON);
谢谢你的暗示。
MT_dialog问好
嗨Ulf Soderberg,
你能看到通过嗅探器从空中发送的指令吗?您是否能够获得声明断开过程完成的消息之一BLE_EVT_GAP_DISCONNECTED或BLE_EVT_GAP_DISCONNECT_FAILED ?
由于MT_dialog
我还没用过嗅探器。
我没有看到BLE_EVT_GAP_DISCONNECTED被switch语句捕获,也没有BLE_EVT_GAP_DISCONNECT_FAILED事件的情况。
我在默认情况下添加了以下几行,通过设置一个断点,我可以看到BLE_EVT_GAP_DISCONNECT_FAILED事件到达。
默认值:
if (hdr->evt_code == BLE_EVT_GAP_DISCONNECT_FAILED) {
fff = 1;//上面定义的变量在这一行上设置了一个断点
}
ble_handle_event_default (hdr);
打破;
那么,BLE_EVT_GAP_DISCONNECT_FAILED是怎么回事呢?
经过更多的调试,我发现了问题。原来“reason”参数是错误的。
通过改变
ble_gap_disconnect (peer_conn_idx BLE_HCI_ERROR_CON_TERM_BY_LOCAL_HOST);
来
ble_gap_disconnect (peer_conn_idx BLE_HCI_ERROR_REMOTE_USER_TERM_CON);
它知道工作正常。
嗨Ulf Soderberg,
谢谢你的暗示。
MT_dialog问好