LCOV - code coverage report
Current view: top level - zephyr/bluetooth/services/nus - inst.h Hit Total Coverage
Test: new.info Lines: 3 9 33.3 %
Date: 2024-12-21 18:13:37

          Line data    Source code
       1           0 : /*
       2             :  * Copyright (c) 2024 Croxel, Inc.
       3             :  *
       4             :  * SPDX-License-Identifier: Apache-2.0
       5             :  */
       6             : 
       7             : #ifndef ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_NUS_INST_H_
       8             : #define ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_NUS_INST_H_
       9             : 
      10             : #include <zephyr/bluetooth/gatt.h>
      11             : #include <zephyr/sys/iterable_sections.h>
      12             : #include <zephyr/sys/slist.h>
      13             : 
      14             : #ifdef __cplusplus
      15             : extern "C" {
      16             : #endif
      17             : 
      18           0 : struct bt_nus_inst {
      19             :         /** Pointer to the NUS Service Instance  */
      20           1 :         const struct bt_gatt_service_static *svc;
      21             : 
      22             :         /** List of subscribers to invoke callbacks on asynchronous events */
      23           1 :         sys_slist_t *cbs;
      24             : };
      25             : 
      26           0 : #define BT_UUID_NUS_SERVICE BT_UUID_DECLARE_128(BT_UUID_NUS_SRV_VAL)
      27           0 : #define BT_UUID_NUS_TX_CHAR BT_UUID_DECLARE_128(BT_UUID_NUS_TX_CHAR_VAL)
      28           0 : #define BT_UUID_NUS_RX_CHAR BT_UUID_DECLARE_128(BT_UUID_NUS_RX_CHAR_VAL)
      29             : 
      30             : /** Required as the service may be instantiated outside of the module */
      31           1 : ssize_t nus_bt_chr_write(struct bt_conn *conn, const struct bt_gatt_attr *attr,
      32             :         const void *buf, uint16_t len, uint16_t offset, uint8_t flags);
      33           0 : void nus_ccc_cfg_changed(const struct bt_gatt_attr *attr, uint16_t value);
      34             : 
      35             : #define Z_INTERNAL_BT_NUS_INST_DEFINE(_name)                                                       \
      36             :                                                                                                    \
      37             : BT_GATT_SERVICE_DEFINE(_name##_svc,                                                                \
      38             :         BT_GATT_PRIMARY_SERVICE(BT_UUID_NUS_SERVICE),                                              \
      39             :         BT_GATT_CHARACTERISTIC(BT_UUID_NUS_TX_CHAR,                                                \
      40             :                 BT_GATT_CHRC_NOTIFY,                                                               \
      41             :                 BT_GATT_PERM_NONE,                                                                 \
      42             :                 NULL, NULL, NULL),                                                                 \
      43             :         BT_GATT_CCC(nus_ccc_cfg_changed,                                                           \
      44             :                 BT_GATT_PERM_READ | BT_GATT_PERM_WRITE),                                           \
      45             :         BT_GATT_CHARACTERISTIC(BT_UUID_NUS_RX_CHAR,                                                \
      46             :                 BT_GATT_CHRC_WRITE |                                                               \
      47             :                 BT_GATT_CHRC_WRITE_WITHOUT_RESP,                                                   \
      48             :                 BT_GATT_PERM_WRITE,                                                                \
      49             :                 NULL, nus_bt_chr_write, NULL),                                                     \
      50             : );                                                                                                 \
      51             :                                                                                                    \
      52             : sys_slist_t _name##_cbs = SYS_SLIST_STATIC_INIT(&_name##_cbs);                                         \
      53             :                                                                                                    \
      54             : STRUCT_SECTION_ITERABLE(bt_nus_inst, _name) = {                                                    \
      55             :         .svc = &_name##_svc,                                                                           \
      56             :         .cbs = &_name##_cbs,                                                                           \
      57             : }
      58             : 
      59             : #ifdef __cplusplus
      60             : }
      61             : #endif
      62             : 
      63             : #endif /* ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_NUS_INST_H_ */

Generated by: LCOV version 1.14