Loading...
Searching...
No Matches
kw2xrf_intern.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2016 Phytec Messtechnik GmbH
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
17
18#include <stdint.h>
19#include "kw2xrf.h"
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
28typedef enum {
29 KW2XRF_HIBERNATE = 0,
30 KW2XRF_DOZE,
31 KW2XRF_IDLE,
32 KW2XRF_AUTODOZE,
34
42static inline void kw2xrf_set_dreg_bit(kw2xrf_t *dev, uint8_t reg, uint8_t bit)
43{
44 uint8_t tmp = kw2xrf_read_dreg(dev, reg);
45 tmp |= bit;
46 kw2xrf_write_dreg(dev, reg, tmp);
47}
48
56static inline void kw2xrf_clear_dreg_bit(kw2xrf_t *dev, uint8_t reg, uint8_t bit)
57{
58 uint8_t tmp = kw2xrf_read_dreg(dev, reg);
59 tmp &= ~bit;
60 kw2xrf_write_dreg(dev, reg, tmp);
61}
62
68static inline void kw2xrf_enable_irq_b(kw2xrf_t *dev)
69{
70 kw2xrf_clear_dreg_bit(dev, MKW2XDM_PHY_CTRL4, MKW2XDM_PHY_CTRL4_TRCV_MSK);
71}
72
78static inline void kw2xrf_mask_irq_b(kw2xrf_t *dev)
79{
80 kw2xrf_set_dreg_bit(dev, MKW2XDM_PHY_CTRL4, MKW2XDM_PHY_CTRL4_TRCV_MSK);
81}
82
89
96
103
111
120
125 KW2XRF_TIMEBASE_500000HZ = 2,
126 KW2XRF_TIMEBASE_250000HZ,
127 KW2XRF_TIMEBASE_125000HZ,
128 KW2XRF_TIMEBASE_62500HZ,
129 KW2XRF_TIMEBASE_31250HZ,
130 KW2XRF_TIMEBASE_15625HZ,
132
145
152
159
166
173
180void kw2xrf_trigger_tx_ops_enable(kw2xrf_t *dev, uint32_t timeout);
181
188
195void kw2xrf_abort_rx_ops_enable(kw2xrf_t *dev, uint32_t timeout);
196
203
210void kw2xrf_seq_timeout_on(kw2xrf_t *dev, uint32_t timeout);
211
218
227
228#ifdef __cplusplus
229}
230#endif
231
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.
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.
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.
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.
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.
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:115