netdev2_ieee802154: fix channel setting
This commit is contained in:
parent
7b78775185
commit
0fa5b81e6a
@ -170,6 +170,21 @@ int netdev2_ieee802154_set(netdev2_ieee802154_t *dev, netopt_t opt, void *value,
|
|||||||
int res = -ENOTSUP;
|
int res = -ENOTSUP;
|
||||||
|
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
|
case NETOPT_CHANNEL:
|
||||||
|
{
|
||||||
|
if (len > sizeof(uint16_t)) {
|
||||||
|
res = -EOVERFLOW;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
uint16_t chan = *((uint16_t *)value);
|
||||||
|
/* real validity needs to be checked by device, since sub-GHz and
|
||||||
|
* 2.4 GHz band radios have different legal values. Here we only
|
||||||
|
* check that it fits in an 8-bit variabl*/
|
||||||
|
assert(chan <= UINT8_MAX);
|
||||||
|
dev->chan = chan;
|
||||||
|
res = sizeof(uint16_t);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case NETOPT_ADDRESS:
|
case NETOPT_ADDRESS:
|
||||||
if (len > sizeof(dev->short_addr)) {
|
if (len > sizeof(dev->short_addr)) {
|
||||||
res = -EOVERFLOW;
|
res = -EOVERFLOW;
|
||||||
@ -208,14 +223,13 @@ int netdev2_ieee802154_set(netdev2_ieee802154_t *dev, netopt_t opt, void *value,
|
|||||||
res = sizeof(uint16_t);
|
res = sizeof(uint16_t);
|
||||||
break;
|
break;
|
||||||
case NETOPT_NID:
|
case NETOPT_NID:
|
||||||
if (len > sizeof(dev->pan)) {
|
if (len > sizeof(uint16_t)) {
|
||||||
res = -EOVERFLOW;
|
res = -EOVERFLOW;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
dev->pan = *((uint16_t *)value);
|
dev->pan = *((uint16_t *)value);
|
||||||
res = sizeof(dev->pan);
|
res = sizeof(dev->pan);
|
||||||
break;
|
break;
|
||||||
/* channel can be very device specific */
|
|
||||||
case NETOPT_AUTOACK:
|
case NETOPT_AUTOACK:
|
||||||
if ((*(bool *)value)) {
|
if ((*(bool *)value)) {
|
||||||
dev->flags |= NETDEV2_IEEE802154_ACK_REQ;
|
dev->flags |= NETDEV2_IEEE802154_ACK_REQ;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user