Merge pull request #2920 from OlegHahm/disable_sfd_irq_per_default
netconf: at86rf231: setting the SFD IRQ
This commit is contained in:
commit
7882f1a727
@ -154,8 +154,7 @@ void ng_at86rf2xx_reset(ng_at86rf2xx_t *dev)
|
|||||||
ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__TRX_CTRL_2, tmp);
|
ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__TRX_CTRL_2, tmp);
|
||||||
/* enable interrupts */
|
/* enable interrupts */
|
||||||
ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__IRQ_MASK,
|
ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__IRQ_MASK,
|
||||||
(NG_AT86RF2XX_IRQ_STATUS_MASK__RX_START |
|
NG_AT86RF2XX_IRQ_STATUS_MASK__TRX_END);
|
||||||
NG_AT86RF2XX_IRQ_STATUS_MASK__TRX_END));
|
|
||||||
/* go into RX state */
|
/* go into RX state */
|
||||||
ng_at86rf2xx_set_state(dev, NG_AT86RF2XX_STATE_RX_AACK_ON);
|
ng_at86rf2xx_set_state(dev, NG_AT86RF2XX_STATE_RX_AACK_ON);
|
||||||
|
|
||||||
|
|||||||
@ -154,6 +154,12 @@ void ng_at86rf2xx_set_option(ng_at86rf2xx_t *dev, uint16_t option, bool state)
|
|||||||
tmp &= ~(NG_AT86RF2XX_CSMA_SEED_1__AACK_DIS_ACK);
|
tmp &= ~(NG_AT86RF2XX_CSMA_SEED_1__AACK_DIS_ACK);
|
||||||
ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__CSMA_SEED_1, tmp);
|
ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__CSMA_SEED_1, tmp);
|
||||||
break;
|
break;
|
||||||
|
case NG_AT86RF2XX_OPT_TELL_RX_START:
|
||||||
|
DEBUG("[ng_at86rf2xx] opt: enabling SFD IRQ\n");
|
||||||
|
tmp = ng_at86rf2xx_reg_read(dev, NG_AT86RF2XX_REG__IRQ_MASK);
|
||||||
|
tmp |= NG_AT86RF2XX_IRQ_STATUS_MASK__RX_START;
|
||||||
|
ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__IRQ_MASK, tmp);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
/* do nothing */
|
/* do nothing */
|
||||||
break;
|
break;
|
||||||
@ -185,6 +191,12 @@ void ng_at86rf2xx_set_option(ng_at86rf2xx_t *dev, uint16_t option, bool state)
|
|||||||
tmp |= NG_AT86RF2XX_CSMA_SEED_1__AACK_DIS_ACK;
|
tmp |= NG_AT86RF2XX_CSMA_SEED_1__AACK_DIS_ACK;
|
||||||
ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__CSMA_SEED_1, tmp);
|
ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__CSMA_SEED_1, tmp);
|
||||||
break;
|
break;
|
||||||
|
case NG_AT86RF2XX_OPT_TELL_RX_START:
|
||||||
|
DEBUG("[ng_at86rf2xx] opt: disabling SFD IRQ\n");
|
||||||
|
tmp = ng_at86rf2xx_reg_read(dev, NG_AT86RF2XX_REG__IRQ_MASK);
|
||||||
|
tmp &= ~NG_AT86RF2XX_IRQ_STATUS_MASK__RX_START;
|
||||||
|
ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__IRQ_MASK, tmp);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
/* do nothing */
|
/* do nothing */
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -487,6 +487,26 @@ static int _get(ng_netdev_t *device, ng_netconf_opt_t opt,
|
|||||||
}
|
}
|
||||||
return sizeof(ng_netconf_enable_t);
|
return sizeof(ng_netconf_enable_t);
|
||||||
|
|
||||||
|
case NETCONF_OPT_RX_START_IRQ:
|
||||||
|
*((ng_netconf_enable_t *)val) =
|
||||||
|
!!(dev->options & NG_AT86RF2XX_OPT_TELL_RX_START);
|
||||||
|
return sizeof(ng_netconf_enable_t);
|
||||||
|
|
||||||
|
case NETCONF_OPT_RX_END_IRQ:
|
||||||
|
*((ng_netconf_enable_t *)val) =
|
||||||
|
!!(dev->options & NG_AT86RF2XX_OPT_TELL_RX_END);
|
||||||
|
return sizeof(ng_netconf_enable_t);
|
||||||
|
|
||||||
|
case NETCONF_OPT_TX_START_IRQ:
|
||||||
|
*((ng_netconf_enable_t *)val) =
|
||||||
|
!!(dev->options & NG_AT86RF2XX_OPT_TELL_TX_START);
|
||||||
|
return sizeof(ng_netconf_enable_t);
|
||||||
|
|
||||||
|
case NETCONF_OPT_TX_END_IRQ:
|
||||||
|
*((ng_netconf_enable_t *)val) =
|
||||||
|
!!(dev->options & NG_AT86RF2XX_OPT_TELL_TX_END);
|
||||||
|
return sizeof(ng_netconf_enable_t);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return -ENOTSUP;
|
return -ENOTSUP;
|
||||||
}
|
}
|
||||||
@ -599,6 +619,26 @@ static int _set(ng_netdev_t *device, ng_netconf_opt_t opt,
|
|||||||
((bool *)val)[0]);
|
((bool *)val)[0]);
|
||||||
return sizeof(ng_netconf_enable_t);
|
return sizeof(ng_netconf_enable_t);
|
||||||
|
|
||||||
|
case NETCONF_OPT_RX_START_IRQ:
|
||||||
|
ng_at86rf2xx_set_option(dev, NG_AT86RF2XX_OPT_TELL_RX_START,
|
||||||
|
((bool *)val)[0]);
|
||||||
|
return sizeof(ng_netconf_enable_t);
|
||||||
|
|
||||||
|
case NETCONF_OPT_RX_END_IRQ:
|
||||||
|
ng_at86rf2xx_set_option(dev, NG_AT86RF2XX_OPT_TELL_RX_END,
|
||||||
|
((bool *)val)[0]);
|
||||||
|
return sizeof(ng_netconf_enable_t);
|
||||||
|
|
||||||
|
case NETCONF_OPT_TX_START_IRQ:
|
||||||
|
ng_at86rf2xx_set_option(dev, NG_AT86RF2XX_OPT_TELL_TX_START,
|
||||||
|
((bool *)val)[0]);
|
||||||
|
return sizeof(ng_netconf_enable_t);
|
||||||
|
|
||||||
|
case NETCONF_OPT_TX_END_IRQ:
|
||||||
|
ng_at86rf2xx_set_option(dev, NG_AT86RF2XX_OPT_TELL_TX_END,
|
||||||
|
((bool *)val)[0]);
|
||||||
|
return sizeof(ng_netconf_enable_t);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return -ENOTSUP;
|
return -ENOTSUP;
|
||||||
}
|
}
|
||||||
@ -643,9 +683,7 @@ static void _isr_event(ng_netdev_t *device, uint32_t event_type)
|
|||||||
state = ng_at86rf2xx_get_state(dev);
|
state = ng_at86rf2xx_get_state(dev);
|
||||||
|
|
||||||
if (irq_mask & NG_AT86RF2XX_IRQ_STATUS_MASK__RX_START) {
|
if (irq_mask & NG_AT86RF2XX_IRQ_STATUS_MASK__RX_START) {
|
||||||
if (dev->event_cb && (dev->options & NG_AT86RF2XX_OPT_TELL_RX_START)) {
|
dev->event_cb(NETDEV_EVENT_RX_STARTED, NULL);
|
||||||
dev->event_cb(NETDEV_EVENT_RX_STARTED, NULL);
|
|
||||||
}
|
|
||||||
DEBUG("[ng_at86rf2xx] EVT - RX_START\n");
|
DEBUG("[ng_at86rf2xx] EVT - RX_START\n");
|
||||||
}
|
}
|
||||||
if (irq_mask & NG_AT86RF2XX_IRQ_STATUS_MASK__TRX_END) {
|
if (irq_mask & NG_AT86RF2XX_IRQ_STATUS_MASK__TRX_END) {
|
||||||
|
|||||||
@ -17,6 +17,7 @@
|
|||||||
* @brief Definition of global configuration options
|
* @brief Definition of global configuration options
|
||||||
*
|
*
|
||||||
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
|
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
|
||||||
|
* @author Oliver Hahm <oliver.hahm@inria.fr>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef NG_NET_CONF_H_
|
#ifndef NG_NET_CONF_H_
|
||||||
@ -78,6 +79,45 @@ typedef enum {
|
|||||||
NETCONF_OPT_RAWMODE, /**< en/disable the pre-processing of data
|
NETCONF_OPT_RAWMODE, /**< en/disable the pre-processing of data
|
||||||
in a network device driver as type
|
in a network device driver as type
|
||||||
ng_nettype_t */
|
ng_nettype_t */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief en/disable the interrupt at reception start.
|
||||||
|
*
|
||||||
|
* It is mostly triggered after the preamble is correctly received
|
||||||
|
*
|
||||||
|
* @note not all transceivers may support this interrupt
|
||||||
|
*/
|
||||||
|
NETCONF_OPT_RX_START_IRQ,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief en/disable the interrupt after packet reception.
|
||||||
|
*
|
||||||
|
* This interrupt is triggered after a complete packet is received.
|
||||||
|
*
|
||||||
|
* @note in case a transceiver does not support this interrupt, the event
|
||||||
|
* may be triggered by the driver
|
||||||
|
*/
|
||||||
|
NETCONF_OPT_RX_END_IRQ,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief en/disable the interrupt right in the beginning of transmission.
|
||||||
|
*
|
||||||
|
* This interrupt is triggered when the transceiver starts to send out the
|
||||||
|
* packet.
|
||||||
|
*
|
||||||
|
* @note in case a transceiver does not support this interrupt, the event
|
||||||
|
* may be triggered by the driver
|
||||||
|
*/
|
||||||
|
NETCONF_OPT_TX_START_IRQ,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief en/disable the interrupt after packet transmission.
|
||||||
|
*
|
||||||
|
* This interrupt is triggered when the full packet is transmitted.
|
||||||
|
*
|
||||||
|
* @note not all transceivers may support this interrupt
|
||||||
|
*/
|
||||||
|
NETCONF_OPT_TX_END_IRQ,
|
||||||
/* add more options if needed */
|
/* add more options if needed */
|
||||||
} ng_netconf_opt_t;
|
} ng_netconf_opt_t;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user