Bluetooth: Mesh: Make TRANSMIT_COUNT & TRANSMIT_INT macros public
These are useful for apps who want to implement/use the Configuration Client Model. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
parent
52cc3b7d00
commit
17c9b3a105
6 changed files with 41 additions and 20 deletions
|
@ -199,6 +199,26 @@ struct bt_mesh_model_op {
|
|||
*/
|
||||
#define BT_MESH_TRANSMIT(count, int_ms) ((count) | (((int_ms / 10) - 1) << 3))
|
||||
|
||||
/** @def BT_MESH_TRANSMIT_COUNT
|
||||
*
|
||||
* @brief Decode transmit count from a transmit value.
|
||||
*
|
||||
* @param transmit Encoded transmit count & interval value.
|
||||
*
|
||||
* @return Transmission count (actual transmissions is N + 1).
|
||||
*/
|
||||
#define BT_MESH_TRANSMIT_COUNT(transmit) (((transmit) & (u8_t)BIT_MASK(3)))
|
||||
|
||||
/** @def BT_MESH_TRANSMIT_INT
|
||||
*
|
||||
* @brief Decode transmit interval from a transmit value.
|
||||
*
|
||||
* @param transmit Encoded transmit count & interval value.
|
||||
*
|
||||
* @return Transmission interval in milliseconds.
|
||||
*/
|
||||
#define BT_MESH_TRANSMIT_INT(transmit) ((((transmit) >> 3) + 1) * 10)
|
||||
|
||||
struct bt_mesh_model_pub {
|
||||
/* Self-reference for easy lookup */
|
||||
struct bt_mesh_model *mod;
|
||||
|
|
|
@ -831,7 +831,8 @@ static void net_transmit_set(struct bt_mesh_model *model,
|
|||
bt_hex(buf->data, buf->len));
|
||||
|
||||
BT_DBG("Transmit 0x%02x (count %u interval %ums)", buf->data[0],
|
||||
TRANSMIT_COUNT(buf->data[0]), TRANSMIT_INT(buf->data[0]));
|
||||
BT_MESH_TRANSMIT_COUNT(buf->data[0]),
|
||||
BT_MESH_TRANSMIT_INT(buf->data[0]));
|
||||
|
||||
if (!cfg) {
|
||||
BT_WARN("No Configuration Server context available");
|
||||
|
@ -890,8 +891,8 @@ static void relay_set(struct bt_mesh_model *model,
|
|||
|
||||
BT_DBG("Relay 0x%02x Retransmit 0x%02x (count %u interval %u)",
|
||||
cfg->relay, cfg->relay_retransmit,
|
||||
TRANSMIT_COUNT(cfg->relay_retransmit),
|
||||
TRANSMIT_INT(cfg->relay_retransmit))
|
||||
BT_MESH_TRANSMIT_COUNT(cfg->relay_retransmit),
|
||||
BT_MESH_TRANSMIT_INT(cfg->relay_retransmit))
|
||||
|
||||
sub = bt_mesh_subnet_get(cfg->hb_pub.net_idx);
|
||||
if ((cfg->hb_pub.feat & BT_MESH_FEAT_RELAY) && sub && change) {
|
||||
|
@ -1022,7 +1023,8 @@ static void mod_pub_set(struct bt_mesh_model *model,
|
|||
BT_DBG("pub_app_idx 0x%03x, pub_ttl %u pub_period 0x%02x",
|
||||
pub_app_idx, pub_ttl, pub_period);
|
||||
BT_DBG("retransmit 0x%02x (count %u interval %ums)", retransmit,
|
||||
TRANSMIT_COUNT(retransmit), TRANSMIT_INT(retransmit));
|
||||
BT_MESH_TRANSMIT_COUNT(retransmit),
|
||||
BT_MESH_TRANSMIT_INT(retransmit));
|
||||
|
||||
elem = bt_mesh_elem_find(elem_addr);
|
||||
if (!elem) {
|
||||
|
@ -1128,7 +1130,8 @@ static void mod_pub_va_set(struct bt_mesh_model *model,
|
|||
BT_DBG("pub_app_idx 0x%03x, pub_ttl %u pub_period 0x%02x",
|
||||
pub_app_idx, pub_ttl, pub_period);
|
||||
BT_DBG("retransmit 0x%02x (count %u interval %ums)", retransmit,
|
||||
TRANSMIT_COUNT(retransmit), TRANSMIT_INT(retransmit));
|
||||
BT_MESH_TRANSMIT_COUNT(retransmit),
|
||||
BT_MESH_TRANSMIT_INT(retransmit));
|
||||
|
||||
elem = bt_mesh_elem_find(elem_addr);
|
||||
if (!elem) {
|
||||
|
|
|
@ -121,11 +121,6 @@ void bt_mesh_attention(struct bt_mesh_model *model, u8_t time);
|
|||
|
||||
u8_t *bt_mesh_label_uuid_get(u16_t addr);
|
||||
|
||||
/* Transmission count (N + 1) */
|
||||
#define TRANSMIT_COUNT(transmit) (((transmit) & (u8_t)BIT_MASK(3)))
|
||||
/* Returns transmission interval in milliseconds */
|
||||
#define TRANSMIT_INT(transmit) ((((transmit) >> 3) + 1) * 10)
|
||||
|
||||
u8_t bt_mesh_net_transmit_get(void);
|
||||
u8_t bt_mesh_relay_get(void);
|
||||
u8_t bt_mesh_friend_get(void);
|
||||
|
|
|
@ -81,8 +81,8 @@ static struct net_buf *friend_buf_alloc(u16_t src)
|
|||
do {
|
||||
buf = bt_mesh_adv_create_from_pool(&friend_buf_pool,
|
||||
BT_MESH_ADV_DATA,
|
||||
TRANSMIT_COUNT(xmit),
|
||||
TRANSMIT_INT(xmit),
|
||||
BT_MESH_TRANSMIT_COUNT(xmit),
|
||||
BT_MESH_TRANSMIT_INT(xmit),
|
||||
K_NO_WAIT);
|
||||
if (!buf) {
|
||||
discard_buffer();
|
||||
|
|
|
@ -1045,8 +1045,9 @@ static void bt_mesh_net_relay(struct net_buf_simple *sbuf,
|
|||
BT_DBG("TTL %u CTL %u dst 0x%04x", rx->ctx.recv_ttl, rx->ctl, rx->dst);
|
||||
|
||||
transmit = bt_mesh_relay_retransmit_get();
|
||||
buf = bt_mesh_adv_create(BT_MESH_ADV_DATA, TRANSMIT_COUNT(transmit),
|
||||
TRANSMIT_INT(transmit), K_NO_WAIT);
|
||||
buf = bt_mesh_adv_create(BT_MESH_ADV_DATA,
|
||||
BT_MESH_TRANSMIT_COUNT(transmit),
|
||||
BT_MESH_TRANSMIT_INT(transmit), K_NO_WAIT);
|
||||
if (!buf) {
|
||||
BT_ERR("Out of relay buffers");
|
||||
return;
|
||||
|
|
|
@ -106,8 +106,9 @@ static int send_unseg(struct bt_mesh_net_tx *tx, u8_t aid,
|
|||
BT_DBG("src 0x%04x dst 0x%04x app_idx 0x%04x sdu_len %u",
|
||||
tx->src, tx->ctx->addr, tx->ctx->app_idx, sdu->len);
|
||||
|
||||
buf = bt_mesh_adv_create(BT_MESH_ADV_DATA, TRANSMIT_COUNT(tx->xmit),
|
||||
TRANSMIT_INT(tx->xmit), BUF_TIMEOUT);
|
||||
buf = bt_mesh_adv_create(BT_MESH_ADV_DATA,
|
||||
BT_MESH_TRANSMIT_COUNT(tx->xmit),
|
||||
BT_MESH_TRANSMIT_INT(tx->xmit), BUF_TIMEOUT);
|
||||
if (!buf) {
|
||||
BT_ERR("Out of network buffers");
|
||||
return -ENOBUFS;
|
||||
|
@ -306,8 +307,8 @@ static int send_seg(struct bt_mesh_net_tx *net_tx, u8_t aid,
|
|||
int err;
|
||||
|
||||
seg = bt_mesh_adv_create(BT_MESH_ADV_DATA,
|
||||
TRANSMIT_COUNT(net_tx->xmit),
|
||||
TRANSMIT_INT(net_tx->xmit),
|
||||
BT_MESH_TRANSMIT_COUNT(net_tx->xmit),
|
||||
BT_MESH_TRANSMIT_INT(net_tx->xmit),
|
||||
BUF_TIMEOUT);
|
||||
if (!seg) {
|
||||
BT_ERR("Out of segment buffers");
|
||||
|
@ -829,8 +830,9 @@ int bt_mesh_ctl_send(struct bt_mesh_net_tx *tx, u8_t ctl_op, void *data,
|
|||
tx->ctx->addr, tx->ctx->send_ttl, ctl_op);
|
||||
BT_DBG("len %zu: %s", data_len, bt_hex(data, data_len));
|
||||
|
||||
buf = bt_mesh_adv_create(BT_MESH_ADV_DATA, TRANSMIT_COUNT(tx->xmit),
|
||||
TRANSMIT_INT(tx->xmit), BUF_TIMEOUT);
|
||||
buf = bt_mesh_adv_create(BT_MESH_ADV_DATA,
|
||||
BT_MESH_TRANSMIT_COUNT(tx->xmit),
|
||||
BT_MESH_TRANSMIT_INT(tx->xmit), BUF_TIMEOUT);
|
||||
if (!buf) {
|
||||
BT_ERR("Out of transport buffers");
|
||||
return -ENOBUFS;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue