From ca9d3e1a037297e4a4d3cc7314d2a0e46f952470 Mon Sep 17 00:00:00 2001 From: jhchun Date: Tue, 21 Jul 2026 11:35:50 +0900 Subject: [PATCH] =?UTF-8?q?DFU=20watchdog=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - MGMT_EVT_OP_IMG_MGMT_DFU_CHUNK_WRITE_COMPLETE 이벤트를 callback에 추가하고, flash write 완료 시마다 watchdog timer reset --- src/main.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c index ab125f0..b3a26fd 100644 --- a/src/main.c +++ b/src/main.c @@ -113,6 +113,7 @@ static struct mgmt_callback dfu_status_callback = { .callback = dfu_status_cb, .event_id = MGMT_EVT_OP_IMG_MGMT_DFU_STARTED | MGMT_EVT_OP_IMG_MGMT_DFU_CHUNK | + MGMT_EVT_OP_IMG_MGMT_DFU_CHUNK_WRITE_COMPLETE | MGMT_EVT_OP_IMG_MGMT_DFU_PENDING | MGMT_EVT_OP_IMG_MGMT_DFU_STOPPED, }; @@ -553,7 +554,7 @@ static void dfu_watchdog_handler(struct k_work *work) if (ble_is_connected()) { - DBG_PRINTF("[DFU] upload stalled (%ds), forcing disconnect\r\n", DFU_STALL_TIMEOUT_SEC); + DBG_CORE("[DFU] upload stalled (%ds), forcing disconnect\r\n", DFU_STALL_TIMEOUT_SEC); (void)ble_disconnect_active(); } } @@ -571,9 +572,10 @@ static enum mgmt_cb_return dfu_status_cb(uint32_t event, enum mgmt_cb_return pre { case MGMT_EVT_OP_IMG_MGMT_DFU_STARTED: case MGMT_EVT_OP_IMG_MGMT_DFU_CHUNK: + case MGMT_EVT_OP_IMG_MGMT_DFU_CHUNK_WRITE_COMPLETE: dfu_led_active = true; led_ble_solid(); // DFU 업로드 중에는 초록 LED ON - // 청크가 올 때마다 무진행 감시 타이머 리셋 + // 청크 수신/flash write 완료 때마다 무진행 감시 타이머 리셋 k_work_reschedule(&dfu_watchdog_work, K_SECONDS(DFU_STALL_TIMEOUT_SEC)); break;