Browse Source

ble支持断开连接重新扫描

master
zhaohe 11 months ago
parent
commit
1ec51c6c8b
  1. 16
      app/src/service/sdk_initer.c

16
app/src/service/sdk_initer.c

@ -17,7 +17,6 @@ NRF_BLE_GQ_DEF(m_ble_gatt_queue, NRF_SDH_BLE_CENTRAL_LINK_COUNT, NRF_BLE_GQ_QUEU
static uint16_t m_ble_nus_max_data_len = BLE_GATT_ATT_MTU_DEFAULT - OPCODE_LENGTH - HANDLE_LENGTH;
static ble_uuid_t const m_nus_uuid = {.uuid = BLE_UUID_NUS_SERVICE, .type = NUS_SERVICE_UUID_TYPE};
static on_sdk_event_t m_onSdkEvent;
static uint16_t m_ble_connect_handle;
static char m_bleScanFilterName[40];
// static char m_slaveName[40];
static bool m_autoConnect = false;
@ -107,6 +106,7 @@ static void onScanEvent(scan_evt_t const* p_scan_evt) {
NRF_LOG_INFO("Connecting to target %02x%02x%02x%02x%02x%02x", p_connected->peer_addr.addr[0], p_connected->peer_addr.addr[1],
p_connected->peer_addr.addr[2], p_connected->peer_addr.addr[3], p_connected->peer_addr.addr[4], p_connected->peer_addr.addr[5]);
// m_ble_connect_handle = p_scan_evt->;
} break;
case NRF_BLE_SCAN_EVT_SCAN_TIMEOUT: {
@ -191,11 +191,11 @@ static void onBleEvent(ble_evt_t const* p_ble_evt, void* p_context) {
APP_ERROR_CHECK(err_code);
err_code = ble_db_discovery_start(&m_db_disc, p_ble_evt->evt.gap_evt.conn_handle);
APP_ERROR_CHECK(err_code);
m_ble_connect_handle = p_gap_evt->conn_handle;
break;
case BLE_GAP_EVT_DISCONNECTED:
NRF_LOG_INFO("Disconnected. conn_handle: 0x%x, reason: 0x%x", p_gap_evt->conn_handle, p_gap_evt->params.disconnected.reason);
m_ble_connect_handle = 0;
// m_ble_connect_handle = 0;
break;
case BLE_GAP_EVT_TIMEOUT:
if (p_gap_evt->params.timeout.src == BLE_GAP_TIMEOUT_SRC_CONN) {
@ -339,18 +339,16 @@ void zble_master_sdk_ble_tx(uint8_t* data, int32_t len) { ble_nus_c_string_send(
void zble_master_sdk_rescan(const char* slaveName, bool autoConnected) {
//
uint16_t connect_handle = 0;
CRITICAL_REGION_ENTER();
memset(m_bleScanFilterName, 0, sizeof(m_bleScanFilterName));
if (!slaveName) {
memcpy(m_bleScanFilterName, slaveName, strlen(slaveName));
}
m_autoConnect = autoConnected;
connect_handle = m_ble_connect_handle;
CRITICAL_REGION_EXIT();
if (connect_handle != 0) {
uint32_t ecode = sd_ble_gap_disconnect(connect_handle, BLE_HCI_LOCAL_HOST_TERMINATED_CONNECTION);
NRF_LOG_DEBUG("sd_ble_gap_disconnect ecode:%d", ecode);
}
uint32_t ecode = sd_ble_gap_disconnect(m_ble_nus_c.conn_handle, BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION);
NRF_LOG_INFO("sd_ble_gap_disconnect %d -> %d",m_ble_nus_c.conn_handle,ecode);
}
Loading…
Cancel
Save