Lines Matching refs:msg
90 static void reschedule_delayable_msg(struct delayable_msg_ctx *msg) in reschedule_delayable_msg() argument
96 if (msg) { in reschedule_delayable_msg()
97 put_ctx_to_busy_list(msg); in reschedule_delayable_msg()
114 static int allocate_delayable_msg_chunks(struct delayable_msg_ctx *msg, int number) in allocate_delayable_msg_chunks() argument
124 sys_slist_append(&msg->chunks, node); in allocate_delayable_msg_chunks()
130 static void release_delayable_msg_chunks(struct delayable_msg_ctx *msg) in release_delayable_msg_chunks() argument
134 while ((node = sys_slist_get(&msg->chunks))) { in release_delayable_msg_chunks()
141 struct delayable_msg_ctx *msg; in allocate_delayable_msg_ctx() local
152 msg = CONTAINER_OF(node, struct delayable_msg_ctx, node); in allocate_delayable_msg_ctx()
153 sys_slist_init(&msg->chunks); in allocate_delayable_msg_ctx()
155 return msg; in allocate_delayable_msg_ctx()
169 struct delayable_msg_ctx *msg = peek_pending_msg(); in push_msg_from_delayable_msgs() local
173 if (!msg) { in push_msg_from_delayable_msgs()
177 len = msg->len; in push_msg_from_delayable_msgs()
181 SYS_SLIST_FOR_EACH_NODE(&msg->chunks, node) { in push_msg_from_delayable_msgs()
189 msg->ctx.rnd_delay = false; in push_msg_from_delayable_msgs()
190 err = bt_mesh_access_send(&msg->ctx, &buf, msg->src_addr, msg->cb, msg->cb_data); in push_msg_from_delayable_msgs()
191 msg->ctx.rnd_delay = true; in push_msg_from_delayable_msgs()
197 release_delayable_msg_chunks(msg); in push_msg_from_delayable_msgs()
198 release_delayable_msg_ctx(msg); in push_msg_from_delayable_msgs()
200 if (err && msg->cb && msg->cb->start) { in push_msg_from_delayable_msgs()
201 msg->cb->start(0, err, msg->cb_data); in push_msg_from_delayable_msgs()
225 struct delayable_msg_ctx *msg; in bt_mesh_delayable_msg_manage() local
240 msg = allocate_delayable_msg_ctx(); in bt_mesh_delayable_msg_manage()
241 if (!msg) { in bt_mesh_delayable_msg_manage()
248 allocate_delayable_msg_chunks(msg, total_number - allocated_number); in bt_mesh_delayable_msg_manage()
255 release_delayable_msg_chunks(msg); in bt_mesh_delayable_msg_manage()
256 release_delayable_msg_ctx(msg); in bt_mesh_delayable_msg_manage()
262 SYS_SLIST_FOR_EACH_NODE(&msg->chunks, node) { in bt_mesh_delayable_msg_manage()
273 msg->fired_time = k_uptime_get_32() + random_delay; in bt_mesh_delayable_msg_manage()
274 msg->ctx = *ctx; in bt_mesh_delayable_msg_manage()
275 msg->src_addr = src_addr; in bt_mesh_delayable_msg_manage()
276 msg->cb = cb; in bt_mesh_delayable_msg_manage()
277 msg->cb_data = cb_data; in bt_mesh_delayable_msg_manage()
278 msg->len = len; in bt_mesh_delayable_msg_manage()
280 reschedule_delayable_msg(msg); in bt_mesh_delayable_msg_manage()