SEGGER Embedded Studio 버전: V6.30b (64bit)

SDK 버전: nRF52_SDK_17.1.0_ddde560

Example 프로젝트 : examples > ble_peripheral > ble_app_bms

 

ble_app_bms 예제 프로젝트를 가지고

Bonding 후 장치 제거하고 다시 Bonding을 진행했는데 Pairing이 진행되지 않는 문제가 있었습니다.

 

장치 검색에 Nordic_BMS가 나타난 화면

 

 

 

기기 등록 메세지창

 

성공적으로 Nordic_BMS가 Bonding된 화면

 

 

정상적으로 진행 된 Bonding 로그 메세지

 

 

 

위 이미지들은 Nordic_BMS 장치를 Pairing & Bonding 절차를 진행한 것입니다.

 

이 장치를 제거 하고 다시 같은 과정을 반복했더니 Pairing 되지 않았고 이 때 로그 메세지에는 다른 로그가 나타났습니다.

에러 코드 133

 

Bonding Error코드 133을 나타내며 연결 해제되었습니다.

 

이를 해결하기 위해서 peer_manager_handler.c 파일에서 

void pm_handler_pm_evt_log(pm_evt_t const * p_pm_evt) 함수 안에 

caes PM_EVT_CONN_SEC_CONFIG_REQ: 에서 다음 코드를 넣어줍니다.

 

// peer_manager_handler.c

void pm_handler_pm_evt_log(pm_evt_t const * p_pm_evt)
{
    NRF_LOG_DEBUG("Event %s", m_event_str[p_pm_evt->evt_id]);

    switch (p_pm_evt->evt_id)
    {
    	...
        
		case PM_EVT_CONN_SEC_CONFIG_REQ:
			NRF_LOG_DEBUG("Security configuration request");
			pm_conn_sec_config_t config = {.allow_repairing = true};
			pm_conn_sec_config_reply(p_pm_evt->conn_handle, &config);
			break;
            
        ...
    }
}

 

 

빌드 후 다운로딩하여 동작을 확인 하면 

장치 제거 후 다시 Bonding 되는 것을 확인 할 수 있습니다.

 

 

 

- 출처

 

Pairing and bonding after deleting synchronization - Nordic Q&A - Nordic DevZone - Nordic DevZone (nordicsemi.com)

반응형

+ Recent posts