mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-25 22:43:50 +01:00
driver/at86rf2xx: add an option for auto-ack with the pending bit
This commit is contained in:
parent
50f3d6a427
commit
a841d9ee0a
@ -380,6 +380,13 @@ void at86rf2xx_set_option(at86rf2xx_t *dev, uint16_t option, bool state)
|
||||
: (tmp & ~AT86RF2XX_IRQ_STATUS_MASK__RX_START);
|
||||
at86rf2xx_reg_write(dev, AT86RF2XX_REG__IRQ_MASK, tmp);
|
||||
break;
|
||||
case AT86RF2XX_OPT_ACK_PENDING:
|
||||
DEBUG("[at86rf2xx] opt: enabling pending ACKs\n");
|
||||
tmp = at86rf2xx_reg_read(dev, AT86RF2XX_REG__CSMA_SEED_1);
|
||||
tmp = (state) ? (tmp | AT86RF2XX_CSMA_SEED_1__AACK_SET_PD)
|
||||
: (tmp & ~AT86RF2XX_CSMA_SEED_1__AACK_SET_PD);
|
||||
at86rf2xx_reg_write(dev, AT86RF2XX_REG__CSMA_SEED_1, tmp);
|
||||
break;
|
||||
default:
|
||||
/* do nothing */
|
||||
break;
|
||||
|
||||
@ -486,6 +486,12 @@ static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len)
|
||||
res = sizeof(netopt_enable_t);
|
||||
break;
|
||||
|
||||
case NETOPT_ACK_PENDING:
|
||||
at86rf2xx_set_option(dev, AT86RF2XX_OPT_ACK_PENDING,
|
||||
((const bool *)val)[0]);
|
||||
res = sizeof(netopt_enable_t);
|
||||
break;
|
||||
|
||||
case NETOPT_RETRANS:
|
||||
assert(len <= sizeof(uint8_t));
|
||||
at86rf2xx_set_max_retries(dev, *((const uint8_t *)val));
|
||||
|
||||
@ -135,6 +135,7 @@ extern "C" {
|
||||
#define AT86RF2XX_OPT_SRC_ADDR_LONG (NETDEV_IEEE802154_SRC_MODE_LONG) /**< legacy define */
|
||||
#define AT86RF2XX_OPT_RAWDUMP (NETDEV_IEEE802154_RAW) /**< legacy define */
|
||||
#define AT86RF2XX_OPT_AUTOACK (NETDEV_IEEE802154_ACK_REQ) /**< legacy define */
|
||||
#define AT86RF2XX_OPT_ACK_PENDING (NETDEV_IEEE802154_FRAME_PEND) /**< legacy define */
|
||||
|
||||
#define AT86RF2XX_OPT_CSMA (0x0100) /**< CSMA active */
|
||||
#define AT86RF2XX_OPT_PROMISCUOUS (0x0200) /**< promiscuous mode
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user