Skip to content

Commit

Permalink
fixup! drivers/at86rf215: Add driver for the AT86RF215 radio
Browse files Browse the repository at this point in the history
  • Loading branch information
benpicco committed Sep 9, 2019
1 parent 445ddde commit e069b1d
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 29 deletions.
6 changes: 6 additions & 0 deletions drivers/Makefile.dep
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,12 @@ ifneq (,$(filter at86rf2%,$(USEMODULE)))
FEATURES_REQUIRED += periph_spi
endif

ifneq (,$(filter at86rf215,$(USEMODULE)))
USEMODULE += gnrc_netif_phy_fsk
USEMODULE += gnrc_netif_phy_odfm
USEMODULE += gnrc_netif_phy_oqpsk
endif

ifneq (,$(filter ata8520e,$(USEMODULE)))
USEMODULE += xtimer
USEMODULE += fmt
Expand Down
24 changes: 2 additions & 22 deletions drivers/at86rf215/at86rf215_netdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -380,17 +380,7 @@ static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len)

case NETOPT_OQPSK_RATE:
assert(max_len >= sizeof(int8_t));
switch (at86rf215_OQPSK_get_mode(dev)) {
case AT86RF215_OQPSK_MODE_LEGACY:
*((int8_t *)val) = IEEE802154_OQPSK_LEGACY;
break;
case AT86RF215_OQPSK_MODE_LEGACY_HDR:
*((int8_t *)val) = IEEE802154_OQPSK_LEGACY_HIGH;
break;
default:
*((int8_t *)val) = IEEE802154_OQPSK_RATE_0
+ (at86rf215_OQPSK_get_mode(dev) >> 1);
}
*((int8_t *)val) = at86rf215_OQPSK_get_mode(dev);
res = max_len;
break;

Expand Down Expand Up @@ -636,17 +626,7 @@ static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len)
}

assert(len <= sizeof(uint8_t));
switch (*(uint8_t *)val) {
case IEEE802154_OQPSK_LEGACY:
res = at86rf215_OQPSK_set_mode(dev, AT86RF215_OQPSK_MODE_LEGACY);
break;
case IEEE802154_OQPSK_LEGACY_HIGH:
res = at86rf215_OQPSK_set_mode(dev, AT86RF215_OQPSK_MODE_LEGACY_HDR);
break;
default:
res = at86rf215_OQPSK_set_mode(dev, AT86RF215_MR_OQPSK_MODE(*(uint8_t *)val - IEEE802154_OQPSK_RATE_0));
}
if (res == 0) {
if (at86rf215_OQPSK_set_mode(dev, *(uint8_t *)val) == 0) {
res = sizeof(uint8_t);
} else {
res = -ERANGE;
Expand Down
20 changes: 13 additions & 7 deletions drivers/at86rf215/at86rf215_o-qpsk.c
Original file line number Diff line number Diff line change
Expand Up @@ -316,15 +316,16 @@ int at86rf215_OQPSK_set_mode(at86rf215_t *dev, uint8_t mode)
{
uint8_t chips;

if (mode & ~(OQPSKPHRTX_MOD_MASK | OQPSKPHRTX_LEG_MASK)) {
if ((mode & ~IEEE802154_OQPSK_FLAG_LEGACY) > 4) {
return -1;
}

if (mode & AT86RF215_OQPSK_MODE_LEGACY) {
bool high_rate = (mode & AT86RF215_OQPSK_MODE_LEGACY_HDR) == AT86RF215_OQPSK_MODE_LEGACY_HDR;
_set_legacy(dev, high_rate, &chips, &mode);
if (mode & IEEE802154_OQPSK_FLAG_LEGACY) {
mode &= ~IEEE802154_OQPSK_FLAG_LEGACY;
_set_legacy(dev, mode, &chips, &mode);
} else {
chips = at86rf215_OQPSK_get_chips(dev);
mode = AT86RF215_MR_OQPSK_MODE(mode);
}

/* TX with selected rate mode */
Expand All @@ -340,11 +341,16 @@ uint8_t at86rf215_OQPSK_get_mode(at86rf215_t *dev)

if (mode & AT86RF215_OQPSK_MODE_LEGACY) {
if (at86rf215_reg_read(dev, dev->BBC->RG_OQPSKC3) & OQPSKC3_HRLEG_MASK) {
return AT86RF215_OQPSK_MODE_LEGACY_HDR;
/* legacy rate modes for at86rf233 & at86rf212b */
if (at86rf215_OQPSK_get_chips(dev) == BB_FCHIP2000) {
return IEEE802154_OQPSK_FLAG_LEGACY | 2;
} else {
return IEEE802154_OQPSK_FLAG_LEGACY | 1;
}
} else {
return AT86RF215_OQPSK_MODE_LEGACY;
return IEEE802154_OQPSK_FLAG_LEGACY;
}
}

return mode & OQPSKPHRTX_MOD_MASK;
return (mode & OQPSKPHRTX_MOD_MASK) >> OQPSKPHRTX_MOD_SHIFT;
}

0 comments on commit e069b1d

Please sign in to comment.