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 장치를 Pairing & Bonding 절차를 진행한 것입니다.
이 장치를 제거 하고 다시 같은 과정을 반복했더니 Pairing 되지 않았고 이 때 로그 메세지에는 다른 로그가 나타났습니다.
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 되는 것을 확인 할 수 있습니다.
- 출처
반응형
'MCU > NRF' 카테고리의 다른 글
[NRF52] 내부 온도 값 읽기 (1) | 2022.09.14 |
---|---|
[NRF52][SEGGER]__vfprintf.h 에러 해결 (0) | 2022.07.24 |
[NRF52][SEGGER].text is larger than specified size 문제 해결 (0) | 2022.07.24 |
[nrf52]unknown type name '__printf_tag_ptr' 해결 (4) | 2022.05.12 |