|  | /* | 
|  | * Copyright (c) 2021 Nordic Semiconductor ASA | 
|  | * | 
|  | * SPDX-License-Identifier: Apache-2.0 | 
|  | */ | 
|  | /** | 
|  | * @file | 
|  | * @brief Internal Transport SAR Configuration API | 
|  | */ | 
|  |  | 
|  | #ifndef ZEPHYR_SUBSYS_BLUETOOTH_MESH_SAR_CFG_INTERNAL_H__ | 
|  | #define ZEPHYR_SUBSYS_BLUETOOTH_MESH_SAR_CFG_INTERNAL_H__ | 
|  |  | 
|  | /** SAR Transmitter Configuraion state encoded length */ | 
|  | #define BT_MESH_SAR_TX_LEN 4 | 
|  | /** SAR Receiver Configuraion state encoded length */ | 
|  | #define BT_MESH_SAR_RX_LEN 3 | 
|  |  | 
|  | /** SAR Transmitter Configuration state initializer */ | 
|  | #define BT_MESH_SAR_TX_INIT                                                       \ | 
|  | {                                                                         \ | 
|  | CONFIG_BT_MESH_SAR_TX_SEG_INT_STEP,                               \ | 
|  | CONFIG_BT_MESH_SAR_TX_UNICAST_RETRANS_COUNT,              \ | 
|  | CONFIG_BT_MESH_SAR_TX_UNICAST_RETRANS_WITHOUT_PROG_COUNT, \ | 
|  | CONFIG_BT_MESH_SAR_TX_UNICAST_RETRANS_INT_STEP,           \ | 
|  | CONFIG_BT_MESH_SAR_TX_UNICAST_RETRANS_INT_INC,            \ | 
|  | CONFIG_BT_MESH_SAR_TX_MULTICAST_RETRANS_COUNT,            \ | 
|  | CONFIG_BT_MESH_SAR_TX_MULTICAST_RETRANS_INT,              \ | 
|  | } | 
|  |  | 
|  | /** SAR Receiver Configuration state initializer */ | 
|  | #define BT_MESH_SAR_RX_INIT                                                    \ | 
|  | {                                                                      \ | 
|  | CONFIG_BT_MESH_SAR_RX_SEG_THRESHOLD,                           \ | 
|  | CONFIG_BT_MESH_SAR_RX_ACK_DELAY_INC,                   \ | 
|  | CONFIG_BT_MESH_SAR_RX_DISCARD_TIMEOUT,                 \ | 
|  | CONFIG_BT_MESH_SAR_RX_SEG_INT_STEP,                    \ | 
|  | CONFIG_BT_MESH_SAR_RX_ACK_RETRANS_COUNT,               \ | 
|  | } | 
|  |  | 
|  | #define BT_MESH_SAR_TX_SEG_INT_MS ((bt_mesh.sar_tx.seg_int_step + 1) * 10) | 
|  | #define BT_MESH_SAR_TX_RETRANS_COUNT(addr)                                     \ | 
|  | (BT_MESH_ADDR_IS_UNICAST(addr) ?                                       \ | 
|  | (bt_mesh.sar_tx.unicast_retrans_count + 1) :                  \ | 
|  | (bt_mesh.sar_tx.multicast_retrans_count + 1)) | 
|  | #define BT_MESH_SAR_TX_RETRANS_NO_PROGRESS                                     \ | 
|  | (bt_mesh.sar_tx.unicast_retrans_without_prog_count + 1) | 
|  | #define BT_MESH_SAR_TX_UNICAST_RETRANS_INT_STEP_MS                             \ | 
|  | ((bt_mesh.sar_tx.unicast_retrans_int_step + 1) * 25) | 
|  | #define BT_MESH_SAR_TX_UNICAST_RETRANS_INT_INC_MS                              \ | 
|  | ((bt_mesh.sar_tx.unicast_retrans_int_inc + 1) * 25) | 
|  | #define BT_MESH_SAR_TX_UNICAST_RETRANS_TIMEOUT_MS(ttl)                         \ | 
|  | ((ttl > 0) ? (BT_MESH_SAR_TX_UNICAST_RETRANS_INT_STEP_MS +             \ | 
|  | BT_MESH_SAR_TX_UNICAST_RETRANS_INT_INC_MS * (ttl - 1)) : \ | 
|  | BT_MESH_SAR_TX_UNICAST_RETRANS_INT_STEP_MS) | 
|  | #define BT_MESH_SAR_TX_MULTICAST_RETRANS_TIMEOUT_MS                            \ | 
|  | ((bt_mesh.sar_tx.multicast_retrans_int + 1) * 25) | 
|  | #define BT_MESH_SAR_TX_RETRANS_TIMEOUT_MS(addr, ttl)                           \ | 
|  | (BT_MESH_ADDR_IS_UNICAST(addr) ?                                       \ | 
|  | BT_MESH_SAR_TX_UNICAST_RETRANS_TIMEOUT_MS(ttl) :              \ | 
|  | BT_MESH_SAR_TX_MULTICAST_RETRANS_TIMEOUT_MS) | 
|  |  | 
|  | #define BT_MESH_SAR_RX_SEG_THRESHOLD (bt_mesh.sar_rx.seg_thresh) | 
|  | #define BT_MESH_SAR_RX_ACK_DELAY_INC_X2 (bt_mesh.sar_rx.ack_delay_inc * 2 + 3) | 
|  | #define BT_MESH_SAR_RX_ACK_RETRANS_COUNT (bt_mesh.sar_rx.ack_retrans_count + 1) | 
|  | #define BT_MESH_SAR_RX_SEG_INT_MS ((bt_mesh.sar_rx.rx_seg_int_step + 1) * 10) | 
|  | #define BT_MESH_SAR_RX_DISCARD_TIMEOUT_MS                                      \ | 
|  | ((bt_mesh.sar_rx.discard_timeout + 1) * 5 * MSEC_PER_SEC) | 
|  |  | 
|  | void bt_mesh_sar_tx_encode(struct net_buf_simple *buf, | 
|  | const struct bt_mesh_sar_tx *tx); | 
|  | void bt_mesh_sar_rx_encode(struct net_buf_simple *buf, | 
|  | const struct bt_mesh_sar_rx *rx); | 
|  | void bt_mesh_sar_tx_decode(struct net_buf_simple *buf, | 
|  | struct bt_mesh_sar_tx *tx); | 
|  | void bt_mesh_sar_rx_decode(struct net_buf_simple *buf, | 
|  | struct bt_mesh_sar_rx *rx); | 
|  |  | 
|  | #endif /* ZEPHYR_SUBSYS_BLUETOOTH_MESH_SAR_CFG_INTERNAL_H__ */ |