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)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
@ -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)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
dev->csma_backoff_period = AT86RF215_BACKOFF_PERIOD_IN_SYMBOLS *
|
||||
OFDM_SYMBOL_TIME_US;
|
||||
dev->csma_backoff_period = IEEE802154G_ATURNAROUNDTIME_US
|
||||
+ IEEE802154_CCA_DURATION_IN_SYMBOLS
|
||||
* OFDM_SYMBOL_TIME_US;
|
||||
DEBUG("[%s] CSMA BACKOFF: %" PRIu32 " µs\n", "OFDM",
|
||||
dev->csma_backoff_period);
|
||||
|
||||
|
||||
@ -43,12 +43,6 @@ extern "C" {
|
||||
/** Default energy detect threshold for CSMA (reset value) */
|
||||
#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
|
||||
* @{
|
||||
|
||||
@ -111,7 +111,22 @@ extern "C" {
|
||||
*
|
||||
* 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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user