Lines Matching refs:cli

20 #define TARGETS_FOR_EACH(cli, target)                                          \  argument
22 (sys_slist_t *)&((cli)->blob.inputs)->targets, target, blob.n)
24 #define MSG_CTX(cli, dst) \ argument
26 .app_idx = (cli)->blob.inputs->app_idx, .addr = dst, \
27 .send_ttl = (cli)->blob.inputs->ttl, \
71 static struct bt_mesh_dfu_target *target_get(struct bt_mesh_dfu_cli *cli, in target_get() argument
76 TARGETS_FOR_EACH(cli, target) { in target_get()
85 static void target_failed(struct bt_mesh_dfu_cli *cli, in target_failed() argument
100 if (cli->cb && cli->cb->lost_target) { in target_failed()
101 cli->cb->lost_target(cli, target); in target_failed()
105 static void dfu_complete(struct bt_mesh_dfu_cli *cli) in dfu_complete() argument
109 if (cli->cb && cli->cb->ended) { in dfu_complete()
110 cli->cb->ended(cli, BT_MESH_DFU_SUCCESS); in dfu_complete()
114 static void dfu_applied(struct bt_mesh_dfu_cli *cli) in dfu_applied() argument
118 cli->xfer.state = STATE_APPLIED; in dfu_applied()
120 if (cli->cb && cli->cb->applied) { in dfu_applied()
121 cli->cb->applied(cli); in dfu_applied()
125 static void dfu_failed(struct bt_mesh_dfu_cli *cli, in dfu_failed() argument
130 cli->xfer.flags |= FLAG_FAILED; in dfu_failed()
132 if (cli->cb && cli->cb->ended) { in dfu_failed()
133 cli->cb->ended(cli, reason); in dfu_failed()
137 static int req_setup(struct bt_mesh_dfu_cli *cli, enum req type, uint16_t addr, in req_setup() argument
140 if (cli->req.type != REQ_NONE) { in req_setup()
144 cli->req.addr = addr; in req_setup()
145 cli->req.params = params; in req_setup()
146 cli->req.type = type; in req_setup()
151 static int req_wait(struct bt_mesh_dfu_cli *cli, k_timeout_t timeout) in req_wait() argument
155 err = k_sem_take(&cli->req.sem, timeout); in req_wait()
156 cli->req.type = REQ_NONE; in req_wait()
161 static bool targets_active(struct bt_mesh_dfu_cli *cli) in targets_active() argument
165 TARGETS_FOR_EACH(cli, target) { in targets_active()
177 static void refresh(struct bt_mesh_dfu_cli *cli);
182 struct bt_mesh_dfu_cli *cli = DFU_CLI(b); in blob_caps() local
186 dfu_failed(cli, BT_MESH_DFU_ERR_RESOURCES); in blob_caps()
190 cli->xfer.blob.block_size_log = caps->max_block_size_log; in blob_caps()
191 cli->xfer.blob.chunk_size = caps->max_chunk_size; in blob_caps()
198 if (!(cli->xfer.blob.mode & BT_MESH_BLOB_XFER_MODE_ALL)) { in blob_caps()
199 cli->xfer.blob.mode = in blob_caps()
203 cli->xfer.blob.mode = in blob_caps()
205 cli->xfer.blob.mode : caps->modes; in blob_caps()
208 err = bt_mesh_blob_cli_send(b, b->inputs, &cli->xfer.blob, cli->xfer.io); in blob_caps()
211 dfu_failed(cli, BT_MESH_DFU_ERR_BLOB_XFER_BUSY); in blob_caps()
221 struct bt_mesh_dfu_cli *cli = DFU_CLI(b); in blob_lost_target() local
223 if ((cli->xfer.state == STATE_CONFIRM || cli->xfer.state == STATE_APPLY) && in blob_lost_target()
232 target_failed(cli, target, BT_MESH_DFU_ERR_INTERNAL); in blob_lost_target()
237 struct bt_mesh_dfu_cli *cli = DFU_CLI(b); in blob_suspended() local
241 cli->xfer.state = STATE_SUSPENDED; in blob_suspended()
243 if (cli->cb && cli->cb->suspended) { in blob_suspended()
244 cli->cb->suspended(cli); in blob_suspended()
251 struct bt_mesh_dfu_cli *cli = DFU_CLI(b); in blob_end() local
253 cli->req.img_cb = NULL; in blob_end()
256 refresh(cli); in blob_end()
260 if (cli->xfer.state == STATE_CANCEL) { in blob_end()
267 if (cli->xfer.state != STATE_TRANSFER) { in blob_end()
268 LOG_ERR("Blob failed in invalid state %u", cli->xfer.state); in blob_end()
272 dfu_failed(cli, BT_MESH_DFU_ERR_INTERNAL); in blob_end()
303 struct bt_mesh_dfu_cli *cli = cb_data; in tx_end() local
305 blob_cli_broadcast_tx_complete(&cli->blob); in tx_end()
310 struct bt_mesh_dfu_cli *cli) in tx() argument
314 err = bt_mesh_model_send(mod, ctx, buf, cb, cli); in tx()
318 cb->end(err, cli); in tx()
326 static int info_get(struct bt_mesh_dfu_cli *cli, struct bt_mesh_msg_ctx *ctx, in info_get() argument
335 return tx(cli->mod, ctx, &buf, cb, cli); in info_get()
340 struct bt_mesh_dfu_cli *cli = DFU_CLI(b); in send_info_get() local
341 struct bt_mesh_msg_ctx ctx = MSG_CTX(cli, dst); in send_info_get()
343 cli->req.img_cnt = 0xff; in send_info_get()
345 info_get(cli, &ctx, 0, cli->req.img_cnt, &send_cb); in send_info_get()
350 struct bt_mesh_dfu_cli *cli = DFU_CLI(b); in send_update_start() local
351 struct bt_mesh_msg_ctx ctx = MSG_CTX(cli, dst); in send_update_start()
355 target = target_get(cli, dst); in send_update_start()
358 (sys_slist_t *)&((cli)->blob.inputs)->targets, in send_update_start()
366 net_buf_simple_add_u8(&buf, cli->blob.inputs->ttl); in send_update_start()
367 net_buf_simple_add_le16(&buf, cli->blob.inputs->timeout_base); in send_update_start()
368 net_buf_simple_add_le64(&buf, cli->xfer.blob.id); in send_update_start()
370 net_buf_simple_add_mem(&buf, cli->xfer.slot->metadata, in send_update_start()
371 cli->xfer.slot->metadata_len); in send_update_start()
373 (void)tx(cli->mod, &ctx, &buf, &send_cb, cli); in send_update_start()
378 struct bt_mesh_dfu_cli *cli = DFU_CLI(b); in send_update_get() local
379 struct bt_mesh_msg_ctx ctx = MSG_CTX(cli, dst); in send_update_get()
384 (void)tx(cli->mod, &ctx, &buf, &send_cb, cli); in send_update_get()
389 struct bt_mesh_dfu_cli *cli = DFU_CLI(b); in send_update_cancel() local
390 struct bt_mesh_msg_ctx ctx = MSG_CTX(cli, dst); in send_update_cancel()
395 (void)tx(cli->mod, &ctx, &buf, &send_cb, cli); in send_update_cancel()
400 struct bt_mesh_dfu_cli *cli = DFU_CLI(b); in send_update_apply() local
401 struct bt_mesh_msg_ctx ctx = MSG_CTX(cli, dst); in send_update_apply()
406 (void)tx(cli->mod, &ctx, &buf, &send_cb, cli); in send_update_apply()
413 static void apply(struct bt_mesh_dfu_cli *cli);
418 static void initiate(struct bt_mesh_dfu_cli *cli) in initiate() argument
431 TARGETS_FOR_EACH(cli, target) { in initiate()
442 cli->op = BT_MESH_DFU_OP_UPDATE_STATUS; in initiate()
443 cli->xfer.state = STATE_TRANSFER; in initiate()
445 blob_cli_broadcast(&cli->blob, &tx); in initiate()
448 static void skip_targets_from_broadcast(struct bt_mesh_dfu_cli *cli, bool skip) in skip_targets_from_broadcast() argument
452 TARGETS_FOR_EACH(cli, target) { in skip_targets_from_broadcast()
465 static bool transfer_skip(struct bt_mesh_dfu_cli *cli) in transfer_skip() argument
469 TARGETS_FOR_EACH(cli, target) { in transfer_skip()
480 struct bt_mesh_dfu_cli *cli = DFU_CLI(b); in transfer() local
485 if (!targets_active(cli)) { in transfer()
486 dfu_failed(cli, BT_MESH_DFU_ERR_INTERNAL); in transfer()
490 skip_targets_from_broadcast(cli, true); in transfer()
492 if (transfer_skip(cli)) { in transfer()
496 refresh(cli); in transfer()
500 if (cli->xfer.flags & FLAG_RESUME) { in transfer()
501 cli->xfer.flags ^= FLAG_RESUME; in transfer()
505 dfu_failed(cli, BT_MESH_DFU_ERR_BLOB_XFER_BUSY); in transfer()
507 } else if (cli->xfer.flags & FLAG_SKIP_CAPS_GET) { in transfer()
508 cli->xfer.flags ^= FLAG_SKIP_CAPS_GET; in transfer()
509 err = bt_mesh_blob_cli_send(b, b->inputs, &cli->xfer.blob, cli->xfer.io); in transfer()
512 dfu_failed(cli, BT_MESH_DFU_ERR_BLOB_XFER_BUSY); in transfer()
515 err = bt_mesh_blob_cli_caps_get(&cli->blob, cli->blob.inputs); in transfer()
518 dfu_failed(cli, BT_MESH_DFU_ERR_BLOB_XFER_BUSY); in transfer()
525 struct bt_mesh_dfu_cli *cli = DFU_CLI(b); in refreshed() local
527 if (!targets_active(cli)) { in refreshed()
528 dfu_failed(cli, BT_MESH_DFU_ERR_INTERNAL); in refreshed()
532 cli->xfer.state = STATE_VERIFIED; in refreshed()
533 dfu_complete(cli); in refreshed()
536 static void refresh(struct bt_mesh_dfu_cli *cli) in refresh() argument
546 cli->xfer.state = STATE_REFRESH; in refresh()
547 cli->op = BT_MESH_DFU_OP_UPDATE_STATUS; in refresh()
552 skip_targets_from_broadcast(cli, false); in refresh()
554 blob_cli_broadcast(&cli->blob, &tx); in refresh()
557 static void apply(struct bt_mesh_dfu_cli *cli) in apply() argument
567 cli->xfer.state = STATE_APPLY; in apply()
568 cli->op = BT_MESH_DFU_OP_UPDATE_STATUS; in apply()
570 blob_cli_broadcast(&cli->blob, &tx); in apply()
575 struct bt_mesh_dfu_cli *cli = DFU_CLI(b); in applied() local
577 if (!targets_active(cli)) { in applied()
578 dfu_failed(cli, BT_MESH_DFU_ERR_INTERNAL); in applied()
582 dfu_applied(cli); in applied()
585 static enum bt_mesh_dfu_iter target_img_cb(struct bt_mesh_dfu_cli *cli, in target_img_cb() argument
593 if ((img->fwid_len != cli->xfer.slot->fwid_len) || in target_img_cb()
594 memcmp(cli->xfer.slot->fwid, img->fwid, img->fwid_len)) { in target_img_cb()
598 target = target_get(cli, ctx->addr); in target_img_cb()
603 blob_cli_broadcast_rsp(&cli->blob, &target->blob); in target_img_cb()
611 static void confirm(struct bt_mesh_dfu_cli *cli) in confirm() argument
622 cli->op = BT_MESH_DFU_OP_UPDATE_INFO_STATUS; in confirm()
623 cli->req.img_cb = target_img_cb; in confirm()
624 cli->req.ttl = cli->blob.inputs->ttl; in confirm()
626 blob_cli_broadcast(&cli->blob, &tx); in confirm()
631 struct bt_mesh_dfu_cli *cli = DFU_CLI(b); in confirmed() local
635 cli->req.img_cb = NULL; in confirmed()
637 TARGETS_FOR_EACH(cli, target) { in confirmed()
653 target_failed(cli, target, BT_MESH_DFU_ERR_INTERNAL); in confirmed()
657 target_failed(cli, target, BT_MESH_DFU_ERR_INTERNAL); in confirmed()
664 cli->xfer.state = STATE_IDLE; in confirmed()
665 cli->xfer.flags = FLAG_COMPLETED; in confirmed()
667 if (cli->cb && cli->cb->confirmed) { in confirmed()
668 cli->cb->confirmed(cli); in confirmed()
671 dfu_failed(cli, BT_MESH_DFU_ERR_INTERNAL); in confirmed()
675 static void cancel(struct bt_mesh_dfu_cli *cli) in cancel() argument
685 cli->op = BT_MESH_DFU_OP_UPDATE_STATUS; in cancel()
687 blob_cli_broadcast(&cli->blob, &tx); in cancel()
692 struct bt_mesh_dfu_cli *cli = DFU_CLI(b); in cancelled() local
694 cli->xfer.flags |= FLAG_CANCELLED; in cancelled()
695 dfu_failed(cli, BT_MESH_DFU_ERR_INTERNAL); in cancelled()
705 struct bt_mesh_dfu_cli *cli = mod->rt->user_data; in handle_status() local
715 if (cli->req.type == REQ_STATUS && cli->req.addr == ctx->addr) { in handle_status()
716 if (cli->req.params) { in handle_status()
717 struct bt_mesh_dfu_target_status *rsp = cli->req.params; in handle_status()
737 k_sem_give(&cli->req.sem); in handle_status()
739 if (cli->op != BT_MESH_DFU_OP_UPDATE_STATUS) { in handle_status()
743 target = target_get(cli, ctx->addr); in handle_status()
749 LOG_DBG("%u phase: %u, cur state: %u", status, phase, cli->xfer.state); in handle_status()
753 if (cli->xfer.state == STATE_APPLY && phase == BT_MESH_DFU_PHASE_IDLE && in handle_status()
756 blob_cli_broadcast_rsp(&cli->blob, &target->blob); in handle_status()
761 target_failed(cli, target, status); in handle_status()
762 blob_cli_broadcast_rsp(&cli->blob, &target->blob); in handle_status()
771 if (net_buf_simple_pull_le64(buf) != cli->xfer.blob.id) { in handle_status()
773 target_failed(cli, target, BT_MESH_DFU_ERR_BLOB_XFER_BUSY); in handle_status()
774 blob_cli_broadcast_rsp(&cli->blob, &target->blob); in handle_status()
785 if (cli->xfer.state == STATE_REFRESH) { in handle_status()
792 target_failed(cli, target, BT_MESH_DFU_ERR_WRONG_PHASE); in handle_status()
794 } else if (cli->xfer.state == STATE_APPLY) { in handle_status()
800 target_failed(cli, target, BT_MESH_DFU_ERR_WRONG_PHASE); in handle_status()
801 blob_cli_broadcast_rsp(&cli->blob, &target->blob); in handle_status()
805 } else if (cli->xfer.state == STATE_CONFIRM) { in handle_status()
815 target_failed(cli, target, BT_MESH_DFU_ERR_WRONG_PHASE); in handle_status()
816 blob_cli_broadcast_rsp(&cli->blob, &target->blob); in handle_status()
819 } else if (cli->xfer.state == STATE_CANCEL) { in handle_status()
823 blob_cli_broadcast_rsp(&cli->blob, &target->blob); in handle_status()
831 struct bt_mesh_dfu_cli *cli = mod->rt->user_data; in handle_info_status() local
836 if (!cli->req.img_cb || in handle_info_status()
837 (cli->req.type == REQ_IMG && cli->req.addr != ctx->addr)) { in handle_info_status()
843 if (img_cnt < cli->req.img_cnt) { in handle_info_status()
844 cli->req.img_cnt = img_cnt; in handle_info_status()
855 while (buf->len && cli->req.img_cb && idx < cli->req.img_cnt) { in handle_info_status()
888 it = cli->req.img_cb(cli, ctx, idx, img_cnt, &img, in handle_info_status()
889 cli->req.params); in handle_info_status()
891 if (cli->req.type == REQ_IMG) { in handle_info_status()
892 k_sem_give(&cli->req.sem); in handle_info_status()
901 if (idx < cli->req.img_cnt) { in handle_info_status()
902 LOG_DBG("Fetching more images (%u/%u)", idx, cli->req.img_cnt); in handle_info_status()
903 ctx->send_ttl = cli->req.ttl; in handle_info_status()
904 info_get(cli, ctx, idx, cli->req.img_cnt - idx, in handle_info_status()
905 (cli->req.type == REQ_IMG) ? NULL : &send_cb); in handle_info_status()
909 if (cli->req.type == REQ_IMG) { in handle_info_status()
910 k_sem_give(&cli->req.sem); in handle_info_status()
915 target = target_get(cli, ctx->addr); in handle_info_status()
918 bt_hex(cli->xfer.slot->fwid, cli->xfer.slot->fwid_len)); in handle_info_status()
920 target_failed(cli, target, BT_MESH_DFU_ERR_INTERNAL); in handle_info_status()
921 blob_cli_broadcast_rsp(&cli->blob, &target->blob); in handle_info_status()
930 struct bt_mesh_dfu_cli *cli = mod->rt->user_data; in handle_metadata_status() local
931 struct bt_mesh_dfu_metadata_status *rsp = cli->req.params; in handle_metadata_status()
937 if (cli->req.type != REQ_METADATA || ctx->addr != cli->req.addr || in handle_metadata_status()
941 if (cli->req.type != REQ_METADATA) { in handle_metadata_status()
942 LOG_WRN("Expected %u", cli->req.type); in handle_metadata_status()
944 LOG_WRN("Expected 0x%04x img %u", cli->req.addr, idx); in handle_metadata_status()
952 k_sem_give(&cli->req.sem); in handle_metadata_status()
967 struct bt_mesh_dfu_cli *cli = mod->rt->user_data; in dfu_cli_init() local
968 cli->mod = mod; in dfu_cli_init()
978 err = bt_mesh_model_extend(mod, cli->blob.mod); in dfu_cli_init()
984 k_sem_init(&cli->req.sem, 0, 1); in dfu_cli_init()
991 struct bt_mesh_dfu_cli *cli = mod->rt->user_data; in dfu_cli_reset() local
993 cli->req.type = REQ_NONE; in dfu_cli_reset()
994 cli->req.addr = BT_MESH_ADDR_UNASSIGNED; in dfu_cli_reset()
995 cli->req.img_cnt = 0; in dfu_cli_reset()
996 cli->req.img_cb = NULL; in dfu_cli_reset()
997 cli->xfer.state = STATE_IDLE; in dfu_cli_reset()
998 cli->xfer.flags = 0; in dfu_cli_reset()
1010 int bt_mesh_dfu_cli_send(struct bt_mesh_dfu_cli *cli, in bt_mesh_dfu_cli_send() argument
1017 if (bt_mesh_dfu_cli_is_busy(cli)) { in bt_mesh_dfu_cli_send()
1021 cli->xfer.blob.mode = xfer->mode; in bt_mesh_dfu_cli_send()
1022 cli->xfer.blob.size = xfer->slot->size; in bt_mesh_dfu_cli_send()
1025 int err = bt_rand(&cli->xfer.blob.id, sizeof(cli->xfer.blob.id)); in bt_mesh_dfu_cli_send()
1031 cli->xfer.blob.id = xfer->blob_id; in bt_mesh_dfu_cli_send()
1034 cli->xfer.io = io; in bt_mesh_dfu_cli_send()
1035 cli->blob.inputs = inputs; in bt_mesh_dfu_cli_send()
1036 cli->xfer.slot = xfer->slot; in bt_mesh_dfu_cli_send()
1037 cli->xfer.flags = 0U; in bt_mesh_dfu_cli_send()
1040 cli->xfer.flags |= FLAG_SKIP_CAPS_GET; in bt_mesh_dfu_cli_send()
1041 cli->xfer.blob.block_size_log = xfer->blob_params->block_size_log; in bt_mesh_dfu_cli_send()
1042 cli->xfer.blob.chunk_size = xfer->blob_params->chunk_size; in bt_mesh_dfu_cli_send()
1046 TARGETS_FOR_EACH(cli, target) { in bt_mesh_dfu_cli_send()
1051 initiate(cli); in bt_mesh_dfu_cli_send()
1055 int bt_mesh_dfu_cli_suspend(struct bt_mesh_dfu_cli *cli) in bt_mesh_dfu_cli_suspend() argument
1059 err = bt_mesh_blob_cli_suspend(&cli->blob); in bt_mesh_dfu_cli_suspend()
1061 cli->xfer.state = STATE_SUSPENDED; in bt_mesh_dfu_cli_suspend()
1067 int bt_mesh_dfu_cli_resume(struct bt_mesh_dfu_cli *cli) in bt_mesh_dfu_cli_resume() argument
1071 if (cli->xfer.state != STATE_SUSPENDED) { in bt_mesh_dfu_cli_resume()
1075 cli->xfer.flags = FLAG_RESUME; in bt_mesh_dfu_cli_resume()
1078 TARGETS_FOR_EACH(cli, target) { in bt_mesh_dfu_cli_resume()
1085 initiate(cli); in bt_mesh_dfu_cli_resume()
1089 int bt_mesh_dfu_cli_cancel(struct bt_mesh_dfu_cli *cli, in bt_mesh_dfu_cli_cancel() argument
1095 err = req_setup(cli, REQ_STATUS, ctx->addr, NULL); in bt_mesh_dfu_cli_cancel()
1103 err = bt_mesh_model_send(cli->mod, ctx, &buf, NULL, NULL); in bt_mesh_dfu_cli_cancel()
1105 cli->req.type = REQ_NONE; in bt_mesh_dfu_cli_cancel()
1109 return req_wait(cli, K_MSEC(dfu_cli_timeout)); in bt_mesh_dfu_cli_cancel()
1112 if (cli->xfer.state == STATE_IDLE) { in bt_mesh_dfu_cli_cancel()
1116 cli->xfer.state = STATE_CANCEL; in bt_mesh_dfu_cli_cancel()
1117 blob_cli_broadcast_abort(&cli->blob); in bt_mesh_dfu_cli_cancel()
1118 cancel(cli); in bt_mesh_dfu_cli_cancel()
1122 int bt_mesh_dfu_cli_apply(struct bt_mesh_dfu_cli *cli) in bt_mesh_dfu_cli_apply() argument
1124 if (cli->xfer.state != STATE_VERIFIED) { in bt_mesh_dfu_cli_apply()
1128 apply(cli); in bt_mesh_dfu_cli_apply()
1133 int bt_mesh_dfu_cli_confirm(struct bt_mesh_dfu_cli *cli) in bt_mesh_dfu_cli_confirm() argument
1135 if (cli->xfer.state != STATE_APPLIED) { in bt_mesh_dfu_cli_confirm()
1139 cli->xfer.state = STATE_CONFIRM; in bt_mesh_dfu_cli_confirm()
1140 confirm(cli); in bt_mesh_dfu_cli_confirm()
1145 uint8_t bt_mesh_dfu_cli_progress(struct bt_mesh_dfu_cli *cli) in bt_mesh_dfu_cli_progress() argument
1147 if (cli->xfer.state == STATE_TRANSFER) { in bt_mesh_dfu_cli_progress()
1148 return bt_mesh_blob_cli_xfer_progress_active_get(&cli->blob); in bt_mesh_dfu_cli_progress()
1151 if (cli->xfer.state == STATE_IDLE) { in bt_mesh_dfu_cli_progress()
1152 if (cli->xfer.flags & FLAG_COMPLETED) { in bt_mesh_dfu_cli_progress()
1161 bool bt_mesh_dfu_cli_is_busy(struct bt_mesh_dfu_cli *cli) in bt_mesh_dfu_cli_is_busy() argument
1163 return (cli->xfer.state == STATE_TRANSFER || in bt_mesh_dfu_cli_is_busy()
1164 cli->xfer.state == STATE_REFRESH || in bt_mesh_dfu_cli_is_busy()
1165 cli->xfer.state == STATE_APPLY || in bt_mesh_dfu_cli_is_busy()
1166 cli->xfer.state == STATE_CONFIRM) && in bt_mesh_dfu_cli_is_busy()
1167 !(cli->xfer.flags & FLAG_FAILED); in bt_mesh_dfu_cli_is_busy()
1170 int bt_mesh_dfu_cli_imgs_get(struct bt_mesh_dfu_cli *cli, in bt_mesh_dfu_cli_imgs_get() argument
1177 if (cli->req.img_cb) { in bt_mesh_dfu_cli_imgs_get()
1181 err = req_setup(cli, REQ_IMG, ctx->addr, NULL); in bt_mesh_dfu_cli_imgs_get()
1186 cli->req.img_cb = cb; in bt_mesh_dfu_cli_imgs_get()
1187 cli->req.params = cb_data; in bt_mesh_dfu_cli_imgs_get()
1188 cli->req.ttl = ctx->send_ttl; in bt_mesh_dfu_cli_imgs_get()
1189 cli->req.img_cnt = max_count; in bt_mesh_dfu_cli_imgs_get()
1191 err = info_get(cli, ctx, 0, cli->req.img_cnt, NULL); in bt_mesh_dfu_cli_imgs_get()
1193 cli->req.img_cb = NULL; in bt_mesh_dfu_cli_imgs_get()
1194 cli->req.type = REQ_NONE; in bt_mesh_dfu_cli_imgs_get()
1198 err = req_wait(cli, K_MSEC(dfu_cli_timeout)); in bt_mesh_dfu_cli_imgs_get()
1200 cli->req.img_cb = NULL; in bt_mesh_dfu_cli_imgs_get()
1205 int bt_mesh_dfu_cli_metadata_check(struct bt_mesh_dfu_cli *cli, in bt_mesh_dfu_cli_metadata_check() argument
1212 err = req_setup(cli, REQ_METADATA, ctx->addr, rsp); in bt_mesh_dfu_cli_metadata_check()
1230 err = bt_mesh_model_send(cli->mod, ctx, &buf, NULL, NULL); in bt_mesh_dfu_cli_metadata_check()
1232 cli->req.type = REQ_NONE; in bt_mesh_dfu_cli_metadata_check()
1236 return req_wait(cli, K_MSEC(dfu_cli_timeout)); in bt_mesh_dfu_cli_metadata_check()
1239 int bt_mesh_dfu_cli_status_get(struct bt_mesh_dfu_cli *cli, in bt_mesh_dfu_cli_status_get() argument
1245 err = req_setup(cli, REQ_STATUS, ctx->addr, rsp); in bt_mesh_dfu_cli_status_get()
1253 err = bt_mesh_model_send(cli->mod, ctx, &buf, NULL, NULL); in bt_mesh_dfu_cli_status_get()
1255 cli->req.type = REQ_NONE; in bt_mesh_dfu_cli_status_get()
1259 return req_wait(cli, K_MSEC(dfu_cli_timeout)); in bt_mesh_dfu_cli_status_get()