30#define KW41ZRF_PM_BLOCKER KINETIS_PM_VLPS 
   33#ifndef KW41ZRF_ENABLE_LEDS 
   34#define KW41ZRF_ENABLE_LEDS     (0) 
   37#if KW41ZRF_ENABLE_LEDS 
   40#if !defined(KW41ZRF_LED_RX_ON) 
   42#define KW41ZRF_LED_RX_ON       LED0_ON 
   43#define KW41ZRF_LED_RX_OFF      LED0_OFF 
   45#define KW41ZRF_LED_RX_ON 
   46#define KW41ZRF_LED_RX_OFF 
   49#if !defined(KW41ZRF_LED_TX_ON) 
   52#define KW41ZRF_LED_TX_ON       LED1_ON 
   53#define KW41ZRF_LED_TX_OFF      LED1_OFF 
   56#define KW41ZRF_LED_TX_ON       LED0_ON 
   57#define KW41ZRF_LED_TX_OFF      LED0_OFF 
   59#define KW41ZRF_LED_TX_ON 
   60#define KW41ZRF_LED_TX_OFF 
   63#if !defined(KW41ZRF_LED_NDSM_ON) 
   65#define KW41ZRF_LED_NDSM_ON     LED2_ON 
   66#define KW41ZRF_LED_NDSM_OFF    LED2_OFF 
   68#define KW41ZRF_LED_NDSM_ON 
   69#define KW41ZRF_LED_NDSM_OFF 
   72#if !defined(KW41ZRF_LED_IRQ_ON) 
   74#define KW41ZRF_LED_IRQ_ON      LED3_ON 
   75#define KW41ZRF_LED_IRQ_OFF     LED3_OFF 
   77#define KW41ZRF_LED_IRQ_ON 
   78#define KW41ZRF_LED_IRQ_OFF 
   82#define KW41ZRF_LED_NDSM_ON 
   83#define KW41ZRF_LED_NDSM_OFF 
   84#define KW41ZRF_LED_TX_ON 
   85#define KW41ZRF_LED_TX_OFF 
   86#define KW41ZRF_LED_RX_ON 
   87#define KW41ZRF_LED_RX_OFF 
   88#define KW41ZRF_LED_IRQ_ON 
   89#define KW41ZRF_LED_IRQ_OFF 
  108    KW41ZRF_TIMEBASE_500000HZ = 0b010,
 
  109    KW41ZRF_TIMEBASE_250000HZ = 0b011,
 
  110    KW41ZRF_TIMEBASE_125000HZ = 0b100,
 
  111    KW41ZRF_TIMEBASE_62500HZ  = 0b101,
 
  112    KW41ZRF_TIMEBASE_31250HZ  = 0b110,
 
  113    KW41ZRF_TIMEBASE_15625HZ  = 0b111,
 
 
  121    NVIC_DisableIRQ(Radio_1_IRQn);
 
  122    NVIC_ClearPendingIRQ(Radio_1_IRQn);
 
 
  131    NVIC_EnableIRQ(Radio_1_IRQn);
 
 
  179    ZLL->PHY_CTRL = (ZLL->PHY_CTRL &
 
  180        ~(ZLL_PHY_CTRL_XCVSEQ_MASK |
 
  181        ZLL_PHY_CTRL_TC3TMOUT_MASK | ZLL_PHY_CTRL_TMRTRIGEN_MASK)) |
 
  182        ZLL_PHY_CTRL_XCVSEQ(XCVSEQ_IDLE) | ZLL_PHY_CTRL_SEQMSK_MASK;
 
  185    while (!(ZLL->SEQ_CTRL_STS & ZLL_SEQ_CTRL_STS_SEQ_IDLE_MASK)) {}
 
  188    uint32_t irqsts = ZLL->IRQSTS;
 
  189    ZLL->IRQSTS = irqsts;
 
 
  200    return (RSIM->DSM_CONTROL & RSIM_DSM_CONTROL_ZIG_DEEP_SLEEP_STATUS_MASK);
 
 
  212    ZLL->EVENT_TMR = ZLL_EVENT_TMR_EVENT_TMR(value) | ZLL_EVENT_TMR_EVENT_TMR_LD_MASK;
 
 
  225    return (ZLL->EVENT_TMR & ZLL_EVENT_TMR_EVENT_TMR_MASK) >> ZLL_EVENT_TMR_EVENT_TMR_SHIFT;
 
 
  239    *cmp_reg = now + timeout;
 
 
  255    ZLL->TMR_PRESCALE = (ZLL->TMR_PRESCALE & ~ZLL_TMR_PRESCALE_TMR_PRESCALE_MASK) |
 
  256    ZLL_TMR_PRESCALE_TMR_PRESCALE(tb);
 
 
  274    return ZLL->TIMESTAMP;
 
 
Interface definition for the kw41zrf driver.
 
get/set interfaces for kw41zrf driver
 
void kw41zrf_set_power_mode(kw41zrf_t *dev, kw41zrf_powermode_t pm)
Set power mode for device.
 
static uint32_t kw41zrf_get_timestamp(kw41zrf_t *dev)
Returns timestamp of the beginning of the most recently received packet.
 
static uint32_t kw41zrf_timer_get(kw41zrf_t *dev)
Get current event timer counter value.
 
kw41zrf_timer_timebase
Timebase settings.
 
static void kw41zrf_unmask_irqs(void)
Unmask all transceiver interrupts.
 
static uint32_t kw41zrf_is_dsm(void)
Check if the radio is in deep sleep mode.
 
static void kw41zrf_mask_irqs(void)
Mask all transceiver interrupts.
 
int kw41zrf_can_switch_to_idle(kw41zrf_t *dev)
Determine if the transceiver is busy doing TX or RX.
 
static void kw41zrf_timer_load(kw41zrf_t *dev, uint32_t value)
Set event timer counter value.
 
static void kw41zrf_timer_set(kw41zrf_t *dev, volatile uint32_t *cmp_reg, uint32_t timeout)
Set a timeout value for the given compare register of the Event Timer.
 
kw41zrf_powermode_t
KW41Z transceiver power modes.
 
@ KW41ZRF_POWER_IDLE
All parts powered.
 
@ KW41ZRF_POWER_DSM
Deep sleep mode.
 
void kw41zrf_set_irq_callback(void(*cb)(void *arg), void *arg)
Set the callback function for the radio ISR.
 
static void kw41zrf_timer_init(kw41zrf_t *dev, kw41zrf_timer_timebase_t tb)
Initialize the Event Timer Block (up counter)
 
static void kw41zrf_abort_sequence(kw41zrf_t *dev)
Abort the current autosequence.
 
void kw41zrf_set_sequence(kw41zrf_t *dev, uint32_t seq)
Set sequence state of device.
 
enum kw41zrf_timer_timebase kw41zrf_timer_timebase_t
Timebase settings.
 
Device descriptor for KW41ZRF radio devices.