ieee802154 radio: Implement IOCTL decode and dispatch in all radio drivers.
This commit is contained in:
parent
32962fa6e3
commit
8288f53d4e
@ -1154,10 +1154,81 @@ static int at86rf23x_getcca(FAR struct ieee802154_radio_s *ieee,
|
||||
static int at86rf23x_ioctl(FAR struct ieee802154_radio_s *ieee, int cmd,
|
||||
unsigned long arg)
|
||||
{
|
||||
FAR struct at86rf23x_dev_s *dev = (FAR struct at86rf23x_dev_s *)ieee;
|
||||
FAR struct at86rf23x_dev_s *dev =
|
||||
(FAR struct at86rf23x_dev_s *)ieee;
|
||||
FAR union ieee802154_radioarg_u *u; =
|
||||
(FAR union ieee802154_radioarg_u *)((uintptr_t)arg)
|
||||
|
||||
switch (cmd)
|
||||
{
|
||||
case PHY802154IOC_SET_CHAN:
|
||||
ret = at86rf23x_setchannel(ieee, u.channel);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_GET_CHAN:
|
||||
ret = at86rf23x_getchannel(ieee, &u.channel);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_SET_PANID:
|
||||
ret = at86rf23x_setpanid(ieee, u.panid);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_GET_PANID:
|
||||
ret = at86rf23x_getpanid(ieee, &u.panid);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_SET_SADDR:
|
||||
ret = at86rf23x_setsaddr(ieee, u.saddr);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_GET_SADDR:
|
||||
ret = at86rf23x_getsaddr(ieee, &u.saddr);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_SET_EADDR:
|
||||
ret = at86rf23x_seteaddr(ieee, u.eaddr);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_GET_EADDR:
|
||||
ret = at86rf23x_geteaddr(ieee, u.eaddr);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_SET_PROMISC:
|
||||
ret = at86rf23x_setpromisc(ieee, u.promisc);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_GET_PROMISC:
|
||||
ret = at86rf23x_getpromisc(ieee, &u.promisc);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_SET_DEVMODE:
|
||||
ret = at86rf23x_setdevmode(ieee, u.devmode);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_GET_DEVMODE:
|
||||
ret = at86rf23x_getdevmode(ieee, &u.devmode);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_SET_TXPWR:
|
||||
ret = at86rf23x_settxpower(ieee, u.txpwr);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_GET_TXPWR:
|
||||
ret = at86rf23x_gettxpower(ieee, &u.txpwr);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_SET_CCA:
|
||||
ret = at86rf23x_setcca(ieee, &u.cca);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_GET_CCA:
|
||||
ret = at86rf23x_getcca(ieee, &u.cca);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_ENERGYDETECT:
|
||||
ret = at86rf23x_energydetect(ieee, &u.energy);
|
||||
break;
|
||||
|
||||
case 1000:
|
||||
return at86rf23x_regdump(dev);
|
||||
|
||||
|
@ -991,10 +991,81 @@ static int mrf24j40_regdump(FAR struct mrf24j40_radio_s *dev)
|
||||
static int mrf24j40_ioctl(FAR struct ieee802154_radio_s *ieee, int cmd,
|
||||
unsigned long arg)
|
||||
{
|
||||
FAR struct mrf24j40_radio_s *dev = (FAR struct mrf24j40_radio_s *)ieee;
|
||||
FAR struct mrf24j40_radio_s *dev =
|
||||
(FAR struct mrf24j40_radio_s *)ieee;
|
||||
FAR union ieee802154_radioarg_u *u; =
|
||||
(FAR union ieee802154_radioarg_u *)((uintptr_t)arg)
|
||||
|
||||
switch(cmd)
|
||||
{
|
||||
case PHY802154IOC_SET_CHAN:
|
||||
ret = mrf24j40_setchannel(ieee, u.channel);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_GET_CHAN:
|
||||
ret = mrf24j40_getchannel(ieee, &u.channel);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_SET_PANID:
|
||||
ret = mrf24j40_setpanid(ieee, u.panid);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_GET_PANID:
|
||||
ret = mrf24j40_getpanid(ieee, &u.panid);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_SET_SADDR:
|
||||
ret = mrf24j40_setsaddr(ieee, u.saddr);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_GET_SADDR:
|
||||
ret = mrf24j40_getsaddr(ieee, &u.saddr);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_SET_EADDR:
|
||||
ret = mrf24j40_seteaddr(ieee, u.eaddr);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_GET_EADDR:
|
||||
ret = mrf24j40_geteaddr(ieee, u.eaddr);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_SET_PROMISC:
|
||||
ret = mrf24j40_setpromisc(ieee, u.promisc);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_GET_PROMISC:
|
||||
ret = mrf24j40_getpromisc(ieee, &u.promisc);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_SET_DEVMODE:
|
||||
ret = mrf24j40_setdevmode(ieee, u.devmode);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_GET_DEVMODE:
|
||||
ret = mrf24j40_getdevmode(ieee, &u.devmode);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_SET_TXPWR:
|
||||
ret = mrf24j40_settxpower(ieee, u.txpwr);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_GET_TXPWR:
|
||||
ret = mrf24j40_gettxpower(ieee, &u.txpwr);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_SET_CCA:
|
||||
ret = mrf24j40_setcca(ieee, &u.cca);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_GET_CCA:
|
||||
ret = mrf24j40_getcca(ieee, &u.cca);
|
||||
break;
|
||||
|
||||
case PHY802154IOC_ENERGYDETECT:
|
||||
ret = mrf24j40_energydetect(ieee, &u.energy);
|
||||
break;
|
||||
|
||||
case 1000:
|
||||
return mrf24j40_regdump(dev);
|
||||
|
||||
|
@ -99,6 +99,8 @@
|
||||
|
||||
#define PHY802154IOC_ENERGYDETECT _PHY802154IOC(0x0011)
|
||||
|
||||
#define EADDR_SIZE 8 /* REVISIT */
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
@ -129,15 +131,15 @@ struct ieee802154_packet_s
|
||||
|
||||
union ieee802154_radioarg_u
|
||||
{
|
||||
uint8_t channel; /* PHY802154IOC_GET/SET_CHAN */
|
||||
uint16_t panid; /* PHY802154IOC_GET/SET_PANID */
|
||||
uint16_t saddr; /* PHY802154IOC_GET/SET_SADDR */
|
||||
uint16_t laddr; /* PHY802154IOC_GET/SET_EADDR */
|
||||
bool promisc; /* PHY802154IOC_GET/SET_EADDR */
|
||||
bool devmode; /* PHY802154IOC_GET/SET_DEVMODE */
|
||||
int32_t txpwr; /* PHY802154IOC_GET/SET_TXPWR */
|
||||
bool energy /* PHY802154IOC_ENERGYDETECT */
|
||||
struct ieee802154_cca_s cca; /* PHY802154IOC_GET/SET_CCA */
|
||||
uint8_t channel; /* PHY802154IOC_GET/SET_CHAN */
|
||||
uint16_t panid; /* PHY802154IOC_GET/SET_PANID */
|
||||
uint16_t saddr; /* PHY802154IOC_GET/SET_SADDR */
|
||||
uint8_t eaddr[EADDR_SIZE]; /* PHY802154IOC_GET/SET_EADDR */
|
||||
bool promisc; /* PHY802154IOC_GET/SET_EADDR */
|
||||
uint8_t devmode; /* PHY802154IOC_GET/SET_DEVMODE */
|
||||
int32_t txpwr; /* PHY802154IOC_GET/SET_TXPWR */
|
||||
bool energy /* PHY802154IOC_ENERGYDETECT */
|
||||
struct ieee802154_cca_s cca; /* PHY802154IOC_GET/SET_CCA */
|
||||
};
|
||||
|
||||
#ifdef CONFIG_NET_6LOWPAN
|
||||
|
Loading…
x
Reference in New Issue
Block a user