From 5fda5f6d805905babd2ef2f527a9a40ac90f5302 Mon Sep 17 00:00:00 2001 From: jhChun Date: Mon, 30 Mar 2026 15:27:22 +0900 Subject: [PATCH] =?UTF-8?q?BLE=20=EB=AA=85=EB=A0=B9=20=EC=88=98=EC=8B=A0?= =?UTF-8?q?=20=EC=8B=9C=20Connection=20interval=20=EC=9E=AC=ED=98=91?= =?UTF-8?q?=EC=83=81=20=EC=9A=94=EC=B2=AD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Windows BLE 스택이 장시간 연결 시 CI를 수초까지 늘려 응답이 지연되는 문제 대응 - 30초에 1회 20~75ms로 돌려달라고 요청 --- .../ble_app_bladder_patch/main.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/project/ble_peripheral/ble_app_bladder_patch/main.c b/project/ble_peripheral/ble_app_bladder_patch/main.c index 10b6890..a12a39d 100644 --- a/project/ble_peripheral/ble_app_bladder_patch/main.c +++ b/project/ble_peripheral/ble_app_bladder_patch/main.c @@ -609,7 +609,24 @@ static void nus_data_handler(ble_nus_evt_t * p_evt) { cmd_type_t = CMD_BLE; ble_got_new_data = true; - + + /* Central이 연결 간격을 늘렸을 수 있으므로 빠른 간격 재요청 (30초에 1회) */ + { + static uint32_t last_update_tick = 0; + uint32_t now_tick = app_timer_cnt_get(); + if (last_update_tick == 0 || + app_timer_cnt_diff_compute(now_tick, last_update_tick) >= APP_TIMER_TICKS(30000)) + { + ble_gap_conn_params_t conn_params; + conn_params.min_conn_interval = MIN_CONN_INTERVAL; + conn_params.max_conn_interval = MAX_CONN_INTERVAL; + conn_params.slave_latency = SLAVE_LATENCY; + conn_params.conn_sup_timeout = CONN_SUP_TIMEOUT; + sd_ble_gap_conn_param_update(m_conn_handle, &conn_params); + last_update_tick = now_tick; + } + } + /* 콜백에서는 복사만 하고, 메인 루프에서 처리 */ if (p_evt->params.rx_data.length <= BLE_NUS_MAX_DATA_LEN) {