bluetooth: controller: Move calculation of max_tx_octets to ULL
Move calculation of max_tx_octets from Nordic lll_conn.c to ULL, to allow usage by other vendors and prevent duplicate code. Signed-off-by: Morten Priess <mtpr@oticon.com>
This commit is contained in:
parent
89ab68f242
commit
ca5c829a84
3 changed files with 72 additions and 63 deletions
|
@ -1398,6 +1398,76 @@ u8_t ull_conn_llcp_req(void *conn)
|
|||
return 0;
|
||||
}
|
||||
|
||||
u16_t ull_conn_lll_max_tx_octets_get(struct lll_conn *lll)
|
||||
{
|
||||
u16_t max_tx_octets;
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_DATA_LENGTH)
|
||||
#if defined(CONFIG_BT_CTLR_PHY)
|
||||
switch (lll->phy_tx_time) {
|
||||
default:
|
||||
case BIT(0):
|
||||
/* 1M PHY, 1us = 1 bit, hence divide by 8.
|
||||
* Deduct 10 bytes for preamble (1), access address (4),
|
||||
* header (2), and CRC (3).
|
||||
*/
|
||||
max_tx_octets = (lll->max_tx_time >> 3) - 10;
|
||||
break;
|
||||
|
||||
case BIT(1):
|
||||
/* 2M PHY, 1us = 2 bits, hence divide by 4.
|
||||
* Deduct 11 bytes for preamble (2), access address (4),
|
||||
* header (2), and CRC (3).
|
||||
*/
|
||||
max_tx_octets = (lll->max_tx_time >> 2) - 11;
|
||||
break;
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_PHY_CODED)
|
||||
case BIT(2):
|
||||
if (lll->phy_flags & 0x01) {
|
||||
/* S8 Coded PHY, 8us = 1 bit, hence divide by
|
||||
* 64.
|
||||
* Subtract time for preamble (80), AA (256),
|
||||
* CI (16), TERM1 (24), CRC (192) and
|
||||
* TERM2 (24), total 592 us.
|
||||
* Subtract 2 bytes for header.
|
||||
*/
|
||||
max_tx_octets = ((lll->max_tx_time - 592) >>
|
||||
6) - 2;
|
||||
} else {
|
||||
/* S2 Coded PHY, 2us = 1 bit, hence divide by
|
||||
* 16.
|
||||
* Subtract time for preamble (80), AA (256),
|
||||
* CI (16), TERM1 (24), CRC (48) and
|
||||
* TERM2 (6), total 430 us.
|
||||
* Subtract 2 bytes for header.
|
||||
*/
|
||||
max_tx_octets = ((lll->max_tx_time - 430) >>
|
||||
4) - 2;
|
||||
}
|
||||
break;
|
||||
#endif /* CONFIG_BT_CTLR_PHY_CODED */
|
||||
}
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_LE_ENC)
|
||||
if (lll->enc_tx) {
|
||||
/* deduct the MIC */
|
||||
max_tx_octets -= 4U;
|
||||
}
|
||||
#endif /* CONFIG_BT_CTLR_LE_ENC */
|
||||
|
||||
if (max_tx_octets > lll->max_tx_octets) {
|
||||
max_tx_octets = lll->max_tx_octets;
|
||||
}
|
||||
#else /* !CONFIG_BT_CTLR_PHY */
|
||||
max_tx_octets = lll->max_tx_octets;
|
||||
#endif /* !CONFIG_BT_CTLR_PHY */
|
||||
#else /* !CONFIG_BT_CTLR_DATA_LENGTH */
|
||||
max_tx_octets = PDU_DC_PAYLOAD_SIZE_MIN;
|
||||
#endif /* !CONFIG_BT_CTLR_DATA_LENGTH */
|
||||
return max_tx_octets;
|
||||
}
|
||||
|
||||
static int init_reset(void)
|
||||
{
|
||||
/* Initialize conn pool. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue