blob: e7e58c3d41e5fa6dbba3f91b3c5d75d062654b2e [file] [log] [blame]
/*
* 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__ */