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

            Line data    Source code
       1            1 : /** @file
       2              :  *  @brief Heartbeat APIs.
       3              :  */
       4              : 
       5              : /*
       6              :  * Copyright (c) 2020 Nordic Semiconductor ASA
       7              :  *
       8              :  * SPDX-License-Identifier: Apache-2.0
       9              :  */
      10              : #ifndef ZEPHYR_INCLUDE_BLUETOOTH_MESH_HEARTBEAT_H_
      11              : #define ZEPHYR_INCLUDE_BLUETOOTH_MESH_HEARTBEAT_H_
      12              : 
      13              : #include <stdint.h>
      14              : 
      15              : #include <zephyr/sys/iterable_sections.h>
      16              : #include <zephyr/sys/slist.h>
      17              : 
      18              : /**
      19              :  * @brief Heartbeat
      20              :  * @defgroup bt_mesh_heartbeat Heartbeat
      21              :  * @ingroup bt_mesh
      22              :  * @{
      23              :  */
      24              : 
      25              : #ifdef __cplusplus
      26              : extern "C" {
      27              : #endif
      28              : 
      29              : /** Heartbeat Publication parameters */
      30            1 : struct bt_mesh_hb_pub {
      31              :         /** Destination address. */
      32            1 :         uint16_t dst;
      33              :         /** Remaining publish count. */
      34            1 :         uint16_t count;
      35              :         /** Time To Live value. */
      36            1 :         uint8_t ttl;
      37              :         /**
      38              :          * Bitmap of features that trigger a Heartbeat publication if
      39              :          * they change. Legal values are @ref BT_MESH_FEAT_RELAY,
      40              :          * @ref BT_MESH_FEAT_PROXY, @ref BT_MESH_FEAT_FRIEND and
      41              :          * @ref BT_MESH_FEAT_LOW_POWER.
      42              :          */
      43            1 :         uint16_t feat;
      44              :         /** Network index used for publishing. */
      45            1 :         uint16_t net_idx;
      46              :         /** Publication period in seconds. */
      47            1 :         uint32_t period;
      48              : };
      49              : 
      50              : /** Heartbeat Subscription parameters. */
      51            1 : struct bt_mesh_hb_sub {
      52              :         /** Subscription period in seconds. */
      53            1 :         uint32_t period;
      54              :         /** Remaining subscription time in seconds. */
      55            1 :         uint32_t remaining;
      56              :         /** Source address to receive Heartbeats from. */
      57            1 :         uint16_t src;
      58              :         /** Destination address to received Heartbeats on. */
      59            1 :         uint16_t dst;
      60              :         /** The number of received Heartbeat messages so far. */
      61            1 :         uint16_t count;
      62              :         /**
      63              :          * Minimum hops in received messages, ie the shortest registered
      64              :          * path from the publishing node to the subscribing node. A
      65              :          * Heartbeat received from an immediate neighbor has hop
      66              :          * count = 1.
      67              :          */
      68            1 :         uint8_t min_hops;
      69              :         /**
      70              :          * Maximum hops in received messages, ie the longest registered
      71              :          * path from the publishing node to the subscribing node. A
      72              :          * Heartbeat received from an immediate neighbor has hop
      73              :          * count = 1.
      74              :          */
      75            1 :         uint8_t max_hops;
      76              : };
      77              : 
      78              : /** Heartbeat callback structure */
      79            1 : struct bt_mesh_hb_cb {
      80              :         /** @brief Receive callback for heartbeats.
      81              :          *
      82              :          *  Gets called on every received Heartbeat that matches the current
      83              :          *  Heartbeat subscription parameters.
      84              :          *
      85              :          *  @param sub  Current Heartbeat subscription parameters.
      86              :          *  @param hops The number of hops the Heartbeat was received
      87              :          *              with.
      88              :          *  @param feat The feature set of the publishing node. The
      89              :          *              value is a bitmap of @ref BT_MESH_FEAT_RELAY,
      90              :          *              @ref BT_MESH_FEAT_PROXY,
      91              :          *              @ref BT_MESH_FEAT_FRIEND and
      92              :          *              @ref BT_MESH_FEAT_LOW_POWER.
      93              :          */
      94            1 :         void (*recv)(const struct bt_mesh_hb_sub *sub, uint8_t hops,
      95              :                      uint16_t feat);
      96              : 
      97              :         /** @brief Subscription end callback for heartbeats.
      98              :          *
      99              :          *  Gets called when the subscription period ends, providing a summary
     100              :          *  of the received heartbeat messages.
     101              :          *
     102              :          *  @param sub Current Heartbeat subscription parameters.
     103              :          */
     104            1 :         void (*sub_end)(const struct bt_mesh_hb_sub *sub);
     105              : 
     106              :         /** @brief Publication sent callback for heartbeats.
     107              :          *
     108              :          *  Gets called when the heartbeat is successfully published.
     109              :          *
     110              :          *  @param pub Current Heartbeat publication parameters.
     111              :          */
     112            1 :         void (*pub_sent)(const struct bt_mesh_hb_pub *pub);
     113              : };
     114              : 
     115              : /**
     116              :  *  @brief Register a callback structure for Heartbeat events.
     117              :  *
     118              :  *  Registers a callback structure that will be called whenever Heartbeat
     119              :  *  events occur
     120              :  *
     121              :  *  @param _name Name of callback structure.
     122              :  */
     123            1 : #define BT_MESH_HB_CB_DEFINE(_name)                                            \
     124              :         static const STRUCT_SECTION_ITERABLE(bt_mesh_hb_cb, _name)
     125              : 
     126              : /** @brief Get the current Heartbeat publication parameters.
     127              :  *
     128              :  *  @param get Heartbeat publication parameters return buffer.
     129              :  */
     130            1 : void bt_mesh_hb_pub_get(struct bt_mesh_hb_pub *get);
     131              : 
     132              : /** @brief Get the current Heartbeat subscription parameters.
     133              :  *
     134              :  *  @param get Heartbeat subscription parameters return buffer.
     135              :  */
     136            1 : void bt_mesh_hb_sub_get(struct bt_mesh_hb_sub *get);
     137              : 
     138              : #ifdef __cplusplus
     139              : }
     140              : #endif
     141              : /**
     142              :  * @}
     143              :  */
     144              : 
     145              : #endif /* ZEPHYR_INCLUDE_BLUETOOTH_MESH_HEARTBEAT_H_ */
        

Generated by: LCOV version 2.0-1