Skip to content

Commit

Permalink
mgmt: hawkbit: add CONFIG_HAWKBIT_SAVE_PROGRESS_INTERVAL
Browse files Browse the repository at this point in the history
add CONFIG_HAWKBIT_SAVE_PROGRESS_INTERVAL, to
be able to set a interval, how often the progress is saved.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
  • Loading branch information
maass-hamburg committed Dec 25, 2024
1 parent 7c4ac4c commit 4981e32
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 13 deletions.
9 changes: 9 additions & 0 deletions subsys/mgmt/hawkbit/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,15 @@ config HAWKBIT_SAVE_PROGRESS
help
Save the hawkBit update download progress.

config HAWKBIT_SAVE_PROGRESS_INTERVAL
int "Save the hawkBit update download progress interval"
default 0
range 0 100
depends on HAWKBIT_SAVE_PROGRESS
help
Set the interval (in percent) that the hawkBit update download progress will be saved.
0 means that the progress will be saved every time a new chunk is downloaded.

module = HAWKBIT
module-str = Log Level for hawkbit
module-help = Enables logging for hawkBit code.
Expand Down
35 changes: 22 additions & 13 deletions subsys/mgmt/hawkbit/hawkbit.c
Original file line number Diff line number Diff line change
Expand Up @@ -953,28 +953,37 @@ static void response_download_cb(struct http_response *rsp, enum http_final_call
}
}

if (rsp->body_found) {
body_data = rsp->body_frag_start;
body_len = rsp->body_frag_len;
if (!rsp->body_found) {
return;
}

ret = flash_img_buffered_write(&hb_context->flash_ctx, body_data, body_len,
final_data == HTTP_DATA_FINAL);
if (ret < 0) {
LOG_ERR("Failed to write flash: %d", ret);
hb_context->code_status = HAWKBIT_DOWNLOAD_ERROR;
return;
}
body_data = rsp->body_frag_start;
body_len = rsp->body_frag_len;

#ifdef CONFIG_HAWKBIT_SAVE_PROGRESS
stream_flash_progress_save(&hb_context->flash_ctx.stream, "hawkbit/flash_progress");
#endif
ret = flash_img_buffered_write(&hb_context->flash_ctx, body_data, body_len,
final_data == HTTP_DATA_FINAL);
if (ret < 0) {
LOG_ERR("Failed to write flash: %d", ret);
hb_context->code_status = HAWKBIT_DOWNLOAD_ERROR;
return;
}

#if defined CONFIG_HAWKBIT_SAVE_PROGRESS && IS_EQ(CONFIG_HAWKBIT_SAVE_PROGRESS_INTERVAL, 0)
stream_flash_progress_save(&hb_context->flash_ctx.stream, "hawkbit/flash_progress");
#endif

hb_context->dl.downloaded_size = flash_img_bytes_written(&hb_context->flash_ctx);

downloaded = hb_context->dl.downloaded_size * 100 / hb_context->dl.file_size;

if (downloaded > download_progress) {
#if defined CONFIG_HAWKBIT_SAVE_PROGRESS && !IS_EQ(CONFIG_HAWKBIT_SAVE_PROGRESS_INTERVAL, 0)
if ((downloaded / CONFIG_HAWKBIT_SAVE_PROGRESS_INTERVAL) >
(download_progress / CONFIG_HAWKBIT_SAVE_PROGRESS_INTERVAL)) {
stream_flash_progress_save(&hb_context->flash_ctx.stream,
"hawkbit/flash_progress");
}
#endif
download_progress = downloaded;
LOG_DBG("Downloaded: %u%% (%u / %u)", download_progress,
hb_context->dl.downloaded_size, hb_context->dl.file_size);
Expand Down

0 comments on commit 4981e32

Please sign in to comment.