wireless/ieee802154: Simplifies MAC callback interface. Adds missing data type definitions

This commit is contained in:
Anthony Merlino 2017-04-19 11:30:39 -04:00
parent 35756d6295
commit de4e2d84c4
4 changed files with 963 additions and 437 deletions

File diff suppressed because it is too large Load Diff

View File

@ -96,10 +96,19 @@ struct mac802154dev_dwait_s
FAR struct mac802154dev_dwait_s *mw_flink; FAR struct mac802154dev_dwait_s *mw_flink;
}; };
struct mac802154dev_callback_s
{
/* This holds the information visible to the MAC layer */
struct ieee802154_maccb_s mc_cb; /* Interface understood by the MAC layer */
FAR struct mac802154_devwrapper_s *mc_priv; /* Our priv data */
};
struct mac802154_devwrapper_s struct mac802154_devwrapper_s
{ {
MACHANDLE md_mac; /* Saved binding to the mac layer */ MACHANDLE md_mac; /* Saved binding to the mac layer */
sem_t md_exclsem; /* Exclusive device access */ struct mac802154dev_callback_s md_cb; /* Callback information */
sem_t md_exclsem; /* Exclusive device access */
/* The following is a singly linked list of open references to the /* The following is a singly linked list of open references to the
* MAC device. * MAC device.
@ -139,6 +148,11 @@ static ssize_t mac802154dev_write(FAR struct file *filep,
static int mac802154dev_ioctl(FAR struct file *filep, int cmd, static int mac802154dev_ioctl(FAR struct file *filep, int cmd,
unsigned long arg); unsigned long arg);
/* MAC callback helpers */
static void mac802154dev_conf_data(FAR struct mac802154_devwrapper_s *dev,
FAR struct ieee802154_data_conf_s *conf);
/**************************************************************************** /****************************************************************************
* Private Data * Private Data
****************************************************************************/ ****************************************************************************/
@ -579,21 +593,54 @@ static int mac802154dev_ioctl(FAR struct file *filep, int cmd,
return ret; return ret;
} }
void mac802154dev_conf_data(MACHANDLE mac, static void mac802154dev_mlme_notify(FAR struct ieee802154_maccb_s *maccb,
FAR struct ieee802154_data_conf_s *conf) enum ieee802154_macnotify_e notif,
FAR union ieee802154_mlme_notify_u *arg)
{
FAR struct mac802154dev_callback_s *cb =
(FAR struct mac802154dev_callback_s *)maccb;
FAR struct mac802154_devwrapper_s *dev;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
dev = cb->mc_priv;
switch (notif)
{
#warning Handle MLME notifications
default:
break;
}
}
static void mac802154dev_mcps_notify(FAR struct ieee802154_maccb_s *maccb,
enum ieee802154_macnotify_e notif,
FAR union ieee802154_mcps_notify_u *arg)
{
FAR struct mac802154dev_callback_s *cb =
(FAR struct mac802154dev_callback_s *)maccb;
FAR struct mac802154_devwrapper_s *dev;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
dev = cb->mc_priv;
switch (notif)
{
case IEEE802154_NOTIFY_CONF_DATA:
{
mac802154dev_conf_data(dev, &arg->dataconf);
}
break;
default:
break;
}
}
static void mac802154dev_conf_data(FAR struct mac802154_devwrapper_s *dev,
FAR struct ieee802154_data_conf_s *conf)
{ {
FAR struct mac802154_devwrapper_s *dev =
(FAR struct mac802154_devwrapper_s *)mac;
FAR struct mac802154dev_dwait_s *curr; FAR struct mac802154dev_dwait_s *curr;
FAR struct mac802154dev_dwait_s *prev; FAR struct mac802154dev_dwait_s *prev;
/* Get the dev from the callback context. This should have been set when
* the char driver was registered.
*
* REVISIT: See mac802154_netdev.c
*/
#warning Missing logic
/* Get exclusive access to the driver structure. We don't care about any /* Get exclusive access to the driver structure. We don't care about any
* signals so if we see one, just go back to trying to get access again */ * signals so if we see one, just go back to trying to get access again */
@ -676,6 +723,7 @@ void mac802154dev_conf_data(MACHANDLE mac,
int mac802154dev_register(MACHANDLE mac, int minor) int mac802154dev_register(MACHANDLE mac, int minor)
{ {
FAR struct mac802154_devwrapper_s *dev; FAR struct mac802154_devwrapper_s *dev;
FAR struct ieee802154_maccb_s *maccb;
char devname[DEVNAME_FMTLEN]; char devname[DEVNAME_FMTLEN];
int ret; int ret;
@ -692,11 +740,25 @@ int mac802154dev_register(MACHANDLE mac, int minor)
sem_init(&dev->md_exclsem, 0, 1); /* Allow the device to be opened once sem_init(&dev->md_exclsem, 0, 1); /* Allow the device to be opened once
* before blocking */ * before blocking */
/* Initialize the callbacks and bind them to the radio /* Initialize the MAC callbacks */
*
* REVISIT: See mac802154_netdev.c dev->md_cb.mc_priv = dev;
*/
#warning Missing logic maccb = &dev->md_cb.mc_cb;
maccb->mlme_notify = mac802154dev_mlme_notify;
maccb->mcps_notify = mac802154dev_mcps_notify;
/* Bind the callback structure */
ret = mac802154_bind(mac, maccb);
if (ret < 0)
{
nerr("ERROR: Failed to bind the MAC callbacks: %d\n", ret);
/* Free memory and return the error */
kmm_free(dev);
return ret;
}
/* Create the character device name */ /* Create the character device name */

View File

@ -157,42 +157,60 @@ struct macnet_driver_s
****************************************************************************/ ****************************************************************************/
/* IEE802.15.4 MAC callback functions ***************************************/ /* IEE802.15.4 MAC callback functions ***************************************/
static void macnet_mlme_notify(FAR struct ieee802154_maccb_s *maccb,
enum ieee802154_macnotify_e notif,
FAR union ieee802154_mlme_notify_u *arg);
static void macnet_mcps_notify(FAR struct ieee802154_maccb_s *maccb,
enum ieee802154_macnotify_e notif,
FAR union ieee802154_mcps_notify_u *arg);
/* Asynchronous confirmations to requests */ /* Asynchronous confirmations to requests */
static void macnet_conf_data(MACHANDLE mac, static void macnet_conf_data(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_data_conf_s *conf); FAR struct ieee802154_data_conf_s *conf);
static void macnet_conf_purge(MACHANDLE mac, uint8_t handle, int status); static void macnet_conf_purge(FAR struct macnet_driver_s *priv,
static void macnet_conf_associate(MACHANDLE mac, uint16_t saddr, int status); FAR struct ieee802154_purge_conf_s *conf);
static void macnet_conf_disassociate(MACHANDLE mac, int status); static void macnet_conf_associate(FAR struct macnet_driver_s *priv,
static void macnet_conf_get(MACHANDLE mac, int status, int attribute, FAR struct ieee802154_assoc_conf_s *conf);
FAR uint8_t *value, int valuelen); static void macnet_conf_disassociate(FAR struct macnet_driver_s *priv,
static void macnet_conf_gts(MACHANDLE mac, FAR uint8_t *characteristics, FAR struct ieee802154_disassoc_conf_s *conf);
int status); static void macnet_conf_get(FAR struct macnet_driver_s *priv,
static void macnet_conf_reset(MACHANDLE mac, int status); FAR struct ieee802154_get_conf_s *conf);
static void macnet_conf_rxenable(MACHANDLE mac, int status); static void macnet_conf_gts(FAR struct macnet_driver_s *priv,
static void macnet_conf_scan(MACHANDLE mac, int status, uint8_t type, FAR struct ieee802154_gts_conf_s *conf);
uint32_t unscanned, int rsltsize, FAR uint8_t *edlist, static void macnet_conf_reset(FAR struct macnet_driver_s *priv,
FAR uint8_t *pandescs); FAR struct ieee802154_reset_conf_s *conf);
static void macnet_conf_set(MACHANDLE mac, int status, int attribute); static void macnet_conf_rxenable(FAR struct macnet_driver_s *priv,
static void macnet_conf_start(MACHANDLE mac, int status); FAR struct ieee802154_rxenable_conf_s *conf);
static void macnet_conf_poll(MACHANDLE mac, int status); static void macnet_conf_scan(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_scan_conf_s *conf);
static void macnet_conf_set(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_set_conf_s *conf);
static void macnet_conf_start(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_start_conf_s *conf);
static void macnet_conf_poll(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_poll_conf_s *conf);
/* Asynchronous event indications, replied to synchronously with responses */ /* Asynchronous event indications, replied to synchronously with responses */
static void macnet_ind_data(MACHANDLE mac, FAR uint8_t *buf, int len); static void macnet_ind_data(FAR struct macnet_driver_s *priv,
static void macnet_ind_associate(MACHANDLE mac, uint16_t clipanid, FAR struct ieee802154_data_ind_s *conf);
FAR uint8_t *clieaddr); static void macnet_ind_associate(FAR struct macnet_driver_s *priv,
static void macnet_ind_disassociate(MACHANDLE mac, FAR uint8_t *eadr, FAR struct ieee802154_assoc_ind_s *conf);
uint8_t reason); static void macnet_ind_disassociate(FAR struct macnet_driver_s *priv,
static void macnet_ind_beaconnotify(MACHANDLE mac, FAR uint8_t *bsn, FAR struct ieee802154_disassoc_ind_s *conf);
FAR struct ieee802154_pan_desc_s *pandesc, FAR uint8_t *sdu, static void macnet_ind_beaconnotify(FAR struct macnet_driver_s *priv,
int sdulen); FAR struct ieee802154_beaconnotify_ind_s *conf);
static void macnet_ind_gts(MACHANDLE mac, FAR uint8_t *devaddr, static void macnet_ind_gts(FAR struct macnet_driver_s *priv,
FAR uint8_t *characteristics); FAR struct ieee802154_gts_ind_s *conf);
static void macnet_ind_orphan(MACHANDLE mac, FAR uint8_t *orphanaddr); static void macnet_ind_orphan(FAR struct macnet_driver_s *priv,
static void macnet_ind_commstatus(MACHANDLE mac, uint16_t panid, FAR struct ieee802154_orphan_ind_s *conf);
FAR uint8_t *src, FAR uint8_t *dst, int status); static void macnet_ind_commstatus(FAR struct macnet_driver_s *priv,
static void macnet_ind_syncloss(MACHANDLE mac, int reason); FAR struct ieee802154_commstatus_ind_s *conf);
static void macnet_ind_syncloss(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_syncloss_ind_s *conf);
/* Network interface support ************************************************/ /* Network interface support ************************************************/
/* Common TX logic */ /* Common TX logic */
@ -244,6 +262,58 @@ static int macnet_ioctl(FAR struct net_driver_s *dev, int cmd,
* Private Functions * Private Functions
****************************************************************************/ ****************************************************************************/
static void macnet_mlme_notify(FAR struct ieee802154_maccb_s *maccb,
enum ieee802154_macnotify_e notif,
FAR union ieee802154_mlme_notify_u *arg)
{
FAR struct macdev_callback_s *cb =
(FAR struct macdev_callback_s *)maccb;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
switch (notif)
{
default:
break;
}
}
static void macnet_mcps_notify(FAR struct ieee802154_maccb_s *maccb,
enum ieee802154_macnotify_e notif,
FAR union ieee802154_mcps_notify_u *arg)
{
FAR struct macdev_callback_s *cb =
(FAR struct macdev_callback_s *)maccb;
FAR struct macdev_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
switch (notif)
{
case IEEE802154_NOTIFY_CONF_DATA:
{
macnet_conf_data(priv, &arg->dataconf);
}
break;
case IEEE802154_NOTIFY_CONF_PURGE:
{
macnet_conf_purge(priv, &arg->purgeconf);
}
break;
case IEEE802154_NOTIFY_IND_DATA:
{
macnet_ind_data(priv, &arg->dataind);
}
break;
default:
break;
}
}
/**************************************************************************** /****************************************************************************
* Name: macnet_conf_data * Name: macnet_conf_data
* *
@ -252,14 +322,10 @@ static int macnet_ioctl(FAR struct net_driver_s *dev, int cmd,
* *
****************************************************************************/ ****************************************************************************/
static void macnet_conf_data(MACHANDLE mac, static void macnet_conf_data(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_data_conf_s *conf) FAR struct ieee802154_data_conf_s *conf)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
@ -270,13 +336,10 @@ static void macnet_conf_data(MACHANDLE mac,
* *
****************************************************************************/ ****************************************************************************/
static void macnet_conf_purge(MACHANDLE mac, uint8_t handle, int status) static void macnet_conf_purge(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_purge_conf_s *conf)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
@ -287,13 +350,10 @@ static void macnet_conf_purge(MACHANDLE mac, uint8_t handle, int status)
* *
****************************************************************************/ ****************************************************************************/
static void macnet_conf_associate(MACHANDLE mac, uint16_t saddr, int status) static void macnet_conf_associate(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_assoc_conf_s *conf)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
@ -304,66 +364,52 @@ static void macnet_conf_associate(MACHANDLE mac, uint16_t saddr, int status)
* *
****************************************************************************/ ****************************************************************************/
static void macnet_conf_disassociate(MACHANDLE mac, int status) static void macnet_conf_disassociate(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_disassoc_conf_s *conf)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
* Name: macnet_conf_get * Name: macnet_conf_get
* *
* Description: * Description:
* PIvoata returned * PIB data returned
* *
****************************************************************************/ ****************************************************************************/
static void macnet_conf_get(MACHANDLE mac, int status, int attribute, static void macnet_conf_get(FAR struct macnet_driver_s *priv,
FAR uint8_t *value, int valuelen) FAR struct ieee802154_get_conf_s *conf)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
* Name: macnet_conf_gts * Name: macnet_conf_gts
* *
* Description: * Description:
* GTvoanagement completed * GTS management completed
* *
****************************************************************************/ ****************************************************************************/
static void macnet_conf_gts(MACHANDLE mac, FAR uint8_t *characteristics, static void macnet_conf_gts(FAR struct macnet_driver_s *priv,
int status) FAR struct ieee802154_gts_conf_s *conf)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
* Name: macnet_conf_reset * Name: macnet_conf_reset
* *
* Description: * Description:
* MAveset completed * MAC reset completed
* *
****************************************************************************/ ****************************************************************************/
static void macnet_conf_reset(MACHANDLE mac, int status) static void macnet_conf_reset(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_reset_conf_s *conf)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
@ -373,13 +419,10 @@ static void macnet_conf_reset(MACHANDLE mac, int status)
* *
****************************************************************************/ ****************************************************************************/
static void macnet_conf_rxenable(MACHANDLE mac, int status) static void macnet_conf_rxenable(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_rxenable_conf_s *conf)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
@ -389,15 +432,10 @@ static void macnet_conf_rxenable(MACHANDLE mac, int status)
* *
****************************************************************************/ ****************************************************************************/
static void macnet_conf_scan(MACHANDLE mac, int status, uint8_t type, static void macnet_conf_scan(FAR struct macnet_driver_s *priv,
uint32_t unscanned, int rsltsize, FAR struct ieee802154_scan_conf_s *conf)
FAR uint8_t *edlist, FAR uint8_t *pandescs)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
@ -407,13 +445,10 @@ static void macnet_conf_scan(MACHANDLE mac, int status, uint8_t type,
* *
****************************************************************************/ ****************************************************************************/
static void macnet_conf_set(MACHANDLE mac, int status, int attribute) static void macnet_conf_set(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_set_conf_s *conf)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
@ -423,13 +458,10 @@ static void macnet_conf_set(MACHANDLE mac, int status, int attribute)
* *
****************************************************************************/ ****************************************************************************/
static void macnet_conf_start(MACHANDLE mac, int status) static void macnet_conf_start(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_start_conf_s *conf)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
@ -439,13 +471,10 @@ static void macnet_conf_start(MACHANDLE mac, int status)
* *
****************************************************************************/ ****************************************************************************/
static void macnet_conf_poll(MACHANDLE mac, int status) static void macnet_conf_poll(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_poll_conf_s *conf)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
@ -456,13 +485,10 @@ static void macnet_conf_poll(MACHANDLE mac, int status)
* *
****************************************************************************/ ****************************************************************************/
static void macnet_ind_data(MACHANDLE mac, FAR uint8_t *buf, int len) static void macnet_ind_data(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_data_ind_s *ind)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
@ -473,14 +499,10 @@ static void macnet_ind_data(MACHANDLE mac, FAR uint8_t *buf, int len)
* *
****************************************************************************/ ****************************************************************************/
static void macnet_ind_associate(MACHANDLE mac, uint16_t clipanid, static void macnet_ind_associate(FAR struct macnet_driver_s *priv,
FAR uint8_t *clieaddr) FAR struct ieee802154_assoc_ind_s *ind)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
@ -491,14 +513,10 @@ static void macnet_ind_associate(MACHANDLE mac, uint16_t clipanid,
* *
****************************************************************************/ ****************************************************************************/
static void macnet_ind_disassociate(MACHANDLE mac, FAR uint8_t *eadr, static void macnet_ind_disassociate(FAR struct macnet_driver_s *priv,
uint8_t reason) FAR struct ieee802154_disassoc_ind_s *ind)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
@ -509,15 +527,10 @@ static void macnet_ind_disassociate(MACHANDLE mac, FAR uint8_t *eadr,
* *
****************************************************************************/ ****************************************************************************/
static void macnet_ind_beaconnotify(MACHANDLE mac, FAR uint8_t *bsn, static void macnet_ind_beaconnotify(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_pan_desc_s *pandesc, FAR struct ieee802154_beaconnotify_ind_s *ind)
FAR uint8_t *sdu, int sdulen)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
@ -528,14 +541,10 @@ static void macnet_ind_beaconnotify(MACHANDLE mac, FAR uint8_t *bsn,
* *
****************************************************************************/ ****************************************************************************/
static void macnet_ind_gts(MACHANDLE mac, FAR uint8_t *devaddr, static void macnet_ind_gts(FAR struct macnet_driver_s *priv,
FAR uint8_t *characteristics) FAR struct ieee802154_gts_ind_s *ind)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
@ -546,13 +555,10 @@ static void macnet_ind_gts(MACHANDLE mac, FAR uint8_t *devaddr,
* *
****************************************************************************/ ****************************************************************************/
static void macnet_ind_orphan(MACHANDLE mac, FAR uint8_t *orphanaddr) static void macnet_ind_orphan(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_orphan_ind_s *ind)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
@ -562,15 +568,10 @@ static void macnet_ind_orphan(MACHANDLE mac, FAR uint8_t *orphanaddr)
* *
****************************************************************************/ ****************************************************************************/
static void macnet_ind_commstatus(MACHANDLE mac, uint16_t panid, static void macnet_ind_commstatus(FAR struct macnet_driver_s *priv,
FAR uint8_t *src, FAR uint8_t *dst, FAR struct ieee802154_commstatus_ind_s *ind)
int status)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
@ -580,13 +581,10 @@ static void macnet_ind_commstatus(MACHANDLE mac, uint16_t panid,
* *
****************************************************************************/ ****************************************************************************/
static void macnet_ind_syncloss(MACHANDLE mac, int reason) static void macnet_ind_syncloss(FAR struct macnet_driver_s *priv,
FAR struct ieee802154_syncloss_ind_s *ind)
{ {
FAR struct macnet_callback_s *cb = (FAR struct macnet_callback_s *)mac;
FAR struct macnet_driver_s *priv;
DEBUGASSERT(cb != NULL && cb->mc_priv != NULL);
priv = cb->mc_priv;
} }
/**************************************************************************** /****************************************************************************
@ -1503,10 +1501,11 @@ int mac802154netdev_register(MACHANDLE mac)
{ {
FAR struct macnet_driver_s *priv; FAR struct macnet_driver_s *priv;
FAR struct net_driver_s *dev; FAR struct net_driver_s *dev;
FAR struct ieee802154_maccb_s *maccb;
FAR uint8_t *pktbuf; FAR uint8_t *pktbuf;
int ret; int ret;
DEBUGASSERT(radio != NULL); DEBUGASSERT(mac != NULL);
/* Get the interface structure associated with this interface number. */ /* Get the interface structure associated with this interface number. */
@ -1533,7 +1532,7 @@ int mac802154netdev_register(MACHANDLE mac)
/* Initialize the driver structure */ /* Initialize the driver structure */
dev = &ieee->md_dev.i_dev; dev = &priv->md_dev.i_dev;
dev->d_buf = pktbuf; /* Single packet buffer */ dev->d_buf = pktbuf; /* Single packet buffer */
dev->d_ifup = macnet_ifup; /* I/F up (new IP address) callback */ dev->d_ifup = macnet_ifup; /* I/F up (new IP address) callback */
dev->d_ifdown = macnet_ifdown; /* I/F down callback */ dev->d_ifdown = macnet_ifdown; /* I/F down callback */
@ -1557,34 +1556,16 @@ int mac802154netdev_register(MACHANDLE mac)
/* Initialize the MAC callbacks */ /* Initialize the MAC callbacks */
priv->md_cb.mc_priv = priv; priv->md_cb.mc_priv = priv;
maccb = &priv->md_cb.mc_cb; maccb = &priv->md_cb.mc_cb;
maccb->conf_data = macnet_conf_data; maccb->mlme_notify = macdev_mlme_notify;
maccb->conf_purge = macnet_conf_purge; maccb->mcps_notify = macdev_mcps_notify;
maccb->conf_associate = macnet_conf_associate;
maccb->conf_disassociate = macnet_conf_disassociate;
maccb->conf_get = macnet_conf_get;
maccb->conf_gts = macnet_conf_gts;
maccb->conf_reset = macnet_conf_reset;
maccb->conf_rxenable = macnet_conf_rxenable;
maccb->conf_scan = macnet_conf_scan;
maccb->conf_set = macnet_conf_set;
maccb->conf_start = macnet_conf_start;
maccb->conf_poll = macnet_conf_poll;
maccb->ind_data = macnet_ind_data;
maccb->ind_associate = macnet_ind_associate;
maccb->ind_disassociate = macnet_ind_disassociate;
maccb->ind_beaconnotify = macnet_ind_beaconnotify;
maccb->ind_gts = macnet_ind_gts;
maccb->ind_orphan = macnet_ind_orphan;
maccb->ind_commstatus = macnet_ind_commstatus;
maccb->ind_syncloss = macnet_ind_syncloss;
/* Bind the callback structure */ /* Bind the callback structure */
ret = mac->ops->bind(mac, *priv->md_cb.mc_cb); ret = mac802154_bind(mac, maccb);
if (ret < 0) if (ret < 0
{ {
nerr("ERROR: Failed to bind the MAC callbacks: %d\n", ret); nerr("ERROR: Failed to bind the MAC callbacks: %d\n", ret);
@ -1596,7 +1577,7 @@ int mac802154netdev_register(MACHANDLE mac)
/* Free memory and return the error */ /* Free memory and return the error */
kmm_free(pktbuf); kmm_free(pktbuf);
kmm_free(priv); kmm_free(priv);
return ret return ret;
} }
/* Put the interface in the down state. */ /* Put the interface in the down state. */

View File

@ -346,6 +346,8 @@ static ssize_t radio802154dev_write(FAR struct file *filep,
* Beacons and GTS transmission will be handled via IOCTLs * Beacons and GTS transmission will be handled via IOCTLs
*/ */
#warning Fix this when transmit interface is complete
/*
ret = dev->child->ops->transmit(dev->child, packet); ret = dev->child->ops->transmit(dev->child, packet);
if (ret != packet->len) if (ret != packet->len)
{ {
@ -357,6 +359,7 @@ static ssize_t radio802154dev_write(FAR struct file *filep,
{ {
wlerr("Radio Device timedout on Tx\n"); wlerr("Radio Device timedout on Tx\n");
} }
*/
done: done: