Merge pull request #8374 from Hyungsin/forupstream_radio_ackpending
driver/at86rf2xx: add an option for auto-ack with the pending bit
This commit is contained in:
commit
c61c44a1ae
@ -380,6 +380,13 @@ void at86rf2xx_set_option(at86rf2xx_t *dev, uint16_t option, bool state)
|
|||||||
: (tmp & ~AT86RF2XX_IRQ_STATUS_MASK__RX_START);
|
: (tmp & ~AT86RF2XX_IRQ_STATUS_MASK__RX_START);
|
||||||
at86rf2xx_reg_write(dev, AT86RF2XX_REG__IRQ_MASK, tmp);
|
at86rf2xx_reg_write(dev, AT86RF2XX_REG__IRQ_MASK, tmp);
|
||||||
break;
|
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:
|
default:
|
||||||
/* do nothing */
|
/* do nothing */
|
||||||
break;
|
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);
|
res = sizeof(netopt_enable_t);
|
||||||
break;
|
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:
|
case NETOPT_RETRANS:
|
||||||
assert(len <= sizeof(uint8_t));
|
assert(len <= sizeof(uint8_t));
|
||||||
at86rf2xx_set_max_retries(dev, *((const uint8_t *)val));
|
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_SRC_ADDR_LONG (NETDEV_IEEE802154_SRC_MODE_LONG) /**< legacy define */
|
||||||
#define AT86RF2XX_OPT_RAWDUMP (NETDEV_IEEE802154_RAW) /**< legacy define */
|
#define AT86RF2XX_OPT_RAWDUMP (NETDEV_IEEE802154_RAW) /**< legacy define */
|
||||||
#define AT86RF2XX_OPT_AUTOACK (NETDEV_IEEE802154_ACK_REQ) /**< 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_CSMA (0x0100) /**< CSMA active */
|
||||||
#define AT86RF2XX_OPT_PROMISCUOUS (0x0200) /**< promiscuous mode
|
#define AT86RF2XX_OPT_PROMISCUOUS (0x0200) /**< promiscuous mode
|
||||||
|
|||||||
@ -53,6 +53,11 @@ extern "C" {
|
|||||||
* @brief request ACK from receiver
|
* @brief request ACK from receiver
|
||||||
*/
|
*/
|
||||||
#define NETDEV_IEEE802154_ACK_REQ (IEEE802154_FCF_ACK_REQ)
|
#define NETDEV_IEEE802154_ACK_REQ (IEEE802154_FCF_ACK_REQ)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief set frame pending bit
|
||||||
|
*/
|
||||||
|
#define NETDEV_IEEE802154_FRAME_PEND (IEEE802154_FCF_FRAME_PEND)
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -147,6 +147,12 @@ typedef enum {
|
|||||||
* the current state */
|
* the current state */
|
||||||
NETOPT_AUTOACK, /**< en/disable link layer auto ACKs or read
|
NETOPT_AUTOACK, /**< en/disable link layer auto ACKs or read
|
||||||
* the current state */
|
* the current state */
|
||||||
|
NETOPT_ACK_PENDING, /**< en/disable the frame pending bit of ACKs.
|
||||||
|
* This bit is copied into the frame pending
|
||||||
|
* subfield of the ACK if it is the response
|
||||||
|
* to a data request MAC command frame, which
|
||||||
|
* lets the data request sender know if the ACK
|
||||||
|
* sender has pending data or not. */
|
||||||
NETOPT_ACK_REQ, /**< en/disable acknowledgement requests or
|
NETOPT_ACK_REQ, /**< en/disable acknowledgement requests or
|
||||||
* read the current state */
|
* read the current state */
|
||||||
NETOPT_RETRANS, /**< get/set the maximum number of
|
NETOPT_RETRANS, /**< get/set the maximum number of
|
||||||
|
|||||||
@ -45,6 +45,7 @@ static const char *_netopt_strmap[] = {
|
|||||||
[NETOPT_PRELOADING] = "NETOPT_PRELOADING",
|
[NETOPT_PRELOADING] = "NETOPT_PRELOADING",
|
||||||
[NETOPT_PROMISCUOUSMODE] = "NETOPT_PROMISCUOUSMODE",
|
[NETOPT_PROMISCUOUSMODE] = "NETOPT_PROMISCUOUSMODE",
|
||||||
[NETOPT_AUTOACK] = "NETOPT_AUTOACK",
|
[NETOPT_AUTOACK] = "NETOPT_AUTOACK",
|
||||||
|
[NETOPT_ACK_PENDING] = "NETOPT_ACK_PENDING",
|
||||||
[NETOPT_ACK_REQ] = "NETOPT_ACK_REQ",
|
[NETOPT_ACK_REQ] = "NETOPT_ACK_REQ",
|
||||||
[NETOPT_RETRANS] = "NETOPT_RETRANS",
|
[NETOPT_RETRANS] = "NETOPT_RETRANS",
|
||||||
[NETOPT_PROTO] = "NETOPT_PROTO",
|
[NETOPT_PROTO] = "NETOPT_PROTO",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user