LCOV - code coverage report
Current view: top level - zephyr/bluetooth/mesh - dfu.h Coverage Total Hit
Test: new.info Lines: 73.7 % 19 14
Test Date: 2025-09-05 16:43:28

            Line data    Source code
       1            0 : /*
       2              :  * Copyright (c) 2020 Nordic Semiconductor ASA
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : 
       7              : #ifndef ZEPHYR_INCLUDE_BLUETOOTH_MESH_DFU_H__
       8              : #define ZEPHYR_INCLUDE_BLUETOOTH_MESH_DFU_H__
       9              : 
      10              : #include <sys/types.h>
      11              : 
      12              : #include <zephyr/kernel.h>
      13              : #include <zephyr/bluetooth/mesh/blob.h>
      14              : 
      15              : #ifdef __cplusplus
      16              : extern "C" {
      17              : #endif
      18              : 
      19              : /**
      20              :  * @defgroup bt_mesh_dfu Bluetooth Mesh Device Firmware Update
      21              :  * @ingroup bt_mesh
      22              :  * @{
      23              :  */
      24              : 
      25              : #ifndef CONFIG_BT_MESH_DFU_FWID_MAXLEN
      26            0 : #define CONFIG_BT_MESH_DFU_FWID_MAXLEN 0
      27              : #endif
      28              : 
      29              : #ifndef CONFIG_BT_MESH_DFU_METADATA_MAXLEN
      30            0 : #define CONFIG_BT_MESH_DFU_METADATA_MAXLEN 0
      31              : #endif
      32              : 
      33              : #ifndef CONFIG_BT_MESH_DFU_URI_MAXLEN
      34            0 : #define CONFIG_BT_MESH_DFU_URI_MAXLEN 0
      35              : #endif
      36              : 
      37              : #ifndef CONFIG_BT_MESH_DFU_SLOT_CNT
      38            0 : #define CONFIG_BT_MESH_DFU_SLOT_CNT 0
      39              : #endif
      40              : 
      41              : /** DFU transfer phase. */
      42            1 : enum bt_mesh_dfu_phase {
      43              :         /** Ready to start a Receive Firmware procedure. */
      44              :         BT_MESH_DFU_PHASE_IDLE,
      45              : 
      46              :         /** The Transfer BLOB procedure failed. */
      47              :         BT_MESH_DFU_PHASE_TRANSFER_ERR,
      48              : 
      49              :         /** The Receive Firmware procedure is being executed.  */
      50              :         BT_MESH_DFU_PHASE_TRANSFER_ACTIVE,
      51              : 
      52              :         /** The Verify Firmware procedure is being executed. */
      53              :         BT_MESH_DFU_PHASE_VERIFY,
      54              : 
      55              :         /** The Verify Firmware procedure completed successfully. */
      56              :         BT_MESH_DFU_PHASE_VERIFY_OK,
      57              : 
      58              :         /** The Verify Firmware procedure failed. */
      59              :         BT_MESH_DFU_PHASE_VERIFY_FAIL,
      60              : 
      61              :         /** The Apply New Firmware procedure is being executed. */
      62              :         BT_MESH_DFU_PHASE_APPLYING,
      63              : 
      64              :         /** Firmware transfer has been canceled. */
      65              :         BT_MESH_DFU_PHASE_TRANSFER_CANCELED,
      66              : 
      67              :         /** Firmware applying succeeded. */
      68              :         BT_MESH_DFU_PHASE_APPLY_SUCCESS,
      69              : 
      70              :         /** Firmware applying failed. */
      71              :         BT_MESH_DFU_PHASE_APPLY_FAIL,
      72              : 
      73              :         /** Phase of a node was not yet retrieved. */
      74              :         BT_MESH_DFU_PHASE_UNKNOWN,
      75              : };
      76              : 
      77              : 
      78              : /** DFU status. */
      79            1 : enum bt_mesh_dfu_status {
      80              :         /** The message was processed successfully. */
      81              :         BT_MESH_DFU_SUCCESS,
      82              : 
      83              :         /** Insufficient resources on the node */
      84              :         BT_MESH_DFU_ERR_RESOURCES,
      85              : 
      86              :         /** The operation cannot be performed while the Server is in the current
      87              :          *  phase.
      88              :          */
      89              :         BT_MESH_DFU_ERR_WRONG_PHASE,
      90              : 
      91              :         /** An internal error occurred on the node. */
      92              :         BT_MESH_DFU_ERR_INTERNAL,
      93              : 
      94              :         /** The message contains a firmware index value that is not expected. */
      95              :         BT_MESH_DFU_ERR_FW_IDX,
      96              : 
      97              :         /** The metadata check failed. */
      98              :         BT_MESH_DFU_ERR_METADATA,
      99              : 
     100              :         /** The Server cannot start a firmware update. */
     101              :         BT_MESH_DFU_ERR_TEMPORARILY_UNAVAILABLE,
     102              : 
     103              :         /** Another BLOB transfer is in progress. */
     104              :         BT_MESH_DFU_ERR_BLOB_XFER_BUSY,
     105              : };
     106              : 
     107              : /** Expected effect of a DFU transfer. */
     108            1 : enum bt_mesh_dfu_effect {
     109              :         /** No changes to node Composition Data. */
     110              :         BT_MESH_DFU_EFFECT_NONE,
     111              : 
     112              :         /** Node Composition Data changed and the node does not support remote
     113              :          *  provisioning.
     114              :          */
     115              :         BT_MESH_DFU_EFFECT_COMP_CHANGE_NO_RPR,
     116              : 
     117              :         /** Node Composition Data changed, and remote provisioning is supported.
     118              :          *  The node supports remote provisioning and Composition Data Page
     119              :          *  0x80. Page 0x80 contains different Composition Data than Page 0x0.
     120              :          */
     121              :         BT_MESH_DFU_EFFECT_COMP_CHANGE,
     122              : 
     123              :         /** Node will be unprovisioned after the update. */
     124              :         BT_MESH_DFU_EFFECT_UNPROV,
     125              : };
     126              : 
     127              : /** Action for DFU iteration callbacks. */
     128            1 : enum bt_mesh_dfu_iter {
     129              :         /** Stop iterating. */
     130              :         BT_MESH_DFU_ITER_STOP,
     131              : 
     132              :         /** Continue iterating. */
     133              :         BT_MESH_DFU_ITER_CONTINUE,
     134              : };
     135              : 
     136              : /** DFU image instance.
     137              :  *
     138              :  *  Each DFU image represents a single updatable firmware image.
     139              :  */
     140            1 : struct bt_mesh_dfu_img {
     141              :         /** Firmware ID. */
     142            1 :         const void *fwid;
     143              : 
     144              :         /** Length of the firmware ID. */
     145            1 :         size_t fwid_len;
     146              : 
     147              :         /** Update URI, or NULL. */
     148            1 :         const char *uri;
     149              : };
     150              : 
     151              : /** DFU image slot for DFU distribution. */
     152            1 : struct bt_mesh_dfu_slot {
     153              :         /** Size of the firmware in bytes. */
     154            1 :         size_t size;
     155              :         /** Length of the firmware ID. */
     156            1 :         size_t fwid_len;
     157              :         /** Length of the metadata. */
     158            1 :         size_t metadata_len;
     159              :         /** Firmware ID. */
     160            1 :         uint8_t fwid[CONFIG_BT_MESH_DFU_FWID_MAXLEN];
     161              :         /** Metadata. */
     162            1 :         uint8_t metadata[CONFIG_BT_MESH_DFU_METADATA_MAXLEN];
     163              : };
     164              : 
     165              : /** @} */
     166              : 
     167              : #ifdef __cplusplus
     168              : }
     169              : #endif
     170              : 
     171              : #endif /* ZEPHYR_INCLUDE_BLUETOOTH_MESH_DFU_H__ */
        

Generated by: LCOV version 2.0-1