Zephyr API Documentation 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
blob_cli.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2020 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
12
13#ifndef ZEPHYR_INCLUDE_BLUETOOTH_MESH_BLOB_CLI_H_
14#define ZEPHYR_INCLUDE_BLUETOOTH_MESH_BLOB_CLI_H_
15
16#include <sys/types.h>
17
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
30
31struct bt_mesh_blob_cli;
32
39#define BT_MESH_MODEL_BLOB_CLI(_cli) \
40 BT_MESH_MODEL_CB(BT_MESH_MODEL_ID_BLOB_CLI, _bt_mesh_blob_cli_op, \
41 NULL, _cli, &_bt_mesh_blob_cli_cb)
42
53
58
61
66
69
70 uint8_t procedure_complete:1, /* Procedure has been completed. */
71 acked:1, /* Message has been acknowledged. Not used when sending. */
72 timedout:1, /* Target node didn't respond after specified timeout. */
73 skip:1; /* Skip Target node from broadcast. */
74};
75
108
143
167
191
208 void (*caps)(struct bt_mesh_blob_cli *cli,
209 const struct bt_mesh_blob_cli_caps *caps);
210
221 void (*lost_target)(struct bt_mesh_blob_cli *cli,
222 struct bt_mesh_blob_target *target,
223 enum bt_mesh_blob_status reason);
224
231 void (*suspended)(struct bt_mesh_blob_cli *cli);
232
243 void (*end)(struct bt_mesh_blob_cli *cli,
244 const struct bt_mesh_blob_xfer *xfer, bool success);
245
255 void (*xfer_progress)(struct bt_mesh_blob_cli *cli,
256 struct bt_mesh_blob_target *target,
257 const struct bt_mesh_blob_xfer_info *info);
258
266};
267
269struct blob_cli_broadcast_ctx {
271 void (*send)(struct bt_mesh_blob_cli *cli, uint16_t dst);
273 void (*send_complete)(struct bt_mesh_blob_cli *cli, uint16_t dst);
278 void (*next)(struct bt_mesh_blob_cli *cli);
282 bool acked;
284 bool force_unicast;
286 bool optional;
290 bool is_inited;
291 /* Defines a time in ms by which the broadcast API postpones sending the message to a next
292 * target or completing the broadcast.
293 */
294 uint32_t post_send_delay_ms;
295};
297
301 const struct bt_mesh_blob_cli_cb *cb;
302
303 /* Runtime state */
304 const struct bt_mesh_model *mod;
305
306 struct {
308 struct blob_cli_broadcast_ctx ctx;
310 /* Represents Client Timeout timer in a timestamp. Used in Pull mode only. */
317 } tx;
318
319 const struct bt_mesh_blob_io *io;
321 const struct bt_mesh_blob_xfer *xfer;
329};
330
351 const struct bt_mesh_blob_cli_inputs *inputs);
352
375 const struct bt_mesh_blob_cli_inputs *inputs,
376 const struct bt_mesh_blob_xfer *xfer,
377 const struct bt_mesh_blob_io *io);
378
386
394
400
414 const struct bt_mesh_blob_cli_inputs *inputs);
415
423
432
448
450extern const struct bt_mesh_model_op _bt_mesh_blob_cli_op[];
451extern const struct bt_mesh_model_cb _bt_mesh_blob_cli_cb;
453
455
456#ifdef __cplusplus
457}
458#endif
459
460#endif /* ZEPHYR_INCLUDE_BLUETOOTH_MESH_BLOB_CLI_H_ */
Access layer APIs.
Header file for the Bluetooth Mesh BLOB Transfer model API.
void bt_mesh_blob_cli_set_chunk_interval_ms(struct bt_mesh_blob_cli *cli, uint32_t interval_ms)
Set chunk sending interval in ms.
uint8_t bt_mesh_blob_cli_xfer_progress_active_get(struct bt_mesh_blob_cli *cli)
Get the current progress of the active transfer in percent.
int bt_mesh_blob_cli_xfer_progress_get(struct bt_mesh_blob_cli *cli, const struct bt_mesh_blob_cli_inputs *inputs)
Get the progress of BLOB transfer.
void bt_mesh_blob_cli_cancel(struct bt_mesh_blob_cli *cli)
Cancel an ongoing transfer.
bool bt_mesh_blob_cli_is_busy(struct bt_mesh_blob_cli *cli)
Get the current state of the BLOB Transfer Client.
int bt_mesh_blob_cli_resume(struct bt_mesh_blob_cli *cli)
Resume the suspended transfer.
int bt_mesh_blob_cli_send(struct bt_mesh_blob_cli *cli, const struct bt_mesh_blob_cli_inputs *inputs, const struct bt_mesh_blob_xfer *xfer, const struct bt_mesh_blob_io *io)
Perform a BLOB transfer.
int bt_mesh_blob_cli_suspend(struct bt_mesh_blob_cli *cli)
Suspend the active transfer.
int bt_mesh_blob_cli_caps_get(struct bt_mesh_blob_cli *cli, const struct bt_mesh_blob_cli_inputs *inputs)
Retrieve transfer capabilities for a list of Target nodes.
bt_mesh_blob_cli_state
BLOB Transfer Client state.
Definition blob_cli.h:169
@ BT_MESH_BLOB_CLI_STATE_BLOCK_CHECK
Checking block status.
Definition blob_cli.h:181
@ BT_MESH_BLOB_CLI_STATE_NONE
No transfer is active.
Definition blob_cli.h:171
@ BT_MESH_BLOB_CLI_STATE_CANCEL
Cancelling transfer.
Definition blob_cli.h:185
@ BT_MESH_BLOB_CLI_STATE_CAPS_GET
Retrieving transfer capabilities.
Definition blob_cli.h:173
@ BT_MESH_BLOB_CLI_STATE_SUSPENDED
Transfer is suspended.
Definition blob_cli.h:187
@ BT_MESH_BLOB_CLI_STATE_START
Sending transfer start.
Definition blob_cli.h:175
@ BT_MESH_BLOB_CLI_STATE_XFER_CHECK
Checking transfer status.
Definition blob_cli.h:183
@ BT_MESH_BLOB_CLI_STATE_BLOCK_SEND
Sending block chunks.
Definition blob_cli.h:179
@ BT_MESH_BLOB_CLI_STATE_XFER_PROGRESS_GET
Checking transfer progress.
Definition blob_cli.h:189
@ BT_MESH_BLOB_CLI_STATE_BLOCK_START
Sending block start.
Definition blob_cli.h:177
bt_mesh_blob_xfer_phase
Transfer phase.
Definition blob.h:47
#define CONFIG_BT_MESH_BLOB_CHUNK_COUNT_MAX
Definition blob.h:31
bt_mesh_blob_status
BLOB model status codes.
Definition blob.h:63
bt_mesh_blob_xfer_mode
BLOB transfer mode.
Definition blob.h:35
struct _slist sys_slist_t
Single-linked list structure.
Definition slist.h:52
struct _snode sys_snode_t
Single-linked list node structure.
Definition slist.h:42
#define DIV_ROUND_UP(n, d)
Divide and round up.
Definition util.h:348
ssize_t send(int sock, const void *buf, size_t len, int flags)
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT64_TYPE__ uint64_t
Definition stdint.h:91
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
__INT64_TYPE__ int64_t
Definition stdint.h:75
BLOB transfer data block.
Definition blob.h:104
Transfer capabilities of a Target node.
Definition blob_cli.h:145
enum bt_mesh_blob_xfer_mode modes
Supported transfer modes.
Definition blob_cli.h:165
uint16_t max_chunks
Max number of chunks per block.
Definition blob_cli.h:156
uint8_t max_block_size_log
Logarithmic representation of the maximum block size.
Definition blob_cli.h:153
uint16_t mtu_size
Max MTU size.
Definition blob_cli.h:162
uint8_t min_block_size_log
Logarithmic representation of the minimum block size.
Definition blob_cli.h:150
uint16_t max_chunk_size
Max chunk size.
Definition blob_cli.h:159
size_t max_size
Max BLOB size.
Definition blob_cli.h:147
Event handler callbacks for the BLOB Transfer Client model.
Definition blob_cli.h:196
void(* suspended)(struct bt_mesh_blob_cli *cli)
Transfer is suspended.
Definition blob_cli.h:231
void(* lost_target)(struct bt_mesh_blob_cli *cli, struct bt_mesh_blob_target *target, enum bt_mesh_blob_status reason)
Target node loss callback.
Definition blob_cli.h:221
void(* xfer_progress)(struct bt_mesh_blob_cli *cli, struct bt_mesh_blob_target *target, const struct bt_mesh_blob_xfer_info *info)
Transfer progress callback.
Definition blob_cli.h:255
void(* caps)(struct bt_mesh_blob_cli *cli, const struct bt_mesh_blob_cli_caps *caps)
Capabilities retrieval completion callback.
Definition blob_cli.h:208
void(* end)(struct bt_mesh_blob_cli *cli, const struct bt_mesh_blob_xfer *xfer, bool success)
Transfer end callback.
Definition blob_cli.h:243
void(* xfer_progress_complete)(struct bt_mesh_blob_cli *cli)
End of Get Transfer Progress procedure.
Definition blob_cli.h:265
BLOB Transfer Client transfer inputs.
Definition blob_cli.h:110
uint16_t timeout_base
Additional response time for the Target nodes, in 10-second increments.
Definition blob_cli.h:141
uint16_t app_idx
AppKey index to send with.
Definition blob_cli.h:117
sys_slist_t targets
Linked list of Target nodes.
Definition blob_cli.h:114
uint16_t group
Group address destination for the BLOB transfer, or BT_MESH_ADDR_UNASSIGNED to send every message to ...
Definition blob_cli.h:123
uint8_t ttl
Time to live value of BLOB transfer messages.
Definition blob_cli.h:126
BLOB Transfer Client model instance.
Definition blob_cli.h:299
uint16_t pending
Definition blob_cli.h:313
struct k_work_delayable complete
Definition blob_cli.h:312
uint32_t chunk_interval_ms
Definition blob_cli.h:322
struct bt_mesh_blob_cli::@115057135266161210151103154264314204011306001332 tx
const struct bt_mesh_blob_io * io
Definition blob_cli.h:319
struct bt_mesh_blob_target * target
Definition blob_cli.h:307
uint16_t block_count
Definition blob_cli.h:323
const struct bt_mesh_blob_cli_cb * cb
Event handler callbacks.
Definition blob_cli.h:301
uint8_t cancelled
Definition blob_cli.h:316
int64_t cli_timestamp
Definition blob_cli.h:311
struct blob_cli_broadcast_ctx ctx
Definition blob_cli.h:308
uint8_t sending
Definition blob_cli.h:315
const struct bt_mesh_blob_xfer * xfer
Definition blob_cli.h:321
const struct bt_mesh_blob_cli_inputs * inputs
Definition blob_cli.h:320
struct bt_mesh_blob_cli_caps caps
Definition blob_cli.h:328
uint16_t chunk_idx
Definition blob_cli.h:324
uint16_t mtu_size
Definition blob_cli.h:325
enum bt_mesh_blob_cli_state state
Definition blob_cli.h:326
uint8_t retries
Definition blob_cli.h:314
struct bt_mesh_blob_block block
Definition blob_cli.h:327
const struct bt_mesh_model * mod
Definition blob_cli.h:304
struct k_work_delayable retry
Definition blob_cli.h:309
BLOB stream.
Definition blob.h:151
Target node's Pull mode (Pull BLOB Transfer Mode) context used while sending chunks to the Target nod...
Definition blob_cli.h:46
uint8_t missing[(((CONFIG_BT_MESH_BLOB_CHUNK_COUNT_MAX)+(8) - 1)/(8))]
Missing chunks reported by this Target node.
Definition blob_cli.h:51
int64_t block_report_timestamp
Timestamp when the Block Report Timeout Timer expires for this Target node.
Definition blob_cli.h:48
BLOB Transfer Client Target node.
Definition blob_cli.h:55
struct bt_mesh_blob_target_pull * pull
Target node's Pull mode context.
Definition blob_cli.h:65
uint8_t timedout
Definition blob_cli.h:72
uint8_t acked
Definition blob_cli.h:71
uint8_t status
BLOB transfer status, see bt_mesh_blob_status.
Definition blob_cli.h:68
uint8_t procedure_complete
Definition blob_cli.h:70
uint8_t skip
Definition blob_cli.h:73
uint16_t addr
Target node address.
Definition blob_cli.h:60
sys_snode_t n
Linked list node.
Definition blob_cli.h:57
BLOB transfer information.
Definition blob_cli.h:83
uint64_t id
BLOB ID.
Definition blob_cli.h:94
enum bt_mesh_blob_xfer_phase phase
BLOB transfer phase.
Definition blob_cli.h:91
enum bt_mesh_blob_xfer_mode mode
BLOB transfer mode.
Definition blob_cli.h:88
const uint8_t * missing_blocks
Bit field indicating blocks that were not received.
Definition blob_cli.h:106
enum bt_mesh_blob_status status
BLOB transfer status.
Definition blob_cli.h:85
uint32_t size
BLOB size in octets.
Definition blob_cli.h:97
uint8_t block_size_log
Logarithmic representation of the block size.
Definition blob_cli.h:100
uint16_t mtu_size
MTU size in octets.
Definition blob_cli.h:103
BLOB transfer.
Definition blob.h:129
Model callback functions.
Definition access.h:635
Model opcode handler.
Definition access.h:182
Abstraction that describes a Mesh Model instance.
Definition access.h:713
A structure used to submit work after a delay.
Definition kernel.h:4642