DFU watchdog 수정
- MGMT_EVT_OP_IMG_MGMT_DFU_CHUNK_WRITE_COMPLETE 이벤트를 callback에 추가하고, flash write 완료 시마다 watchdog timer reset
This commit is contained in:
+4
-2
@@ -113,6 +113,7 @@ static struct mgmt_callback dfu_status_callback = {
|
|||||||
.callback = dfu_status_cb,
|
.callback = dfu_status_cb,
|
||||||
.event_id = MGMT_EVT_OP_IMG_MGMT_DFU_STARTED |
|
.event_id = MGMT_EVT_OP_IMG_MGMT_DFU_STARTED |
|
||||||
MGMT_EVT_OP_IMG_MGMT_DFU_CHUNK |
|
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_PENDING |
|
||||||
MGMT_EVT_OP_IMG_MGMT_DFU_STOPPED,
|
MGMT_EVT_OP_IMG_MGMT_DFU_STOPPED,
|
||||||
};
|
};
|
||||||
@@ -553,7 +554,7 @@ static void dfu_watchdog_handler(struct k_work *work)
|
|||||||
|
|
||||||
if (ble_is_connected())
|
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();
|
(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_STARTED:
|
||||||
case MGMT_EVT_OP_IMG_MGMT_DFU_CHUNK:
|
case MGMT_EVT_OP_IMG_MGMT_DFU_CHUNK:
|
||||||
|
case MGMT_EVT_OP_IMG_MGMT_DFU_CHUNK_WRITE_COMPLETE:
|
||||||
dfu_led_active = true;
|
dfu_led_active = true;
|
||||||
led_ble_solid(); // DFU 업로드 중에는 초록 LED ON
|
led_ble_solid(); // DFU 업로드 중에는 초록 LED ON
|
||||||
// 청크가 올 때마다 무진행 감시 타이머 리셋
|
// 청크 수신/flash write 완료 때마다 무진행 감시 타이머 리셋
|
||||||
k_work_reschedule(&dfu_watchdog_work, K_SECONDS(DFU_STALL_TIMEOUT_SEC));
|
k_work_reschedule(&dfu_watchdog_work, K_SECONDS(DFU_STALL_TIMEOUT_SEC));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user