From 432b03e99eb7e480199a12456626f435c7a5aced Mon Sep 17 00:00:00 2001 From: smlng <s@mlng.net> Date: Tue, 31 Jan 2017 13:26:01 +0100 Subject: [PATCH] drivers/kw2xrf: cleanup - use generic short and long address generator - defines in main header file - refine debug output - correct signed/unsigned warnings --- drivers/Makefile.dep | 17 +++++----- drivers/include/kw2xrf.h | 32 ++++++------------ drivers/kw2xrf/kw2xrf.c | 60 +++++++++------------------------ drivers/kw2xrf/kw2xrf_getset.c | 45 ++++++++++++++----------- drivers/kw2xrf/kw2xrf_intern.c | 22 ++++-------- drivers/kw2xrf/kw2xrf_netdev.c | 61 +++++++++++++++++----------------- drivers/kw2xrf/kw2xrf_spi.c | 14 ++++---- 7 files changed, 105 insertions(+), 146 deletions(-) diff --git a/drivers/Makefile.dep b/drivers/Makefile.dep index 350907e237..603519c61e 100644 --- a/drivers/Makefile.dep +++ b/drivers/Makefile.dep @@ -114,14 +114,15 @@ ifneq (,$(filter jc42,$(USEMODULE))) endif ifneq (,$(filter kw2xrf,$(USEMODULE))) - USEMODULE += ieee802154 - USEMODULE += netif - USEMODULE += netdev2_ieee802154 - ifneq (,$(filter gnrc_netdev_default,$(USEMODULE))) - # XXX: this can be modelled as a dependency for gnrc_netdev_default as soon - # as all drivers are ported to netdev2 - USEMODULE += gnrc_netdev2 - endif + USEMODULE += uuid + USEMODULE += netif + USEMODULE += ieee802154 + USEMODULE += netdev2_ieee802154 + ifneq (,$(filter gnrc_netdev_default,$(USEMODULE))) + # XXX: this can be modelled as a dependency for gnrc_netdev_default as soon + # as all drivers are ported to netdev2 + USEMODULE += gnrc_netdev2 + endif endif ifneq (,$(filter lis3dh,$(USEMODULE))) diff --git a/drivers/include/kw2xrf.h b/drivers/include/kw2xrf.h index d09551a8a7..9b0d7281be 100644 --- a/drivers/include/kw2xrf.h +++ b/drivers/include/kw2xrf.h @@ -17,10 +17,11 @@ * * @author Johann Fischer <j.fischer@phytec.de> * @author Jonas Remmert <j.remmert@phytec.de> + * @author Sebastian Meiling <s@mlng.net> */ -#ifndef MKW2XDRF_H -#define MKW2XDRF_H +#ifndef KW2XDRF_H +#define KW2XDRF_H #include <stdint.h> @@ -38,33 +39,20 @@ extern "C" { /** * @brief Maximum packet length */ -#define KW2XRF_MAX_PKT_LENGTH (IEEE802154_FRAME_LEN_MAX) - -/** - * @brief Default short address used after initialization - */ -#define KW2XRF_DEFAULT_SHORT_ADDR (0x0042) - -/** - * @brief Default short address used after initialization - */ -#define KW2XRF_DEFAULT_ADDR_LONG (0x0000000DEADCAB1E) +#define KW2XRF_MAX_PKT_LENGTH (IEEE802154_FRAME_LEN_MAX) /** * @brief Default PAN ID used after initialization */ -#define KW2XRF_DEFAULT_PANID (IEEE802154_DEFAULT_PANID) +#define KW2XRF_DEFAULT_PANID (IEEE802154_DEFAULT_PANID) /** * @brief Default channel used after initialization * * @{ */ -#ifdef DEFAULT_CHANNEL -#define KW2XRF_DEFAULT_CHANNEL (DEFAULT_CHANNEL) -#endif #ifndef KW2XRF_DEFAULT_CHANNEL -#define KW2XRF_DEFAULT_CHANNEL (IEEE802154_DEFAULT_CHANNEL) +#define KW2XRF_DEFAULT_CHANNEL (IEEE802154_DEFAULT_CHANNEL) #endif /** @} */ @@ -80,17 +68,17 @@ extern "C" { /** * @brief Default TX_POWER in dbm used after initialization */ -#define KW2XRF_DEFAULT_TX_POWER (IEEE802154_DEFAULT_TXPOWER) +#define KW2XRF_DEFAULT_TX_POWER (IEEE802154_DEFAULT_TXPOWER) /** * @brief Maximum output power of the kw2x device in dBm */ -#define MKW2XDRF_OUTPUT_POWER_MAX (8) +#define KW2XDRF_OUTPUT_POWER_MAX (8) /** * @brief Minimum output power of the kw2x device in dBm */ -#define MKW2XDRF_OUTPUT_POWER_MIN (-35) +#define KW2XDRF_OUTPUT_POWER_MIN (-35) /** * @brief Internal device option flags @@ -182,5 +170,5 @@ void kw2xrf_reset_phy(kw2xrf_t *dev); } #endif -#endif /* MKW2XDRF_H */ +#endif /* KW2XDRF_H */ /** @} */ diff --git a/drivers/kw2xrf/kw2xrf.c b/drivers/kw2xrf/kw2xrf.c index e143f6784c..5cb8d7cb7e 100644 --- a/drivers/kw2xrf/kw2xrf.c +++ b/drivers/kw2xrf/kw2xrf.c @@ -15,17 +15,20 @@ * @author Johann Fischer <j.fischer@phytec.de> * @author Jonas Remmert <j.remmert@phytec.de> * @author Oliver Hahm <oliver.hahm@inria.fr> + * @author Sebastian Meiling <s@mlng.net> * @} */ #include <stdint.h> #include <string.h> +#include "log.h" #include "mutex.h" #include "msg.h" #include "periph/gpio.h" #include "periph/cpuid.h" #include "net/gnrc.h" #include "net/ieee802154.h" +#include "uuid.h" #include "kw2xrf.h" #include "kw2xrf_spi.h" @@ -37,55 +40,22 @@ #define ENABLE_DEBUG (0) #include "debug.h" -#if CPUID_LEN -/* make sure that the buffer is always big enough to store a 64bit value */ -#if CPUID_LEN < IEEE802154_LONG_ADDRESS_LEN -#define KW2XRF_ID_LEN IEEE802154_LONG_ADDRESS_LEN -#else -#define KW2XRF_ID_LEN CPUID_LEN -#endif -#endif - static void kw2xrf_set_address(kw2xrf_t *dev) { + DEBUG("[kw2xrf] set MAC addresses\n"); eui64_t addr_long; - addr_long.uint64.u64 = KW2XRF_DEFAULT_ADDR_LONG; - uint16_t addr_short = KW2XRF_DEFAULT_SHORT_ADDR; - -#if CPUID_LEN - if (CPUID_LEN) { - uint8_t cpuid[KW2XRF_ID_LEN]; - /* in case CPUID_LEN < 8, fill missing bytes with zeros */ - memset(cpuid, 0, CPUID_LEN); - - cpuid_get(cpuid); - - /* generate short hardware address if CPUID_LEN > 0 */ - for (int i = 0; i < CPUID_LEN; i++) { - /* XOR each even byte of the CPUID with LSB of short address - and each odd byte with MSB */ - addr_short ^= (uint16_t)(cpuid[i] << ((i & 0x01) * 8)); - } - - for (int i = IEEE802154_LONG_ADDRESS_LEN; i < CPUID_LEN; i++) { - cpuid[i & 0x07] ^= cpuid[i]; - } - - /* make sure we mark the address as non-multicast and not globally unique */ - cpuid[0] &= ~(0x01); - cpuid[0] |= 0x02; - /* copy and set long address */ - memcpy(&addr_long, cpuid, IEEE802154_LONG_ADDRESS_LEN); - } -#endif - - kw2xrf_set_addr_long(dev, addr_long.uint64.u64); - kw2xrf_set_addr_short(dev, addr_short); + /* get an 8-byte unique ID to use as hardware address */ + uuid_get(addr_long.uint8, IEEE802154_LONG_ADDRESS_LEN); + /* make sure we mark the address as non-multicast and not globally unique */ + addr_long.uint8[0] &= ~(0x01); + addr_long.uint8[0] |= (0x02); + /* set short and long address */ + kw2xrf_set_addr_long(dev, NTOHLL(addr_long.uint64.u64)); + kw2xrf_set_addr_short(dev, NTOHS(addr_long.uint16[0].u16)); } void kw2xrf_setup(kw2xrf_t *dev, const kw2xrf_params_t *params) { - DEBUG("[kw2xrf]: kw2xrf_setup\n"); netdev2_t *netdev = (netdev2_t *)dev; netdev->driver = &kw2xrf_driver; @@ -96,7 +66,7 @@ void kw2xrf_setup(kw2xrf_t *dev, const kw2xrf_params_t *params) dev->pending_tx = 0; kw2xrf_spi_init(dev); kw2xrf_set_power_mode(dev, KW2XRF_IDLE); - DEBUG("[kw2xrf]: setup finished\n"); + DEBUG("[kw2xrf] setup finished\n"); } int kw2xrf_init(kw2xrf_t *dev, gpio_cb_t cb) @@ -113,7 +83,7 @@ int kw2xrf_init(kw2xrf_t *dev, gpio_cb_t cb) kw2xrf_abort_sequence(dev); kw2xrf_update_overwrites(dev); kw2xrf_timer_init(dev, KW2XRF_TIMEBASE_62500HZ); - DEBUG("[kw2xrf]: init finished\n"); + DEBUG("[kw2xrf] init finished\n"); return 0; } @@ -157,6 +127,6 @@ void kw2xrf_reset_phy(kw2xrf_t *dev) kw2xrf_enable_irq_b(dev); - DEBUG("[kw2xrf]: Initialized and set to channel %d and pan %d.\n", + DEBUG("[kw2xrf] init phy and (re)set to channel %d and pan %d.\n", KW2XRF_DEFAULT_CHANNEL, KW2XRF_DEFAULT_PANID); } diff --git a/drivers/kw2xrf/kw2xrf_getset.c b/drivers/kw2xrf/kw2xrf_getset.c index 5f64b80eb8..9ad419a75a 100644 --- a/drivers/kw2xrf/kw2xrf_getset.c +++ b/drivers/kw2xrf/kw2xrf_getset.c @@ -15,23 +15,27 @@ * @author Johann Fischer <j.fischer@phytec.de> * @author Jonas Remmert <j.remmert@phytec.de> * @author Oliver Hahm <oliver.hahm@inria.fr> + * @author Sebastian Meiling <s@mlng.net> * @} */ +#include "log.h" #include "kw2xrf.h" #include "kw2xrf_spi.h" #include "kw2xrf_reg.h" #include "kw2xrf_getset.h" #include "kw2xrf_intern.h" -#define ENABLE_DEBUG (0) +#define ENABLE_DEBUG (0) #include "debug.h" #define KW2XRF_LQI_HW_MAX 230 /**< LQI Saturation Level */ /* Modem_PA_PWR Register (PA Power Control) has a valid range from 3-31 */ -#define MKW2XDRF_PA_RANGE_MAX 31 /**< Maximum value of PA Power Control Register */ -#define MKW2XDRF_PA_RANGE_MIN 3 /**< Minimum value of PA Power Control Register */ +#define KW2XRF_PA_RANGE_MAX 31 /**< Maximum value of PA Power Control Register */ +#define KW2XRF_PA_RANGE_MIN 3 /**< Minimum value of PA Power Control Register */ + +#define KW2XRF_NUM_CHANNEL (KW2XRF_MAX_CHANNEL - KW2XRF_MIN_CHANNEL + 1) /* PLL integer and fractional lookup tables * @@ -71,16 +75,17 @@ static const uint8_t pow_lt[44] = { void kw2xrf_set_tx_power(kw2xrf_t *dev, int16_t txpower) { - if (txpower > MKW2XDRF_OUTPUT_POWER_MAX) { - txpower = MKW2XDRF_OUTPUT_POWER_MAX; + if (txpower > KW2XDRF_OUTPUT_POWER_MAX) { + txpower = KW2XDRF_OUTPUT_POWER_MAX; } - if (txpower < MKW2XDRF_OUTPUT_POWER_MIN) { - txpower = MKW2XDRF_OUTPUT_POWER_MIN; + if (txpower < KW2XDRF_OUTPUT_POWER_MIN) { + txpower = KW2XDRF_OUTPUT_POWER_MIN; } - uint8_t level = pow_lt[txpower - MKW2XDRF_OUTPUT_POWER_MIN]; + uint8_t level = pow_lt[txpower - KW2XDRF_OUTPUT_POWER_MIN]; kw2xrf_write_dreg(dev, MKW2XDM_PA_PWR, MKW2XDM_PA_PWR(level)); + LOG_DEBUG("[kw2xrf] set txpower to: %d\n", txpower); dev->tx_power = txpower; } @@ -95,7 +100,7 @@ uint8_t kw2xrf_get_channel(kw2xrf_t *dev) uint16_t pll_frac = kw2xrf_read_dreg(dev, MKW2XDM_PLL_FRAC0_LSB); pll_frac |= ((uint16_t)kw2xrf_read_dreg(dev, MKW2XDM_PLL_FRAC0_MSB) << 8); - for (int i = 0; i < 16; i++) { + for (unsigned i = 0; i < KW2XRF_NUM_CHANNEL; i++) { if ((pll_frac_lt[i] == pll_frac) && (pll_int_lt[i] == pll_int)) { return i + 11; } @@ -117,7 +122,7 @@ int kw2xrf_set_channel(kw2xrf_t *dev, uint8_t channel) uint8_t old_seq = kw2xrf_get_sequence(dev); if (channel < KW2XRF_MIN_CHANNEL || channel > KW2XRF_MAX_CHANNEL) { - DEBUG("[kw2xrf]: Invalid channel %i set\n", channel); + LOG_ERROR("[kw2xrf] Invalid channel %u\n", channel); return -1; } @@ -136,7 +141,7 @@ int kw2xrf_set_channel(kw2xrf_t *dev, uint8_t channel) kw2xrf_set_sequence(dev, old_seq); } - DEBUG("[kw2xrf]: set channel to %u\n", channel); + LOG_DEBUG("[kw2xrf] set channel to %u\n", channel); return 0; } @@ -156,7 +161,7 @@ void kw2xrf_abort_sequence(kw2xrf_t *dev) uint8_t state; do { state = kw2xrf_read_dreg(dev, MKW2XDM_SEQ_STATE); - DEBUG("[kw2xrf]: abort SEQ_STATE: %x\n", state); + DEBUG("[kw2xrf] abort SEQ_STATE: %x\n", state); } while ((state & 0x1F) != 0); /* clear all IRQ bits */ @@ -182,7 +187,7 @@ void kw2xrf_set_idle_sequence(kw2xrf_t *dev) kw2xrf_write_dreg(dev, MKW2XDM_PHY_CTRL1, reg); if (dev->pending_tx) { - DEBUG("[kw2xrf]: pending tx, cannot set idle sequenz\n"); + DEBUG("[kw2xrf] pending tx, cannot set idle sequenz\n"); return; } @@ -210,7 +215,6 @@ void kw2xrf_set_idle_sequence(kw2xrf_t *dev) default: dev->state = NETOPT_STATE_IDLE; } - kw2xrf_enable_irq_b(dev); } @@ -238,11 +242,11 @@ void kw2xrf_set_sequence(kw2xrf_t *dev, kw2xrf_physeq_t seq) break; default: - DEBUG("[kw2xrf]: undefined state assigned to phy\n"); + DEBUG("[kw2xrf] undefined state assigned to phy\n"); dev->state = NETOPT_STATE_IDLE; } - DEBUG("[kw2xrf]: set sequence to %i\n", seq); + DEBUG("[kw2xrf] set sequence to %i\n", seq); reg = kw2xrf_read_dreg(dev, MKW2XDM_PHY_CTRL1); reg &= ~(MKW2XDM_PHY_CTRL1_XCVSEQ_MASK); reg |= MKW2XDM_PHY_CTRL1_XCVSEQ(seq); @@ -257,6 +261,7 @@ void kw2xrf_set_pan(kw2xrf_t *dev, uint16_t pan) val_ar[1] = (pan >> 8); val_ar[0] = (uint8_t)pan; kw2xrf_write_iregs(dev, MKW2XDMI_MACPANID0_LSB, val_ar, 2); + LOG_DEBUG("[kw2xrf] set pan to: 0x%x\n", pan); dev->netdev.pan = pan; } @@ -281,7 +286,7 @@ void kw2xrf_set_addr_long(kw2xrf_t *dev, uint64_t addr) uint64_t tmp; uint8_t *ap = (uint8_t *)(&tmp); - for (int i = 0; i < IEEE802154_LONG_ADDRESS_LEN; i++) { + for (unsigned i = 0; i < IEEE802154_LONG_ADDRESS_LEN; i++) { dev->netdev.long_addr[i] = (uint8_t)(addr >> (i * 8)); ap[i] = (addr >> ((IEEE802154_LONG_ADDRESS_LEN - 1 - i) * 8)); } @@ -361,7 +366,7 @@ uint32_t kw2xrf_get_rssi(uint32_t value) void kw2xrf_set_option(kw2xrf_t *dev, uint16_t option, bool state) { - DEBUG("[kw2xrf]: set option %i to %i\n", option, state); + DEBUG("[kw2xrf] set option %i to %i\n", option, state); /* set option field */ if (state) { @@ -370,13 +375,13 @@ void kw2xrf_set_option(kw2xrf_t *dev, uint16_t option, bool state) /* trigger option specific actions */ switch (option) { case KW2XRF_OPT_AUTOCCA: - DEBUG("[kw2xrf] opt: enabling CCA before TX mode\n"); + LOG_DEBUG("[kw2xrf] opt: enabling CCA before TX mode\n"); kw2xrf_set_dreg_bit(dev, MKW2XDM_PHY_CTRL1, MKW2XDM_PHY_CTRL1_CCABFRTX); break; case KW2XRF_OPT_PROMISCUOUS: - DEBUG("[kw2xrf] opt: enabling PROMISCUOUS mode\n"); + LOG_DEBUG("[kw2xrf] opt: enabling PROMISCUOUS mode\n"); /* disable auto ACKs in promiscuous mode */ kw2xrf_clear_dreg_bit(dev, MKW2XDM_PHY_CTRL1, MKW2XDM_PHY_CTRL1_AUTOACK | MKW2XDM_PHY_CTRL1_RXACKRQD); diff --git a/drivers/kw2xrf/kw2xrf_intern.c b/drivers/kw2xrf/kw2xrf_intern.c index eab54f6659..0d2c90bed8 100644 --- a/drivers/kw2xrf/kw2xrf_intern.c +++ b/drivers/kw2xrf/kw2xrf_intern.c @@ -24,11 +24,12 @@ #include "kw2xrf_intern.h" #include "overwrites.h" -#define ENABLE_DEBUG (0) +#define ENABLE_DEBUG (0) #include "debug.h" void kw2xrf_disable_interrupts(kw2xrf_t *dev) { + DEBUG("[kw2xrf] disable interrupts\n"); /* Clear and disable all interrupts */ kw2xrf_write_dreg(dev, MKW2XDM_PHY_CTRL2, 0xff); int reg = kw2xrf_read_dreg(dev, MKW2XDM_PHY_CTRL3); @@ -62,7 +63,7 @@ void kw2xrf_set_out_clk(kw2xrf_t *dev) void kw2xrf_set_power_mode(kw2xrf_t *dev, kw2xrf_powermode_t pm) { - DEBUG("[kw2xrf]: kw2xrf_set_power_mode\n"); + DEBUG("[kw2xrf] set power mode to %d\n", pm); uint8_t reg = 0; switch (pm) { case KW2XRF_HIBERNATE: @@ -95,7 +96,7 @@ int kw2xrf_can_switch_to_idle(kw2xrf_t *dev) { uint8_t state = kw2xrf_read_dreg(dev, MKW2XDM_SEQ_STATE); uint8_t seq = kw2xrf_read_dreg(dev, MKW2XDM_PHY_CTRL1) & MKW2XDM_PHY_CTRL1_XCVSEQ_MASK; - DEBUG("[kw2xrf]: state 0x%0x, seq 0x%0x\n", state, seq); + DEBUG("[kw2xrf] state 0x%0x, seq 0x%0x\n", state, seq); if ((seq != XCVSEQ_TRANSMIT) && (seq != XCVSEQ_TX_RX)) { return 1; @@ -175,10 +176,7 @@ void kw2xrf_trigger_tx_ops_disable(kw2xrf_t *dev) { kw2xrf_clear_dreg_bit(dev, MKW2XDM_PHY_CTRL3, MKW2XDM_PHY_CTRL3_TMR2CMP_EN); kw2xrf_write_dreg(dev, MKW2XDM_IRQSTS3, MKW2XDM_IRQSTS3_TMR2IRQ); - if (ENABLE_DEBUG) { - uint32_t now = kw2xrf_timer_get(dev); - printf("[kw2xrf] now: %" PRIx32 "\n", now); - } + DEBUG("[kw2xrf] trigger_tx_ops_disable, now: %" PRIx32 "\n", kw2xrf_timer_get(dev)); } void kw2xrf_abort_rx_ops_enable(kw2xrf_t *dev, uint32_t timeout) @@ -191,10 +189,7 @@ void kw2xrf_abort_rx_ops_disable(kw2xrf_t *dev) { kw2xrf_clear_dreg_bit(dev, MKW2XDM_PHY_CTRL3, MKW2XDM_PHY_CTRL3_TMR3CMP_EN); kw2xrf_write_dreg(dev, MKW2XDM_IRQSTS3, MKW2XDM_IRQSTS3_TMR3IRQ); - if (ENABLE_DEBUG) { - uint32_t now = kw2xrf_timer_get(dev); - printf("[kw2xrf] now: %" PRIx32 "\n", now); - } + DEBUG("[kw2xrf] abort_rx_ops_disable, now: %" PRIx32 "\n", kw2xrf_timer_get(dev)); } void kw2xrf_seq_timeout_on(kw2xrf_t *dev, uint32_t timeout) @@ -216,10 +211,7 @@ void kw2xrf_seq_timeout_off(kw2xrf_t *dev) { kw2xrf_clear_dreg_bit(dev, MKW2XDM_PHY_CTRL3, MKW2XDM_PHY_CTRL3_TMR4CMP_EN); kw2xrf_write_dreg(dev, MKW2XDM_IRQSTS3, MKW2XDM_IRQSTS3_TMR4IRQ); - if (ENABLE_DEBUG) { - uint32_t now = kw2xrf_timer_get(dev); - printf("[kw2xrf] now: %" PRIx32 "\n", now); - } + DEBUG("[kw2xrf] seq_timeout_off, now: %" PRIx32 "\n", kw2xrf_timer_get(dev)); } uint32_t kw2xrf_get_timestamp(kw2xrf_t *dev) diff --git a/drivers/kw2xrf/kw2xrf_netdev.c b/drivers/kw2xrf/kw2xrf_netdev.c index ccdd2c7ba7..a717eabb25 100644 --- a/drivers/kw2xrf/kw2xrf_netdev.c +++ b/drivers/kw2xrf/kw2xrf_netdev.c @@ -20,6 +20,7 @@ #include <assert.h> #include <errno.h> +#include "log.h" #include "net/eui64.h" #include "net/ieee802154.h" #include "net/netdev2.h" @@ -33,7 +34,7 @@ #include "kw2xrf_tm.h" #include "kw2xrf_intern.h" -#define ENABLE_DEBUG (0) +#define ENABLE_DEBUG (0) #include "debug.h" #define _MAX_MHR_OVERHEAD (25) @@ -57,7 +58,7 @@ static int _init(netdev2_t *netdev) /* initialise SPI and GPIOs */ if (kw2xrf_init(dev, &_irq_handler)) { - DEBUG("[kw2xrf]: error: unable to initialize device\n"); + LOG_ERROR("[kw2xrf] unable to initialize device\n"); return -1; } @@ -73,7 +74,7 @@ static int _init(netdev2_t *netdev) static size_t kw2xrf_tx_load(uint8_t *pkt_buf, uint8_t *buf, size_t len, size_t offset) { - for (int i = 0; i < len; i++) { + for (unsigned i = 0; i < len; i++) { pkt_buf[i + offset] = buf[i]; } return offset + len; @@ -101,7 +102,7 @@ static int _send(netdev2_t *netdev, const struct iovec *vector, unsigned count) for (unsigned i = 0; i < count; i++, ptr++) { /* current packet data + FCS too long */ if ((len + ptr->iov_len + IEEE802154_FCS_LEN) > KW2XRF_MAX_PKT_LENGTH) { - DEBUG("[kw2xrf]: error: packet too large (%u byte) to be send\n", + LOG_ERROR("[kw2xrf] packet too large (%u byte) to be send\n", (unsigned)len + IEEE802154_FCS_LEN); return -EOVERFLOW; } @@ -518,13 +519,13 @@ static void _isr_event_seq_r(netdev2_t *netdev, uint8_t *dregs) uint8_t irqsts1 = 0; if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_RXWTRMRKIRQ) { - DEBUG("[kw2xrf]: got RXWTRMRKIRQ\n"); + DEBUG("[kw2xrf] got RXWTRMRKIRQ\n"); irqsts1 |= MKW2XDM_IRQSTS1_RXWTRMRKIRQ; netdev->event_callback(netdev, NETDEV2_EVENT_RX_STARTED); } if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_RXIRQ) { - DEBUG("[kw2xrf]: finished RXSEQ\n"); + DEBUG("[kw2xrf] finished RXSEQ\n"); dev->state = NETOPT_STATE_RX; irqsts1 |= MKW2XDM_IRQSTS1_RXIRQ; netdev->event_callback(netdev, NETDEV2_EVENT_RX_COMPLETE); @@ -534,12 +535,12 @@ static void _isr_event_seq_r(netdev2_t *netdev, uint8_t *dregs) } if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_TXIRQ) { - DEBUG("[kw2xrf]: finished (ACK) TXSEQ\n"); + DEBUG("[kw2xrf] finished (ACK) TXSEQ\n"); irqsts1 |= MKW2XDM_IRQSTS1_TXIRQ; } if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_SEQIRQ) { - DEBUG("[kw2xrf]: SEQIRQ\n"); + DEBUG("[kw2xrf] SEQIRQ\n"); irqsts1 |= MKW2XDM_IRQSTS1_SEQIRQ; kw2xrf_set_idle_sequence(dev); } @@ -554,18 +555,18 @@ static void _isr_event_seq_t(netdev2_t *netdev, uint8_t *dregs) uint8_t irqsts1 = 0; if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_TXIRQ) { - DEBUG("[kw2xrf]: finished TXSEQ\n"); + DEBUG("[kw2xrf] finished TXSEQ\n"); irqsts1 |= MKW2XDM_IRQSTS1_TXIRQ; } if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_SEQIRQ) { - DEBUG("[kw2xrf]: SEQIRQ\n"); + DEBUG("[kw2xrf] SEQIRQ\n"); irqsts1 |= MKW2XDM_IRQSTS1_SEQIRQ; if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_CCAIRQ) { irqsts1 |= MKW2XDM_IRQSTS1_CCAIRQ; if (dregs[MKW2XDM_IRQSTS2] & MKW2XDM_IRQSTS2_CCA) { - DEBUG("[kw2xrf]: CCA CH busy\n"); + DEBUG("[kw2xrf] CCA CH busy\n"); netdev->event_callback(netdev, NETDEV2_EVENT_TX_MEDIUM_BUSY); } else { @@ -592,10 +593,10 @@ static void _isr_event_seq_cca(netdev2_t *netdev, uint8_t *dregs) (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_SEQIRQ)) { irqsts1 |= MKW2XDM_IRQSTS1_CCAIRQ | MKW2XDM_IRQSTS1_SEQIRQ; if (dregs[MKW2XDM_IRQSTS2] & MKW2XDM_IRQSTS2_CCA) { - DEBUG("[kw2xrf]: SEQIRQ, CCA CH busy\n"); + DEBUG("[kw2xrf] SEQIRQ, CCA CH busy\n"); } else { - DEBUG("[kw2xrf]: SEQIRQ, CCA CH idle\n"); + DEBUG("[kw2xrf] SEQIRQ, CCA CH idle\n"); } kw2xrf_set_idle_sequence(dev); } @@ -609,26 +610,26 @@ static void _isr_event_seq_tr(netdev2_t *netdev, uint8_t *dregs) uint8_t irqsts1 = 0; if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_TXIRQ) { - DEBUG("[kw2xrf]: finished TXSEQ\n"); + DEBUG("[kw2xrf] finished TXSEQ\n"); irqsts1 |= MKW2XDM_IRQSTS1_TXIRQ; if (dregs[MKW2XDM_PHY_CTRL1] & MKW2XDM_PHY_CTRL1_RXACKRQD) { - DEBUG("[kw2xrf]: wait for RX ACK\n"); + DEBUG("[kw2xrf] wait for RX ACK\n"); kw2xrf_seq_timeout_on(dev, _MACACKWAITDURATION); } } if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_RXWTRMRKIRQ) { - DEBUG("[kw2xrf]: got RXWTRMRKIRQ\n"); + DEBUG("[kw2xrf] got RXWTRMRKIRQ\n"); irqsts1 |= MKW2XDM_IRQSTS1_RXWTRMRKIRQ; } if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_FILTERFAIL_IRQ) { - DEBUG("[kw2xrf]: got FILTERFAILIRQ\n"); + DEBUG("[kw2xrf] got FILTERFAILIRQ\n"); irqsts1 |= MKW2XDM_IRQSTS1_FILTERFAIL_IRQ; } if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_RXIRQ) { - DEBUG("[kw2xrf]: got RX ACK\n"); + DEBUG("[kw2xrf] got RX ACK\n"); irqsts1 |= MKW2XDM_IRQSTS1_RXIRQ; } @@ -636,12 +637,12 @@ static void _isr_event_seq_tr(netdev2_t *netdev, uint8_t *dregs) if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_CCAIRQ) { irqsts1 |= MKW2XDM_IRQSTS1_CCAIRQ; if (dregs[MKW2XDM_IRQSTS2] & MKW2XDM_IRQSTS2_CCA) { - DEBUG("[kw2xrf]: CCA CH busy\n"); + DEBUG("[kw2xrf] CCA CH busy\n"); netdev->event_callback(netdev, NETDEV2_EVENT_TX_MEDIUM_BUSY); } } - DEBUG("[kw2xrf]: SEQIRQ\n"); + DEBUG("[kw2xrf] SEQIRQ\n"); irqsts1 |= MKW2XDM_IRQSTS1_SEQIRQ; assert(dev->pending_tx != 0); dev->pending_tx--; @@ -650,7 +651,7 @@ static void _isr_event_seq_tr(netdev2_t *netdev, uint8_t *dregs) kw2xrf_set_idle_sequence(dev); } else if (dregs[MKW2XDM_IRQSTS3] & MKW2XDM_IRQSTS3_TMR4IRQ) { - DEBUG("[kw2xrf]: TC4TMOUT, no SEQIRQ, TX failed\n"); + DEBUG("[kw2xrf] TC4TMOUT, no SEQIRQ, TX failed\n"); assert(dev->pending_tx != 0); dev->pending_tx--; netdev->event_callback(netdev, NETDEV2_EVENT_TX_NOACK); @@ -670,13 +671,13 @@ static void _isr_event_seq_ccca(netdev2_t *netdev, uint8_t *dregs) if ((dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_CCAIRQ) && (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_SEQIRQ)) { irqsts1 |= MKW2XDM_IRQSTS1_CCAIRQ | MKW2XDM_IRQSTS1_SEQIRQ; - DEBUG("[kw2xrf]: CCCA CH idle\n"); + DEBUG("[kw2xrf] CCCA CH idle\n"); kw2xrf_seq_timeout_off(dev); kw2xrf_set_sequence(dev, dev->idle_state); } else if (dregs[MKW2XDM_IRQSTS3] & MKW2XDM_IRQSTS3_TMR4IRQ) { irqsts1 |= MKW2XDM_IRQSTS1_CCAIRQ | MKW2XDM_IRQSTS1_SEQIRQ; - DEBUG("[kw2xrf]: CCCA timeout\n"); + DEBUG("[kw2xrf] CCCA timeout\n"); kw2xrf_seq_timeout_off(dev); kw2xrf_set_sequence(dev, dev->idle_state); } @@ -692,7 +693,7 @@ static void _isr(netdev2_t *netdev) kw2xrf_read_dregs(dev, MKW2XDM_IRQSTS1, dregs, MKW2XDM_PHY_CTRL4 + 1); kw2xrf_mask_irq_b(dev); - DEBUG("[kw2xrf]: CTRL1 %0x, IRQSTS1 %0x, IRQSTS2 %0x\n", + DEBUG("[kw2xrf] CTRL1 %0x, IRQSTS1 %0x, IRQSTS2 %0x\n", dregs[MKW2XDM_PHY_CTRL1], dregs[MKW2XDM_IRQSTS1], dregs[MKW2XDM_IRQSTS2]); switch (dregs[MKW2XDM_PHY_CTRL1] & MKW2XDM_PHY_CTRL1_XCVSEQ_MASK) { @@ -718,17 +719,17 @@ static void _isr(netdev2_t *netdev) case XCVSEQ_IDLE: default: - DEBUG("[kw2xrf]: undefined seq state in isr\n"); + DEBUG("[kw2xrf] undefined seq state in isr\n"); break; } uint8_t irqsts2 = 0; if (dregs[MKW2XDM_IRQSTS2] & MKW2XDM_IRQSTS2_PB_ERR_IRQ) { - DEBUG("[kw2xrf]: untreated PB_ERR_IRQ\n"); + DEBUG("[kw2xrf] untreated PB_ERR_IRQ\n"); irqsts2 |= MKW2XDM_IRQSTS2_PB_ERR_IRQ; } if (dregs[MKW2XDM_IRQSTS2] & MKW2XDM_IRQSTS2_WAKE_IRQ) { - DEBUG("[kw2xrf]: untreated WAKE_IRQ\n"); + DEBUG("[kw2xrf] untreated WAKE_IRQ\n"); irqsts2 |= MKW2XDM_IRQSTS2_WAKE_IRQ; } kw2xrf_write_dreg(dev, MKW2XDM_IRQSTS2, irqsts2); @@ -737,15 +738,15 @@ static void _isr(netdev2_t *netdev) /* for debugging only */ kw2xrf_read_dregs(dev, MKW2XDM_IRQSTS1, dregs, MKW2XDM_IRQSTS1 + 3); if (dregs[MKW2XDM_IRQSTS1] & 0x7f) { - DEBUG("[kw2xrf]: IRQSTS1 contains untreated IRQs: 0x%02x\n", + DEBUG("[kw2xrf] IRQSTS1 contains untreated IRQs: 0x%02x\n", dregs[MKW2XDM_IRQSTS1]); } if (dregs[MKW2XDM_IRQSTS2] & 0x02) { - DEBUG("[kw2xrf]: IRQSTS2 contains untreated IRQs: 0x%02x\n", + DEBUG("[kw2xrf] IRQSTS2 contains untreated IRQs: 0x%02x\n", dregs[MKW2XDM_IRQSTS2]); } if (dregs[MKW2XDM_IRQSTS3] & 0x0f) { - DEBUG("[kw2xrf]: IRQSTS3 contains untreated IRQs: 0x%02x\n", + DEBUG("[kw2xrf] IRQSTS3 contains untreated IRQs: 0x%02x\n", dregs[MKW2XDM_IRQSTS3]); } } diff --git a/drivers/kw2xrf/kw2xrf_spi.c b/drivers/kw2xrf/kw2xrf_spi.c index 3b9e46f849..2fea229041 100644 --- a/drivers/kw2xrf/kw2xrf_spi.c +++ b/drivers/kw2xrf/kw2xrf_spi.c @@ -17,6 +17,8 @@ * @author Sebastian Meiling <s@mlng.net> * @} */ + +#include "log.h" #include "kw2xrf.h" #include "kw2xrf_reg.h" #include "kw2xrf_spi.h" @@ -68,28 +70,28 @@ int kw2xrf_spi_init(kw2xrf_t *dev) #endif if (res != SPI_OK) { - DEBUG("[kw2xrf_spi] error: initializing SPI_%i device (code %i)\n", - SPIDEV, res); + LOG_ERROR("[kw2xrf_spi] failed to init SPI_%i device (code %i)\n", + SPIDEV, res); return 1; } /* verify SPI params */ res = spi_acquire(SPIDEV, CSPIN, SPIMODE, SPICLK); if (res == SPI_NOMODE) { - puts("[kw2xrf_spi] error: given SPI mode is not supported"); + LOG_ERROR("[kw2xrf_spi] given SPI mode is not supported"); return 1; } else if (res == SPI_NOCLK) { - puts("[kw2xrf_spi] error: targeted clock speed is not supported"); + LOG_ERROR("[kw2xrf_spi] targeted clock speed is not supported"); return 1; } else if (res != SPI_OK) { - puts("[kw2xrf_spi] error: unable to acquire bus with given parameters"); + LOG_ERROR("[kw2xrf_spi] unable to acquire bus with given parameters"); return 1; } spi_release(SPIDEV); DEBUG("[kw2xrf_spi] SPI_DEV(%i) initialized: mode: %i, clk: %i, cs_pin: %i\n", - SPIDEV, SPIMODE, SPICLK, CSPIN); + SPIDEV, SPIMODE, SPICLK, CSPIN); return 0; } -- GitLab