Lines Matching full:the
6 The Binary Large Object (BLOB) Transfer Server model implements reliable receiving of large binary
7 objects. It serves as the backend of the :ref:`bluetooth_mesh_dfu_srv`, but can also be used for
13 As described in :ref:`bluetooth_mesh_blob`, the binary objects transferred by the BLOB Transfer
14 models are divided into blocks, which are divided into chunks. As the transfer is controlled by the
15 BLOB Transfer Client model, the BLOB Transfer Server must allow blocks to come in any order. The
17 the next block is started.
19 The BLOB Transfer Server keeps track of the received blocks and chunks, and will process each block
20 and chunk only once. The BLOB Transfer Server also ensures that any missing chunks are resent by the
26 The BLOB Transfer Server is instantiated on an element with a set of event handler callbacks:
42 A BLOB Transfer Server is capable of receiving a single BLOB transfer at a time. Before the BLOB
43 Transfer Server can receive a transfer, it must be prepared by the user. The transfer ID must be
44 passed to the BLOB Transfer Server through the :c:func:`bt_mesh_blob_srv_recv` function before the
45 transfer is started by the BLOB Transfer Client. The ID must be shared between the BLOB Transfer
46 Client and the BLOB Transfer Server through some higher level procedure, like a vendor specific
49 Once the transfer has been set up on the BLOB Transfer Server, it's ready for receiving the BLOB.
50 The application is notified of the transfer progress through the event handler callbacks, and the
51 BLOB data is sent to the BLOB stream.
53 The interaction between the BLOB Transfer Server, BLOB stream and application is shown below:
64 The BLOB Transfer Server keeps a running timer during the transfer, that is reset on every received
65 message. If the BLOB Transfer Client does not send a message before the transfer timer expires, the
66 transfer is suspended by the BLOB Transfer Server.
68 The BLOB Transfer Server notifies the user of the suspension by calling the :c:member:`suspended
69 <bt_mesh_blob_srv_cb.suspended>` callback. If the BLOB Transfer Server is in the middle of receiving
72 The BLOB Transfer Client may resume a suspended transfer by starting a new block transfer. The BLOB
73 Transfer Server notifies the user by calling the :c:member:`resume <bt_mesh_blob_srv_cb.resume>`
79 The state of the BLOB transfer is stored persistently. If a reboot occurs, the BLOB Transfer Server
80 will attempt to recover the transfer. When the Bluetooth Mesh subsystem is started (for instance by
81 calling :c:func:`bt_mesh_init`), the BLOB Transfer Server will check for aborted transfers, and call
82 the :c:member:`recover <bt_mesh_blob_srv_cb.recover>` callback if there is any. In the recover
83 callback, the user must provide a BLOB stream to use for the rest of the transfer. If the recover
84 callback doesn't return successfully or does not provide a BLOB stream, the transfer is abandoned.
87 After a transfer is successfully recovered, the BLOB Transfer Server enters the suspended state. It
88 will stay suspended until the BLOB Transfer Client resumes the transfer, or the user cancels it.
91 The BLOB Transfer Client sending the transfer must support transfer recovery for the transfer to
92 complete. If the BLOB Transfer Client has already given up the transfer, the BLOB Transfer Server
93 will stay suspended until the application calls :c:func:`bt_mesh_blob_srv_cancel`.