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

📄 card.c

📁 VIA VT6656 USB linux source code.
💻 C
📖 第 1 页 / 共 3 页
字号:
    pbyData[6] = (BYTE)(dwTSFOffset2>>16);    pbyData[7] = (BYTE)(dwTSFOffset2>>24);    CONTROLnsRequestOut(pDevice,                        MESSAGE_TYPE_SET_TSFTBTT,                        MESSAGE_REQUEST_TSF,                        0,                        8,                        pbyData                        );                      }/* * Description: Read NIC TSF counter *              Get local TSF counter * * Parameters: *  In: *      pDevice         - The adapter to be read *  Out: *      qwCurrTSF       - Current TSF counter * * Return Value: TRUE if success; otherwise FALSE * */BOOL CARDbGetCurrentTSF (PVOID pDeviceHandler, PQWORD pqwCurrTSF){    PSDevice    pDevice = (PSDevice) pDeviceHandler;        LODWORD(*pqwCurrTSF) = LODWORD(pDevice->qwCurrTSF);    HIDWORD(*pqwCurrTSF) = HIDWORD(pDevice->qwCurrTSF);    return(TRUE);}/* * Description: Clear NIC TSF counter *              Clear local TSF counter * * Parameters: *  In: *      pDevice         - The adapter to be read * * Return Value: TRUE if success; otherwise FALSE * */BOOL CARDbClearCurrentTSF(PVOID pDeviceHandler){    PSDevice    pDevice = (PSDevice) pDeviceHandler;            MACvRegBitsOn(pDevice,MAC_REG_TFTCTL,TFTCTL_TSFCNTRST);        LODWORD(pDevice->qwCurrTSF) = 0;    HIDWORD(pDevice->qwCurrTSF) = 0;        return(TRUE);}/* * Description: Read NIC TSF counter *              Get NEXTTBTT from adjusted TSF and Beacon Interval * * Parameters: *  In: *      qwTSF           - Current TSF counter *      wbeaconInterval - Beacon Interval *  Out: *      qwCurrTSF       - Current TSF counter * * Return Value: TSF value of next Beacon * */QWORD CARDqGetNextTBTT (QWORD qwTSF, WORD wBeaconInterval){    UINT    uLowNextTBTT;    UINT    uHighRemain, uLowRemain;    UINT    uBeaconInterval;    uBeaconInterval = wBeaconInterval * 1024;    // Next TBTT = ((local_current_TSF / beacon_interval) + 1 ) * beacon_interval    uLowNextTBTT = (LODWORD(qwTSF) >> 10) << 10;    uLowRemain = (uLowNextTBTT) % uBeaconInterval;    uHighRemain = ((0x80000000 % uBeaconInterval)* 2 * HIDWORD(qwTSF))                  % uBeaconInterval;    uLowRemain = (uHighRemain + uLowRemain) % uBeaconInterval;    uLowRemain = uBeaconInterval - uLowRemain;    // check if carry when add one beacon interval    if ((~uLowNextTBTT) < uLowRemain)        HIDWORD(qwTSF) ++ ;    LODWORD(qwTSF) = uLowNextTBTT + uLowRemain;    return (qwTSF);}/* * Description: Set NIC TSF counter for first Beacon time *              Get NEXTTBTT from adjusted TSF and Beacon Interval * * Parameters: *  In: *      dwIoBase        - IO Base *      wBeaconInterval - Beacon Interval *  Out: *      none * * Return Value: none * */void CARDvSetFirstNextTBTT (PVOID pDeviceHandler, WORD wBeaconInterval){    PSDevice        pDevice = (PSDevice) pDeviceHandler;    QWORD           qwNextTBTT;    DWORD           dwLoTBTT,dwHiTBTT;    BYTE            pbyData[8];    HIDWORD(qwNextTBTT) = 0;    LODWORD(qwNextTBTT) = 0;    CARDbClearCurrentTSF(pDevice);    //CARDbGetCurrentTSF(pDevice, &qwNextTBTT); //Get Local TSF counter    qwNextTBTT = CARDqGetNextTBTT(qwNextTBTT, wBeaconInterval);    // Set NextTBTT        dwLoTBTT = LODWORD(qwNextTBTT);    dwHiTBTT = HIDWORD(qwNextTBTT);    pbyData[0] = (BYTE)dwLoTBTT;    pbyData[1] = (BYTE)(dwLoTBTT>>8);    pbyData[2] = (BYTE)(dwLoTBTT>>16);    pbyData[3] = (BYTE)(dwLoTBTT>>24);    pbyData[4] = (BYTE)dwHiTBTT;    pbyData[5] = (BYTE)(dwHiTBTT>>8);    pbyData[6] = (BYTE)(dwHiTBTT>>16);    pbyData[7] = (BYTE)(dwHiTBTT>>24);    CONTROLnsRequestOut(pDevice,                        MESSAGE_TYPE_SET_TSFTBTT,                        MESSAGE_REQUEST_TBTT,                        0,                        8,                        pbyData                        );                            return;}/* * Description: Sync NIC TSF counter for Beacon time *              Get NEXTTBTT and write to HW * * Parameters: *  In: *      pDevice         - The adapter to be set *      qwTSF           - Current TSF counter *      wBeaconInterval - Beacon Interval *  Out: *      none * * Return Value: none * */void CARDvUpdateNextTBTT (PVOID pDeviceHandler, QWORD qwTSF, WORD wBeaconInterval){    PSDevice        pDevice = (PSDevice) pDeviceHandler;        DWORD           dwLoTBTT,dwHiTBTT;    BYTE            pbyData[8];    qwTSF = CARDqGetNextTBTT(qwTSF, wBeaconInterval);        // Set NextTBTT    dwLoTBTT = LODWORD(qwTSF);    dwHiTBTT = HIDWORD(qwTSF);    pbyData[0] = (BYTE)dwLoTBTT;    pbyData[1] = (BYTE)(dwLoTBTT>>8);    pbyData[2] = (BYTE)(dwLoTBTT>>16);    pbyData[3] = (BYTE)(dwLoTBTT>>24);    pbyData[4] = (BYTE)dwHiTBTT;    pbyData[5] = (BYTE)(dwHiTBTT>>8);    pbyData[6] = (BYTE)(dwHiTBTT>>16);    pbyData[7] = (BYTE)(dwHiTBTT>>24);    CONTROLnsRequestOut(pDevice,                        MESSAGE_TYPE_SET_TSFTBTT,                        MESSAGE_REQUEST_TBTT,                        0,                        8,                        pbyData                        );                            DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Card:Update Next TBTT[%8xh:%8xh] \n",(int)HIDWORD(qwTSF), (int)LODWORD(qwTSF));    return;}/* * Description: Turn off Radio power * * Parameters: *  In: *      pDevice         - The adapter to be turned off *  Out: *      none * * Return Value: TRUE if success; otherwise FALSE * */BOOL CARDbRadioPowerOff (PVOID pDeviceHandler){PSDevice    pDevice = (PSDevice) pDeviceHandler;    BOOL bResult = TRUE;    //if (pDevice->bRadioOff == TRUE)    //    return TRUE;    pDevice->bRadioOff = TRUE;        switch (pDevice->byRFType) {        case RF_AL2230:        case RF_AL2230S:                case RF_AIROHA7230:        case RF_VT3226:     //RobertYu:20051111        case RF_VT3226D0:        case RF_VT3342A0:   //RobertYu:20060609                            MACvRegBitsOff(pDevice, MAC_REG_SOFTPWRCTL, (SOFTPWRCTL_SWPE2 | SOFTPWRCTL_SWPE3));            break;    }    MACvRegBitsOff(pDevice, MAC_REG_HOSTCR, HOSTCR_RXON);    BBvSetDeepSleep(pDevice);    return bResult;}/* * Description: Turn on Radio power * * Parameters: *  In: *      pDevice         - The adapter to be turned on *  Out: *      none * * Return Value: TRUE if success; otherwise FALSE * */BOOL CARDbRadioPowerOn (PVOID pDeviceHandler){PSDevice    pDevice = (PSDevice) pDeviceHandler;    BOOL bResult = TRUE;    if ((pDevice->bHWRadioOff == TRUE) || (pDevice->bRadioControlOff == TRUE)) {        return FALSE;    }            //if (pDevice->bRadioOff == FALSE)    //    return TRUE;    pDevice->bRadioOff = FALSE;        BBvExitDeepSleep(pDevice);    MACvRegBitsOn(pDevice, MAC_REG_HOSTCR, HOSTCR_RXON);    switch (pDevice->byRFType) {        case RF_AL2230:        case RF_AL2230S:                case RF_AIROHA7230:        case RF_VT3226:     //RobertYu:20051111        case RF_VT3226D0:        case RF_VT3342A0:   //RobertYu:20060609                    MACvRegBitsOn(pDevice, MAC_REG_SOFTPWRCTL, (SOFTPWRCTL_SWPE2 | SOFTPWRCTL_SWPE3));            break;    }    return bResult;}void CARDvSetBSSMode (PVOID pDeviceHandler){    PSDevice    pDevice = (PSDevice) pDeviceHandler;    // Set BB and packet type at the same time.//{{RobertYu:20050222, AL7230 have two TX PA output, only connet to b/g now    // so in 11a mode need to set the MAC Reg0x4C to 11b/g mode to turn on PA    if( (pDevice->byRFType == RF_AIROHA7230 ) && (pDevice->byBBType == BB_TYPE_11A) )    {        MACvSetBBType(pDevice, BB_TYPE_11G);    }    else    {        MACvSetBBType(pDevice, pDevice->byBBType);    }    pDevice->byPacketType = CARDbyGetPktType(pDevice);    if (pDevice->byBBType == BB_TYPE_11A) {        ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x88, 0x03);    } else if (pDevice->byBBType == BB_TYPE_11B) {        ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x88, 0x02);    } else if (pDevice->byBBType == BB_TYPE_11G) {        ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x88, 0x08);    }    vUpdateIFS(pDevice);    CARDvSetRSPINF(pDevice, (BYTE)pDevice->byBBType);        if ( pDevice->byBBType == BB_TYPE_11A ) {        //request by Jack 2005-04-26        if (pDevice->byRFType == RF_AIROHA7230) {            pDevice->abyBBVGA[0] = 0x20;            ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xE7, pDevice->abyBBVGA[0]);        }        pDevice->abyBBVGA[2] = 0x10;        pDevice->abyBBVGA[3] = 0x10;    } else {        //request by Jack 2005-04-26        if (pDevice->byRFType == RF_AIROHA7230) {            pDevice->abyBBVGA[0] = 0x1C;            ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xE7, pDevice->abyBBVGA[0]);        }        pDevice->abyBBVGA[2] = 0x0;        pDevice->abyBBVGA[3] = 0x0;    }}/* * * Description: *    Do Channel Switch defined in 802.11h * * Parameters: *  In: *      hDeviceContext - device structure point *  Out: *      none * * Return Value: none. *-*/BOOLCARDbChannelSwitch (    IN PVOID            pDeviceHandler,    IN BYTE             byMode,    IN BYTE             byNewChannel,    IN BYTE             byCount    ){    PSDevice    pDevice = (PSDevice) pDeviceHandler;    BOOL        bResult = TRUE;        if (byCount == 0) {        pDevice->sMgmtObj.uCurrChannel = byNewChannel;        bResult = CARDbSetMediaChannel(pDevice, byNewChannel);        return(bResult);    }            pDevice->byChannelSwitchCount = byCount;    pDevice->byNewChannel = byNewChannel;    pDevice->bChannelSwitch = TRUE;    if (byMode == 1) {        //bResult=CARDbStopTxPacket(pDevice, PKT_TYPE_802_11_ALL);        pDevice->bStopDataPkt = TRUE;    }    return (bResult);    } 

⌨️ 快捷键说明

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