kw2xrf_intern.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016 Phytec Messtechnik GmbH
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
9 #pragma once
10 
21 #include <stdint.h>
22 #include "kw2xrf.h"
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
31 typedef enum {
32  KW2XRF_HIBERNATE = 0,
33  KW2XRF_DOZE,
34  KW2XRF_IDLE,
35  KW2XRF_AUTODOZE,
37 
45 static inline void kw2xrf_set_dreg_bit(kw2xrf_t *dev, uint8_t reg, uint8_t bit)
46 {
47  uint8_t tmp = kw2xrf_read_dreg(dev, reg);
48  tmp |= bit;
49  kw2xrf_write_dreg(dev, reg, tmp);
50 }
51 
59 static inline void kw2xrf_clear_dreg_bit(kw2xrf_t *dev, uint8_t reg, uint8_t bit)
60 {
61  uint8_t tmp = kw2xrf_read_dreg(dev, reg);
62  tmp &= ~bit;
63  kw2xrf_write_dreg(dev, reg, tmp);
64 }
65 
71 static inline void kw2xrf_enable_irq_b(kw2xrf_t *dev)
72 {
73  kw2xrf_clear_dreg_bit(dev, MKW2XDM_PHY_CTRL4, MKW2XDM_PHY_CTRL4_TRCV_MSK);
74 }
75 
81 static inline void kw2xrf_mask_irq_b(kw2xrf_t *dev)
82 {
83  kw2xrf_set_dreg_bit(dev, MKW2XDM_PHY_CTRL4, MKW2XDM_PHY_CTRL4_TRCV_MSK);
84 }
85 
92 
99 
106 
114 
123 
127 typedef enum kw2xrf_timer_timebase {
128  KW2XRF_TIMEBASE_500000HZ = 2,
129  KW2XRF_TIMEBASE_250000HZ,
130  KW2XRF_TIMEBASE_125000HZ,
131  KW2XRF_TIMEBASE_62500HZ,
132  KW2XRF_TIMEBASE_31250HZ,
133  KW2XRF_TIMEBASE_15625HZ,
135 
148 
155 
162 
169 
176 
183 void kw2xrf_trigger_tx_ops_enable(kw2xrf_t *dev, uint32_t timeout);
184 
191 
198 void kw2xrf_abort_rx_ops_enable(kw2xrf_t *dev, uint32_t timeout);
199 
206 
213 void kw2xrf_seq_timeout_on(kw2xrf_t *dev, uint32_t timeout);
214 
221 
230 
231 #ifdef __cplusplus
232 }
233 #endif
234 
Interface definition for the kw2xrf driver.
void kw2xrf_update_overwrites(kw2xrf_t *dev)
uint32_t kw2xrf_get_timestamp(kw2xrf_t *dev)
Returns Timestamp of the actual received packet.
void kw2xrf_timer3_seq_abort_off(kw2xrf_t *dev)
Disable abort sequence timer.
static void kw2xrf_mask_irq_b(kw2xrf_t *dev)
Mask all transceiver interrupts to assert IRQ_B.
Definition: kw2xrf_intern.h:81
void kw2xrf_trigger_tx_ops_enable(kw2xrf_t *dev, uint32_t timeout)
Use T2CMP or T2PRIMECMP to Trigger Transceiver Operations.
void kw2xrf_abort_rx_ops_disable(kw2xrf_t *dev)
Disable Trigger to Abort an RX operation.
kw2xrf_powermode_t
Power Modes.
Definition: kw2xrf_intern.h:31
void kw2xrf_set_out_clk(kw2xrf_t *dev)
static void kw2xrf_set_dreg_bit(kw2xrf_t *dev, uint8_t reg, uint8_t bit)
Set a certain bit of a kw2xrf register.
Definition: kw2xrf_intern.h:45
kw2xrf_timer_timebase
Timebase values.
void kw2xrf_timer3_seq_abort_on(kw2xrf_t *dev)
Enable abort sequence timer.
void kw2xrf_timer2_seq_start_off(kw2xrf_t *dev)
Disable start sequence timer.
void kw2xrf_trigger_tx_ops_disable(kw2xrf_t *dev)
Disable Trigger for Transceiver Operations.
void kw2xrf_disable_interrupts(kw2xrf_t *dev)
Disable all interrupts on transceiver.
void kw2xrf_set_power_mode(kw2xrf_t *dev, kw2xrf_powermode_t pm)
Set power mode for device.
static void kw2xrf_clear_dreg_bit(kw2xrf_t *dev, uint8_t reg, uint8_t bit)
Clear a certain bit of a kw2xrf register.
Definition: kw2xrf_intern.h:59
int kw2xrf_can_switch_to_idle(kw2xrf_t *dev)
void kw2xrf_seq_timeout_on(kw2xrf_t *dev, uint32_t timeout)
Enable sequence timeout.
void kw2xrf_abort_rx_ops_enable(kw2xrf_t *dev, uint32_t timeout)
Use T3CMP to Abort an RX operation.
enum kw2xrf_timer_timebase kw2xrf_timer_timebase_t
Timebase values.
void kw2xrf_seq_timeout_off(kw2xrf_t *dev)
Disable sequence timeout.
static void kw2xrf_enable_irq_b(kw2xrf_t *dev)
Enable any transceiver interrupt to assert IRQ_B.
Definition: kw2xrf_intern.h:71
void kw2xrf_timer2_seq_start_on(kw2xrf_t *dev)
Enable start sequence time.
void kw2xrf_timer_init(kw2xrf_t *dev, kw2xrf_timer_timebase_t tb)
Initialize the Event Timer Block (up counter)
@ MKW2XDM_PHY_CTRL4
PHY Control 4.
Definition: kw2xrf_reg.h:96
uint8_t kw2xrf_read_dreg(kw2xrf_t *dev, uint8_t addr)
Reads a byte from the kw2xrf register.
void kw2xrf_write_dreg(kw2xrf_t *dev, uint8_t addr, uint8_t value)
Writes a byte to the kw2xrf register.
Device descriptor for KW2XRF radio devices.
Definition: kw2xrf.h:118