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) {