diff --git a/nimble/host/mesh/src/pb_adv.c b/nimble/host/mesh/src/pb_adv.c index 473ea90bd..05142939e 100644 --- a/nimble/host/mesh/src/pb_adv.c +++ b/nimble/host/mesh/src/pb_adv.c @@ -47,7 +47,7 @@ #define XACT_ID_NVAL 0xff #define SEG_NVAL 0xff -#define RETRANSMIT_TIMEOUT K_MSEC(500) +#define RETRANSMIT_TIMEOUT K_MSEC(MYNEWT_VAL(BLE_MESH_PB_ADV_RETRANS_TIMEOUT)) #define BUF_TIMEOUT K_MSEC(400) #define CLOSING_TIMEOUT K_SECONDS(3) #define TRANSACTION_TIMEOUT K_SECONDS(30) diff --git a/nimble/host/mesh/src/transport.c b/nimble/host/mesh/src/transport.c index 5a513be8c..33a1557b7 100644 --- a/nimble/host/mesh/src/transport.c +++ b/nimble/host/mesh/src/transport.c @@ -51,12 +51,14 @@ * We use 400 since 300 is a common send duration for standard HCI, and we * need to have a timeout that's bigger than that. */ -#define SEG_RETRANSMIT_TIMEOUT_UNICAST(tx) (K_MSEC(400) + 50 * (tx)->ttl) +#define SEG_RETRANSMIT_TIMEOUT_UNICAST(tx) \ + (MYNEWT_VAL(BLE_MESH_TX_SEG_RETRANS_TIMEOUT_UNICAST) + 50 * (tx)->ttl) /* When sending to a group, the messages are not acknowledged, and there's no * reason to delay the repetitions significantly. Delaying by more than 0 ms * to avoid flooding the network. */ -#define SEG_RETRANSMIT_TIMEOUT_GROUP K_MSEC(50) +#define SEG_RETRANSMIT_TIMEOUT_GROUP \ + MYNEWT_VAL(BLE_MESH_TX_SEG_RETRANS_TIMEOUT_GROUP) #define SEG_RETRANSMIT_TIMEOUT(tx) \ (BT_MESH_ADDR_IS_UNICAST(tx->dst) ? \ diff --git a/nimble/host/mesh/syscfg.yml b/nimble/host/mesh/syscfg.yml index 2341d20cd..d3b2cf077 100644 --- a/nimble/host/mesh/syscfg.yml +++ b/nimble/host/mesh/syscfg.yml @@ -35,6 +35,11 @@ syscfg.defs: device sends unprovisioned beacon. value: 5 + BLE_MESH_PB_ADV_RETRANS_TIMEOUT: + description: > + Timeout value of retransmit provisioning PDUs. + value: 500 + BLE_MESH_PROVISIONER: description: > Enable this option to have support for provisioning remote devices. @@ -264,6 +269,22 @@ syscfg.defs: Loopback is used when the device sends messages to itself. value: 3 + BLE_MESH_TX_SEG_RETRANS_COUNT: + description: > + Maximum number of transport message segment retransmit attempts + for outgoing segment message. + value: 4 + + BLE_MESH_TX_SEG_RETRANS_TIMEOUT_UNICAST: + description: > + Maximum time of retransmit segment message to unicast address. + value: 400 + + BLE_MESH_TX_SEG_RETRANS_TIMEOUT_GROUP: + description: > + Maximum time of retransmit segment message to group address. + value: 50 + BLE_MESH_SEG_RETRANSMIT_ATTEMPTS: description: > Number of retransmit attempts (after the initial transmit) per segment diff --git a/porting/examples/linux_blemesh/include/syscfg/syscfg.h b/porting/examples/linux_blemesh/include/syscfg/syscfg.h index 3a17dee34..e71e52589 100644 --- a/porting/examples/linux_blemesh/include/syscfg/syscfg.h +++ b/porting/examples/linux_blemesh/include/syscfg/syscfg.h @@ -1168,10 +1168,26 @@ #define MYNEWT_VAL_BLE_MESH_UNPROV_BEACON_INT (5) #endif +#ifndef MYNEWT_VAL_BLE_MESH_PB_ADV_RETRANS_TIMEOUT +#define MYNEWT_VAL_BLE_MESH_PB_ADV_RETRANS_TIMEOUT (500) +#endif + #ifndef MYNEWT_VAL_BLE_MESH_TX_SEG_MSG_COUNT #define MYNEWT_VAL_BLE_MESH_TX_SEG_MSG_COUNT (4) #endif +#ifndef MYNEWT_VAL_BLE_MESH_TX_SEG_RETRANS_COUNT +#define MYNEWT_VAL_BLE_MESH_TX_SEG_RETRANS_COUNT (4) +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_TX_SEG_RETRANS_TIMEOUT_UNICAST +#define MYNEWT_VAL_BLE_MESH_TX_SEG_RETRANS_TIMEOUT_UNICAST (400) +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_TX_SEG_RETRANS_TIMEOUT_GROUP +#define MYNEWT_VAL_BLE_MESH_TX_SEG_RETRANS_TIMEOUT_GROUP (50) +#endif + #ifndef MYNEWT_VAL_BLE_MESH_LOOPBACK_BUFS #define MYNEWT_VAL_BLE_MESH_LOOPBACK_BUFS (3) #endif