drivers/at86rf215: fix CCA duration
The standard CCA backoff period is 8 symbols and only differs for MR-O-QPSK where it is dependent on the chip rate.
This commit is contained in:
parent
6f23263503
commit
a6db7d56ba
@ -423,7 +423,8 @@ static void _set_ack_timeout(at86rf215_t *dev, bool mord4, bool fec)
|
|||||||
|
|
||||||
static void _set_csma_backoff_period(at86rf215_t *dev)
|
static void _set_csma_backoff_period(at86rf215_t *dev)
|
||||||
{
|
{
|
||||||
dev->csma_backoff_period = AT86RF215_BACKOFF_PERIOD_IN_SYMBOLS * FSK_SYMBOL_TIME_US;
|
dev->csma_backoff_period = IEEE802154_CCA_DURATION_IN_SYMBOLS * FSK_SYMBOL_TIME_US
|
||||||
|
+ IEEE802154G_ATURNAROUNDTIME_US;
|
||||||
|
|
||||||
DEBUG("[%s] CSMA BACKOFF: %"PRIu32" µs\n", "FSK", dev->csma_backoff_period);
|
DEBUG("[%s] CSMA BACKOFF: %"PRIu32" µs\n", "FSK", dev->csma_backoff_period);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -314,13 +314,15 @@ static void _set_ack_timeout(at86rf215_t *dev, uint8_t chips, uint8_t mode)
|
|||||||
|
|
||||||
static inline void _set_csma_backoff_period(at86rf215_t *dev, uint8_t chips)
|
static inline void _set_csma_backoff_period(at86rf215_t *dev, uint8_t chips)
|
||||||
{
|
{
|
||||||
dev->csma_backoff_period = AT86RF215_BACKOFF_PERIOD_IN_SYMBOLS * _get_symbol_duration_us(chips);
|
dev->csma_backoff_period = _get_cca_duration_syms(chips) * _get_symbol_duration_us(chips)
|
||||||
|
+ IEEE802154G_ATURNAROUNDTIME_US;
|
||||||
DEBUG("[%s] CSMA BACKOFF: %"PRIu32" µs\n", "O-QPSK", dev->csma_backoff_period);
|
DEBUG("[%s] CSMA BACKOFF: %"PRIu32" µs\n", "O-QPSK", dev->csma_backoff_period);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void _set_csma_backoff_period_legacy(at86rf215_t *dev)
|
static inline void _set_csma_backoff_period_legacy(at86rf215_t *dev)
|
||||||
{
|
{
|
||||||
dev->csma_backoff_period = AT86RF215_BACKOFF_PERIOD_IN_SYMBOLS * LEGACY_QPSK_SYMBOL_TIME_US;
|
dev->csma_backoff_period = (IEEE802154_ATURNAROUNDTIME_IN_SYMBOLS + IEEE802154_CCA_DURATION_IN_SYMBOLS)
|
||||||
|
* LEGACY_QPSK_SYMBOL_TIME_US;
|
||||||
DEBUG("[%s] CSMA BACKOFF: %"PRIu32" µs\n", "legacy O-QPSK", dev->csma_backoff_period);
|
DEBUG("[%s] CSMA BACKOFF: %"PRIu32" µs\n", "legacy O-QPSK", dev->csma_backoff_period);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -268,8 +268,9 @@ int at86rf215_configure_OFDM(at86rf215_t *dev, uint8_t option, uint8_t scheme)
|
|||||||
|
|
||||||
at86rf215_reg_write(dev, dev->BBC->RG_OFDMPHRTX, scheme);
|
at86rf215_reg_write(dev, dev->BBC->RG_OFDMPHRTX, scheme);
|
||||||
|
|
||||||
dev->csma_backoff_period = AT86RF215_BACKOFF_PERIOD_IN_SYMBOLS *
|
dev->csma_backoff_period = IEEE802154G_ATURNAROUNDTIME_US
|
||||||
OFDM_SYMBOL_TIME_US;
|
+ IEEE802154_CCA_DURATION_IN_SYMBOLS
|
||||||
|
* OFDM_SYMBOL_TIME_US;
|
||||||
DEBUG("[%s] CSMA BACKOFF: %" PRIu32 " µs\n", "OFDM",
|
DEBUG("[%s] CSMA BACKOFF: %" PRIu32 " µs\n", "OFDM",
|
||||||
dev->csma_backoff_period);
|
dev->csma_backoff_period);
|
||||||
|
|
||||||
|
|||||||
@ -43,12 +43,6 @@ extern "C" {
|
|||||||
/** Default energy detect threshold for CSMA (reset value) */
|
/** Default energy detect threshold for CSMA (reset value) */
|
||||||
#define AT86RF215_EDT_DEFAULT (-84) /* dBm */
|
#define AT86RF215_EDT_DEFAULT (-84) /* dBm */
|
||||||
|
|
||||||
/**
|
|
||||||
* This is used to calculate the csma backoff based on the bitrate.
|
|
||||||
*/
|
|
||||||
/** 20 symbols is the std period length */
|
|
||||||
#define AT86RF215_BACKOFF_PERIOD_IN_SYMBOLS (20U)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default Parameters for 802.15.4 retransmissions & CSMA
|
* Default Parameters for 802.15.4 retransmissions & CSMA
|
||||||
* @{
|
* @{
|
||||||
|
|||||||
@ -111,7 +111,22 @@ extern "C" {
|
|||||||
*
|
*
|
||||||
* 802.15.4g, Table 70 (p. 43)
|
* 802.15.4g, Table 70 (p. 43)
|
||||||
*/
|
*/
|
||||||
#define IEEE802154G_ATURNAROUNDTIME_US (1 * US_PER_MS)
|
#define IEEE802154G_ATURNAROUNDTIME_US (1 * US_PER_MS)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IEEE Std 802.15.4-2020
|
||||||
|
* Table 11-1—PHY constants: The value is 12 for all other PHYs.
|
||||||
|
*/
|
||||||
|
#define IEEE802154_ATURNAROUNDTIME_IN_SYMBOLS (12)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IEEE Std 802.15.4-2020
|
||||||
|
* Table 11-1—PHY constants: For all other PHYs¹, the duration of
|
||||||
|
* 8 symbol periods.
|
||||||
|
*
|
||||||
|
* [1] all but MR-O-QPSK
|
||||||
|
*/
|
||||||
|
#define IEEE802154_CCA_DURATION_IN_SYMBOLS (8)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 802.15.4 PHY modes
|
* @brief 802.15.4 PHY modes
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user