|
hi
利用52840作为主机 扫描周围蓝牙设备
之前代码都是扫描--名字过滤--连接
用的是nus服务
流程是52840和一个周围设备连接以后 收发一次 随后周围设备主动断来连接
于是52840继续扫描
如此这样循环
现在我想参考那个多链接的案例 让52840一次可以连接多个设备 同时收发信息
代码修改了一下 感觉变化也不多 我放在后面
问题是现在52840和一个连接以后 第二个设备连接的时候会死机 也不是死机 是挂在了某个地方 程序不跑了 表现是log停止
想问问 这个一主多从 是不是有不一样的softdevice呢?
- 单例变为数组 一个从机对应一个nus的实例同时需要一个发现服务
- BLE_NUS_C_ARRAY_DEF(m_ble_nus_c, NRF_SDH_BLE_CENTRAL_LINK_COUNT);
- BLE_DB_DISCOVERY_ARRAY_DEF(m_db_disc, NRF_SDH_BLE_CENTRAL_LINK_COUNT);
- //BLE_NUS_C_DEF(m_ble_nus_c); /**< BLE Nordic UART Service (NUS) client instance. */ /**< GATT module instance. */
- //BLE_DB_DISCOVERY_DEF(m_db_disc); /**< Database discovery module instance. */
- NRF_BLE_SCAN_DEF(m_scan); /**< Scanning Module instance. */
- NRF_BLE_GATT_DEF(m_gatt);
复制代码- #define NRF_SDH_BLE_CENTRAL_LINK_COUNT 4
- #define NRF_SDH_BLE_TOTAL_LINK_COUNT 4
复制代码 后面是处理编译错误
- //static void db_disc_handler(ble_db_discovery_evt_t * p_evt)
- //{
- // //NRF_LOG_INFO("[BLE] db_disc_handler");
- // ble_nus_c_on_db_disc_evt(&m_ble_nus_c, p_evt);
- //}
- static void db_disc_handler(ble_db_discovery_evt_t * p_evt)
- {
- NRF_LOG_DEBUG("call to ble_lbs_on_db_disc_evt for instance %d and link 0x%x!",
- p_evt->conn_handle,
- p_evt->conn_handle);
- ble_nus_c_on_db_disc_evt(&m_ble_nus_c[p_evt->conn_handle], p_evt);
- }
复制代码- static void ble_evt_handler(ble_evt_t const * p_ble_evt, void * p_context)
- {
- ble_gap_evt_t const * p_gap_evt = &p_ble_evt->evt.gap_evt;
- switch (p_ble_evt->header.evt_id)
- {
- case BLE_GAP_EVT_CONNECTED:
- // err_code = ble_nus_c_handles_assign(&m_ble_nus_c, p_ble_evt->evt.gap_evt.conn_handle, NULL);
- err_code = ble_nus_c_handles_assign(&m_ble_nus_c[p_gap_evt->conn_handle],
- p_gap_evt->conn_handle,
- NULL);
- // err_code = ble_db_discovery_start(&m_db_disc, p_ble_evt->evt.gap_evt.conn_handle);
- err_code = ble_db_discovery_start(&m_db_disc[p_gap_evt->conn_handle],
- p_gap_evt->conn_handle);
复制代码
|
|