⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cisaironethw.c

📁 vworks 下wlan的实现代码
💻 C
📖 第 1 页 / 共 5 页
字号:
    INT32         numBytes  /* Number of bytes */    )    {    /* enable Access to the Rid */    if ( cisAironetHwRidAccess (pWlanDev, rid, ANET_CMD_ACCESS)         == ERROR )        {        ANET_LOG(DEBUG_ERROR,                  ("bapWrite: error getting write access to RID\n",                  1,2,3,4,5,6));        return (ERROR);        }    /* Enable access to the desired BAP (BAP0 or BAP1) */    if ( cisAironetHwBapSetup (pWlanDev, rid, offset, bap)          == ERROR )        {        ANET_LOG(DEBUG_ERROR,                  ("bapWrite: error Accessing BAP\n",                  1,2,3,4,5,6));        return (ERROR);        }    /* Write to the Bap */    if (cisAironetHwBapWrite (pWlanDev, pSrc, numBytes, bap)          == ERROR )        {        ANET_LOG(DEBUG_ERROR,                  ("bapWrite: error writing data to RID\n",                  1,2,3,4,5,6));        return (ERROR);        }        /* Commit data */    return ( cisAironetHwRidAccess (pWlanDev, rid, ANET_WRITE_RID) );    }/**************************************************************************** bapRead - Reads data from a buffer access path.* * This routine performs all the required initialization so the the user can * tranparently access the desired BAP..* * RETURNS : OK or ERROR if a NULL pointer is passed in or if required BAP *           init fails.     ** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual*/LOCAL STATUS bapRead    (    CARD_CTRL_T * pWlanDev,  /* Driver control object */    UINT16        rid,      /* RID to access */    UINT32        offset,   /* The offset into RID */    UINT16        bap,      /* BAP to access (0 or 1) */    UINT16 *      pDst,     /* Destination buffer */     INT32         numBytes  /* Number of bytes */    )    {    /* enable Access to the Rid */    if ( cisAironetHwRidAccess (pWlanDev, rid, ANET_CMD_ACCESS)         == ERROR )        {        ANET_LOG(DEBUG_ERROR,                  ("bapRead: error getting read access to RID\n",                  1,2,3,4,5,6));        return (ERROR);        }        /* Enable access to the desired BAP (BAP0 or BAP1) */    if ( cisAironetHwBapSetup (pWlanDev, rid, offset, bap)          == ERROR )        {        ANET_LOG(DEBUG_ERROR,                  ("bapRead: error Accessing BAP\n",                  1,2,3,4,5,6));        return (ERROR);        }        /* Read the Bap */    if ( cisAironetHwBapRead (pWlanDev, pDst, numBytes, bap)          == ERROR )        {        ANET_LOG(DEBUG_ERROR,                  ("bapRead: error Reading BAP\n",                  1,2,3,4,5,6));        return (ERROR);        }        return (OK);    }/**************************************************************************** cisAironetHwRidAccess - Issues command to access a RID.* * This routine issues the aironet commmand to enable RID access. It also * checks the command response before returning the command status.* * RETURNS : OK or cmd status or ERROR if a NULL pointer is passed in or if *           required rid cannot be accessed.** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual*/LOCAL INT16 cisAironetHwRidAccess    (    CARD_CTRL_T * pWlanDev,  /* Pointer to device handle */    UINT16        rid,      /* Rid to access */    UINT16        cmd    )    {    CARD_RESP_T * pRespObj = NULL;    CARD_CMD_T *  pCmdObj  = NULL;    /* Sanity check */    if (pWlanDev == NULL)        {        ANET_LOG(DEBUG_ERROR,                  ("cisAironetHwRidAccess: Null pointer\n",                  1,2,3,4,5,6));        return (ERROR);        }    /* Access to card response regs */    pRespObj = (CARD_RESP_T *) &pWlanDev->macResp;    pCmdObj  = (CARD_CMD_T *) &pWlanDev->macCmd;    /* Issue the command */    pCmdObj->param0  = rid;    pCmdObj->param1  = 0;    pCmdObj->param2  = 0;      pCmdObj->command = cmd;    if (  (cisAironetHwCmdIssue (pWlanDev)   == ERROR) ||           (cisAironetHwErrorCheck (pWlanDev) != 0) )        {        ANET_LOG(DEBUG_ERROR,                  ("cisAironetHwRidAccess: error Accessing RID %s\n",                  (INT32) cisAironetHwErrorDesc (),2,3,4,5,6));        return (ERROR);        }    /* check the response register */	if ( (pRespObj->resp0 & ANET_STAT_CMD_RESULT)          != 0 )         {        ANET_LOG(DEBUG_ERROR,                  ("cisAironetHwRidAccess: we have a problem\n",                  1,2,3,4,5,6));		return ( (cmd << 8) + (pRespObj->resp0 & 0xFF) );        }    /* return OK */	return (OK);    }/**************************************************************************** cisAironetHwBapRead - Reads data from the choosen buffer access path.* * This routine copies data from the card via a buffer access path to the * buffer pointer that is passed in as a parameter. All accesses are 16 bits* wide from the card.** RETURNS : OK ** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual*/LOCAL INT16 cisAironetHwBapRead    (    CARD_CTRL_T * pWlanDev,    UINT16 *      pDst,     /* Destination buffer */     UINT32        numBytes, /* Number of bytes */    UINT32        bap       /* 0-BAP0 and 2-BAP1 */     )    {    /* round length up to a 16 bit aligned value */    numBytes = ROUND_UP(numBytes,2);    /* Pass the data from the Card into the buffer      * Note: each access to DATA0 or DATA1 will auto-increment     *       the buffer pointer.      */    while (numBytes > 0)         {        *pDst++  = WLAN_IN_16( ((UINT32) &pWlanDev->macReg->data0) + bap);         numBytes -= 2;        }    /* Status - OK */    return (OK);    }/**************************************************************************** cisAironetHwBapWrite - Writes data to the choosen buffer access path.* * This routine copies data from the buffer pointer that is passed in as * parameter to the card via a buffer access path. All accesses are 16 bits* wide from the card.** RETURNS : OK ** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual*/LOCAL INT16 cisAironetHwBapWrite    (    CARD_CTRL_T * pWlanDev,    UINT16 *      pSrc,      /* Source buffer */    UINT32        numBytes,  /* Number of bytes to read */    UINT32        bap        /* 0-BAP0 and 2-BAP1 */     )    {    /* round length up to a 16 bit aligned value */    numBytes = ROUND_UP(numBytes, 2);            /* Write data the buffer into the Card.      * Note: each access to DATA0 or DATA1 will auto-increment     *       the buffer pointer.      */    while (numBytes > 0)         {         WLAN_OUT_16( ((UINT32) &pWlanDev->macReg->data0) + bap, *pSrc++);        numBytes -= 2;        }    /* Status - OK */    return (OK);    }/*=========================================================================*//*                                                                         *//*                   CARD REGISTER ACCESS ROUTINES                         *//*                                                                         *//*=========================================================================*//**************************************************************************** cisAironetHwEventStatusGet - Returns the contents of the event status register.* * Returns the contents of the event status register.** RETURNS : register contents.** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/UINT16 cisAironetHwEventStatusGet    (    CARD_CTRL_T * pWlanDev  /* Driver control struct */    )    {    UINT16 linkstatus = WLAN_IN_16( (UINT32) &pWlanDev->macReg->evStat);    cisAironetHwEventLinkAck(pWlanDev);    return linkstatus;        }/**************************************************************************** cisAironetHwLinkStatusGet - Returns the contents of the link status register.* * Returns the contents of the link status register.** RETURNS : register contents.** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/UINT16 cisAironetHwLinkStatusGet    (    CARD_CTRL_T * pWlanDev  /* Driver control struct */    )    {    UINT16 lnkstatus;    lnkstatus = WLAN_IN_16( (UINT32) &pWlanDev->macReg->linkStatus);    cisAironetHwEventLinkAck(pWlanDev);    return lnkstatus;    }/**************************************************************************** cisAironetHwRxFidGet - Returns the contents of the receive FID register.* * Returns the contents of the receive FID register.** RETURNS : register contents.** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/UINT16 cisAironetHwRxFidGet    (    CARD_CTRL_T * pWlanDev  /* Driver control struct */    )    {    /* Return rx FID */    return (WLAN_IN_16( (UINT32) &pWlanDev->macReg->rxFID ));    }/**************************************************************************** cisAironetHwTxComplFidGet - Returns the contents of the tranmit complete*                             FID register.* * Returns the contents of the transmit complete FID register.** RETURNS : register contents.** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/UINT16 cisAironetHwTxComplFidGet    (    CARD_CTRL_T * pWlanDev  /* Driver control struct */    )    {    /* Return rx FID */    return ( WLAN_IN_16( (UINT32) &pWlanDev->macReg->txCompFID) );    }/**************************************************************************** cisAironetHwEventRxAck - Clears the receive event bit in the event ack*                          register.* * Clears the receive event bit in the event ack register.** RETURNS : N/A** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/void cisAironetHwEventRxAck    (    CARD_CTRL_T * pWlanDev  /* Driver control struct */    )    {    WLAN_OUT_16( (UINT32) &pWlanDev->macReg->evAck, ANET_EVENT_RX);    }/**************************************************************************** cisAironetHwEventAwakenAck - Clears the awaken event bit in the event * ack register.* * Clears the awaken event bit in the event ack register.** RETURNS : N/A** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/void cisAironetHwEventAwakenAck    (    CARD_CTRL_T * pWlanDev  /* Driver control struct */    )    {    WLAN_OUT_16( (UINT32) &pWlanDev->macReg->evAck, ANET_EVENT_AWAKE);    }/**************************************************************************** cisAironetHwEventTxAck - Clears the transmit event bit in the event * ack register.* * Clears the transmit event bit in the event ack register.** RETURNS : N/A** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/void cisAironetHwEventTxAck    (    CARD_CTRL_T * pWlanDev  /* Driver control struct */    )    {    WLAN_OUT_16( (UINT32) &pWlanDev->macReg->evAck,                  ANET_EVENT_TX | ANET_EVENT_TX_EXC);    }/**************************************************************************** cisAironetHwEventTxAck - Clears the link event bit in the event ack * register.* * Clears the link event bit in the event ack register.** RETURNS : N/A** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual* * NOMANUAL*/void cisAironetHwEventLinkAck    (    CARD_CTRL_T * pWlanDev  /* Driver control struct */    )    {    WLAN_OUT_16( (UINT32) &pWlanDev->macReg->evAck, ANET_EVENT_LINK);    }/**************************************************************************** cisAironetHwEventTxAck - Clears the unknown event bit in the event ack * register.* * Clears the unknown event bit in the event ack register.** RETURNS : N/A** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -