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

📄 baseband.c

📁 VIA VT6655 x86下的Linux Source Code
💻 C
📖 第 1 页 / 共 5 页
字号:
        pDevice->abyBBVGA[3] = 0x0;
        pDevice->ldBmThreshold[0] = -60;
        pDevice->ldBmThreshold[1] = -50;
        pDevice->ldBmThreshold[2] = 0;
        pDevice->ldBmThreshold[3] = 0;
    } else if (byRFType == RF_UW2452) {
        for (ii = 0; ii < CB_VT3253B0_INIT_FOR_UW2451; ii++) {
            bResult &= BBbWriteEmbeded(dwIoBase,byVT3253B0_UW2451[ii][0],byVT3253B0_UW2451[ii][1]);
    	}
        // Init ANT B select,TX Config CR09 = 0x61->0x45, 0x45->0x41(VC1/VC2 define, make the ANT_A, ANT_B inverted)
        //bResult &= BBbWriteEmbeded(dwIoBase,0x09,0x41);
        // Init ANT B select,RX Config CR10 = 0x28->0x2A, 0x2A->0x28(VC1/VC2 define, make the ANT_A, ANT_B inverted)
        //bResult &= BBbWriteEmbeded(dwIoBase,0x0a,0x28);
        // Select VC1/VC2, CR215 = 0x02->0x06
        bResult &= BBbWriteEmbeded(dwIoBase,0xd7,0x06);

        //{{RobertYu:20050125, request by Jack
        bResult &= BBbWriteEmbeded(dwIoBase,0x90,0x20);
        bResult &= BBbWriteEmbeded(dwIoBase,0x97,0xeb);
        //}}

        //{{RobertYu:20050221, request by Jack
        bResult &= BBbWriteEmbeded(dwIoBase,0xa6,0x00);
        bResult &= BBbWriteEmbeded(dwIoBase,0xa8,0x30);
        //}}
        bResult &= BBbWriteEmbeded(dwIoBase,0xb0,0x58);

        for (ii = 0; ii < CB_VT3253B0_AGC; ii++) {
    	    bResult &= BBbWriteEmbeded(dwIoBase,byVT3253B0_AGC[ii][0],byVT3253B0_AGC[ii][1]);
    	}
        //VNSvOutPortB(dwIoBase + MAC_REG_ITRTMSET, 0x23); // RobertYu: 20050104, 20050131 disable PA_Delay
        //MACvRegBitsOn(dwIoBase, MAC_REG_PAPEDELAY, BIT0); // RobertYu: 20050104, 20050131 disable PA_Delay

        pDevice->abyBBVGA[0] = 0x14;
        pDevice->abyBBVGA[1] = 0x0A;
        pDevice->abyBBVGA[2] = 0x0;
        pDevice->abyBBVGA[3] = 0x0;
        pDevice->ldBmThreshold[0] = -60;
        pDevice->ldBmThreshold[1] = -50;
        pDevice->ldBmThreshold[2] = 0;
        pDevice->ldBmThreshold[3] = 0;
    //}} RobertYu

    } else if (byRFType == RF_VT3226) {
        for (ii = 0; ii < CB_VT3253B0_INIT_FOR_AIROHA2230; ii++) {
    	    bResult &= BBbWriteEmbeded(dwIoBase,byVT3253B0_AIROHA2230[ii][0],byVT3253B0_AIROHA2230[ii][1]);
    	}
        for (ii = 0; ii < CB_VT3253B0_AGC; ii++) {
    	    bResult &= BBbWriteEmbeded(dwIoBase,byVT3253B0_AGC[ii][0],byVT3253B0_AGC[ii][1]);
    	}
        pDevice->abyBBVGA[0] = 0x1C;
        pDevice->abyBBVGA[1] = 0x10;
        pDevice->abyBBVGA[2] = 0x0;
        pDevice->abyBBVGA[3] = 0x0;
        pDevice->ldBmThreshold[0] = -70;
        pDevice->ldBmThreshold[1] = -48;
        pDevice->ldBmThreshold[2] = 0;
        pDevice->ldBmThreshold[3] = 0;
        // Fix VT3226 DFC system timing issue
        MACvSetRFLE_LatchBase(dwIoBase);
         //{{ RobertYu: 20050104
    } else if (byRFType == RF_AIROHA7230) {
        for (ii = 0; ii < CB_VT3253B0_INIT_FOR_AIROHA2230; ii++) {
    	    bResult &= BBbWriteEmbeded(dwIoBase,byVT3253B0_AIROHA2230[ii][0],byVT3253B0_AIROHA2230[ii][1]);
    	}

        //{{ RobertYu:20050223, request by JerryChung
        // Init ANT B select,TX Config CR09 = 0x61->0x45, 0x45->0x41(VC1/VC2 define, make the ANT_A, ANT_B inverted)
        //bResult &= BBbWriteEmbeded(dwIoBase,0x09,0x41);
        // Init ANT B select,RX Config CR10 = 0x28->0x2A, 0x2A->0x28(VC1/VC2 define, make the ANT_A, ANT_B inverted)
        //bResult &= BBbWriteEmbeded(dwIoBase,0x0a,0x28);
        // Select VC1/VC2, CR215 = 0x02->0x06
        bResult &= BBbWriteEmbeded(dwIoBase,0xd7,0x06);
        //}}

        for (ii = 0; ii < CB_VT3253B0_AGC; ii++) {
    	    bResult &= BBbWriteEmbeded(dwIoBase,byVT3253B0_AGC[ii][0],byVT3253B0_AGC[ii][1]);
    	}
        pDevice->abyBBVGA[0] = 0x1C;
        pDevice->abyBBVGA[1] = 0x10;
        pDevice->abyBBVGA[2] = 0x0;
        pDevice->abyBBVGA[3] = 0x0;
        pDevice->ldBmThreshold[0] = -70;
        pDevice->ldBmThreshold[1] = -48;
        pDevice->ldBmThreshold[2] = 0;
        pDevice->ldBmThreshold[3] = 0;
    //}} RobertYu
    } else {
    	// No VGA Table now
    	pDevice->bUpdateBBVGA = FALSE;
        pDevice->abyBBVGA[0] = 0x1C;
    }

    if (byLocalID > REV_ID_VT3253_A1) {
        BBbWriteEmbeded(dwIoBase, 0x04, 0x7F);
        BBbWriteEmbeded(dwIoBase, 0x0D, 0x01);
    }

    return bResult;
}
 
 

/*
 * Description: Read All Baseband Registers
 *
 * Parameters:
 *  In:
 *      dwIoBase    - I/O base address
 *      pbyBBRegs   - Point to struct that stores Baseband Registers
 *  Out:
 *      none
 *
 * Return Value: none
 *
 */
VOID BBvReadAllRegs (DWORD_PTR dwIoBase, PBYTE pbyBBRegs)
{
    int  ii;
    BYTE byBase = 1;
    for (ii = 0; ii < BB_MAX_CONTEXT_SIZE; ii++) {
        BBbReadEmbeded(dwIoBase, (BYTE)(ii*byBase), pbyBBRegs);
        pbyBBRegs += byBase;
    }
}

/*
 * Description: Turn on BaseBand Loopback mode
 *
 * Parameters:
 *  In:
 *      dwIoBase    - I/O base address
 *      bCCK        - If CCK is set
 *  Out:
 *      none
 *
 * Return Value: none
 *
 */
 
 
void BBvLoopbackOn (PSDevice pDevice)
{
    BYTE      byData;
    DWORD_PTR dwIoBase = pDevice->PortOffset;

    //CR C9 = 0x00
    BBbReadEmbeded(dwIoBase, 0xC9, &pDevice->byBBCRc9);//CR201
    BBbWriteEmbeded(dwIoBase, 0xC9, 0);
    BBbReadEmbeded(dwIoBase, 0x4D, &pDevice->byBBCR4d);//CR77
    BBbWriteEmbeded(dwIoBase, 0x4D, 0x90);

    //CR 88 = 0x02(CCK), 0x03(OFDM)
    BBbReadEmbeded(dwIoBase, 0x88, &pDevice->byBBCR88);//CR136

    if (pDevice->uConnectionRate <= RATE_11M) { //CCK
        // Enable internal digital loopback: CR33 |= 0000 0001
        BBbReadEmbeded(dwIoBase, 0x21, &byData);//CR33
        BBbWriteEmbeded(dwIoBase, 0x21, (BYTE)(byData | 0x01));//CR33
        // CR154 = 0x00
        BBbWriteEmbeded(dwIoBase, 0x9A, 0);   //CR154

        BBbWriteEmbeded(dwIoBase, 0x88, 0x02);//CR239
    }
    else { //OFDM
        // Enable internal digital loopback:CR154 |= 0000 0001
        BBbReadEmbeded(dwIoBase, 0x9A, &byData);//CR154
        BBbWriteEmbeded(dwIoBase, 0x9A, (BYTE)(byData | 0x01));//CR154
        // CR33 = 0x00
        BBbWriteEmbeded(dwIoBase, 0x21, 0);   //CR33

        BBbWriteEmbeded(dwIoBase, 0x88, 0x03);//CR239
    }

    //CR14 = 0x00
    BBbWriteEmbeded(dwIoBase, 0x0E, 0);//CR14

    // Disable TX_IQUN
    BBbReadEmbeded(pDevice->PortOffset, 0x09, &pDevice->byBBCR09);
    BBbWriteEmbeded(pDevice->PortOffset, 0x09, (BYTE)(pDevice->byBBCR09 & 0xDE));
}
 
/*
 * Description: Turn off BaseBand Loopback mode
 *
 * Parameters:
 *  In:
 *      pDevice         - Device Structure
 *
 *  Out:
 *      none
 *
 * Return Value: none
 *
 */
void BBvLoopbackOff (PSDevice pDevice)
{
    BYTE      byData;
    DWORD_PTR dwIoBase = pDevice->PortOffset;

    BBbWriteEmbeded(dwIoBase, 0xC9, pDevice->byBBCRc9);//CR201
    BBbWriteEmbeded(dwIoBase, 0x88, pDevice->byBBCR88);//CR136
    BBbWriteEmbeded(dwIoBase, 0x09, pDevice->byBBCR09);//CR136
    BBbWriteEmbeded(dwIoBase, 0x4D, pDevice->byBBCR4d);//CR77

    if (pDevice->uConnectionRate <= RATE_11M) { // CCK
        // Set the CR33 Bit2 to disable internal Loopback.
        BBbReadEmbeded(dwIoBase, 0x21, &byData);//CR33
        BBbWriteEmbeded(dwIoBase, 0x21, (BYTE)(byData & 0xFE));//CR33
    }
    else { // OFDM
        BBbReadEmbeded(dwIoBase, 0x9A, &byData);//CR154
        BBbWriteEmbeded(dwIoBase, 0x9A, (BYTE)(byData & 0xFE));//CR154
    }
    BBbReadEmbeded(dwIoBase, 0x0E, &byData);//CR14
    BBbWriteEmbeded(dwIoBase, 0x0E, (BYTE)(byData | 0x80));//CR14

}
 
 

/*
 * Description: Set ShortSlotTime mode
 *
 * Parameters:
 *  In:
 *      pDevice     - Device Structure
 *  Out:
 *      none
 *
 * Return Value: none
 *
 */
VOID
BBvSetShortSlotTime (PSDevice pDevice)
{
    BYTE byBBRxConf=0;
    BYTE byBBVGA=0;

    BBbReadEmbeded(pDevice->PortOffset, 0x0A, &byBBRxConf);//CR10

    if (pDevice->bShortSlotTime) {
        byBBRxConf &= 0xDF;//1101 1111
    } else {
        byBBRxConf |= 0x20;//0010 0000
    }

    // patch for 3253B0 Baseband with Cardbus module
    BBbReadEmbeded(pDevice->PortOffset, 0xE7, &byBBVGA);
    if (byBBVGA == pDevice->abyBBVGA[0]) {
        byBBRxConf |= 0x20;//0010 0000
    }

    BBbWriteEmbeded(pDevice->PortOffset, 0x0A, byBBRxConf);//CR10    
    
}

VOID BBvSetVGAGainOffset(PSDevice pDevice, BYTE byData)
{
    BYTE byBBRxConf=0;

    BBbWriteEmbeded(pDevice->PortOffset, 0xE7, byData);

    BBbReadEmbeded(pDevice->PortOffset, 0x0A, &byBBRxConf);//CR10
    // patch for 3253B0 Baseband with Cardbus module
    if (byData == pDevice->abyBBVGA[0]) {
        byBBRxConf |= 0x20;//0010 0000
    } else if (pDevice->bShortSlotTime) {
        byBBRxConf &= 0xDF;//1101 1111
    } else {
        byBBRxConf |= 0x20;//0010 0000
    }
    pDevice->byBBVGACurrent = byData;    
    BBbWriteEmbeded(pDevice->PortOffset, 0x0A, byBBRxConf);//CR10
}


/*
 * Description: Baseband SoftwareReset
 *
 * Parameters:
 *  In:
 *      dwIoBase    - I/O base address
 *  Out:
 *      none
 *
 * Return Value: none
 *
 */
VOID
BBvSoftwareReset (DWORD_PTR dwIoBase)
{
    BBbWriteEmbeded(dwIoBase, 0x50, 0x40);
    BBbWriteEmbeded(dwIoBase, 0x50, 0);
    BBbWriteEmbeded(dwIoBase, 0x9C, 0x01);
    BBbWriteEmbeded(dwIoBase, 0x9C, 0);
}

/*
 * Description: Baseband Power Save Mode ON
 *
 * Parameters:
 *  In:
 *      dwIoBase    - I/O base address
 *  Out:
 *      none
 *
 * Return Value: none
 *
 */
VOID
BBvPowerSaveModeON (DWORD_PTR dwIoBase)
{
    BYTE byOrgData;

    BBbReadEmbeded(dwIoBase, 0x0D, &byOrgData);
    byOrgData |= BIT0;
    BBbWriteEmbeded(dwIoBase, 0x0D, byOrgData);
}

/*
 * Description: Baseband Power Save Mode OFF
 *
 * Parameters:
 *  In:
 *      dwIoBase    - I/O base address
 *  Out:
 *      none
 *
 * Return Value: none
 *
 */
VOID
BBvPowerSaveModeOFF (DWORD_PTR dwIoBase)
{
    BYTE byOrgData;

    BBbReadEmbeded(dwIoBase, 0x0D, &byOrgData);
    byOrgData &= ~(BIT0);
    BBbWriteEmbeded(dwIoBase, 0x0D, byOrgData);
}

/*
 * Description: Set Tx Antenna mode
 *
 * Parameters:
 *  In:
 *      pDevice          - Device Structure
 *      byAntennaMode    - Antenna Mode
 *  Out:
 *      none
 *
 * Return Value: none
 *
 */
 
VOID
BBvSetTxAntennaMode (DWORD_PTR dwIoBase, BYTE byAntennaMode)
{
    BYTE byBBTxConf;

    BBbReadEmbeded(dwIoBase, 0x09, &byBBTxConf);//CR09
    if (byAntennaMode == ANT_DIVERSITY) {
        // bit 1 is diversity
        byBBTxConf |= 0x02;
    } else if (byAntennaMode == ANT_A) {
        // bit 2 is ANTSEL
        byBBTxConf &= 0xF9; // 1111 1001
    } else if (byAntennaMode == ANT_B) {
        byBBTxConf &= 0xFD; // 1111 1101
        byBBTxConf |= 0x04;
    }
    BBbWriteEmbeded(dwIoBase, 0x09, byBBTxConf);//CR09
}
 
 


/*
 * Description: Set Rx Antenna mode
 *
 * Parameters:
 *  In:
 *      pDevice          - Device Structure
 *      byAntennaMode    - Antenna Mode
 *  Out:
 *      none
 *
 * Return Value: none
 *
 */
 
VOID
BBvSetRxAntennaMode (DWORD_PTR dwIoBase, BYTE byAntennaMode)
{
    BYTE byBBRxConf;

    BBbReadEmbeded(dwIoBase, 0x0A, &byBBRxConf);//CR10
    if (byAntennaMode == ANT_DIVERSITY) {
        byBBRxConf |= 0x01;

    } else if (byAntennaMode == ANT_A) {
        byBBRxConf &= 0xFC; // 1111 1100
    } else if (byAntennaMode == ANT_B) {
        byBBRxConf &= 0xFE; // 1111 1110
        byBBRxConf |= 0x02;
    }
    BBbWriteEmbeded(dwIoBase, 0x0A, byBBRxConf);//CR10
}
 

/*
 * Description: BBvSetDeepSleep
 *
 * Parameters:
 *  In:
 *      pDevice          - Device Structure
 *  Out:
 *      none
 *
 * Return Value: none
 *
 */
VOID
BBvSetDeepSleep (DWORD_PTR dwIoBase, BYTE byLocalID)
{
    BBbWriteEmbeded(dwIoBase, 0x0C, 0x17);//CR12
    BBbWriteEmbeded(dwIoBase, 0x0D, 0xB9);//CR13
}

VOID
BBvExitDeepSleep (DWORD_PTR dwIoBase, BYTE byLocalID)
{
    BBbWriteEmbeded(dwIoBase, 0x0C, 0x00);//CR12
    BBbWriteEmbeded(dwIoBase, 0x0D, 0x01);//CR13
}



static
ULONG
s_ulGetRatio (PSDevice pDevice)
{
ULONG   ulRatio = 0;
ULONG   ulMaxPacket;
ULONG   ulPacketNum;

    //This is a thousand-ratio
    ulMaxPacket = pDevice->uNumSQ3[RATE_54M];
    if ( pDevice->uNumSQ3[RATE_54M] != 0 ) {
        ulPacketNum = pDevice->uNumSQ3[RATE_54M];
        ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
        //ulRatio = (pDevice->uNumSQ3[RATE_54M] * 1000 / pDevice->uDiversityCnt);
        ulRatio += TOP_RATE_54M;
    }
    if ( pDevice->uNumSQ3[RATE_48M] > ulMaxPacket ) {
        ulPacketNum = pDevice->uNumSQ3[RATE_54M] + pDevice->uNumSQ3[RATE_48M];
        ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
        //ulRatio = (pDevice->uNumSQ3[RATE_48M] * 1000 / pDevice->uDiversityCnt);
        ulRatio += TOP_RATE_48M;
        ulMaxPacket = pDevice->uNumSQ3[RATE_48M];
    }
    if ( pDevice->uNumSQ3[RATE_36M] > ulMaxPacket ) {
        ulPacketNum = pDevice->uNumSQ3[RATE_54M] + pDevice->uNumSQ3[RATE_48M] +
                      pDevice->uNumSQ3[RATE_36M];
        ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
        //ulRatio = (pDevice->uNumSQ3[RATE_36M] * 1000 / pDevice->uDiversityCnt);
        ulRatio += TOP_RATE_36M;
        ulMaxPacket = pDevice->uNumSQ3[RATE_36M];
    }
    if ( pDevice->uNumSQ3[RATE_24M] > ulMaxPacket ) {
        ulPacketNum = pDevice->uNumSQ3[RATE_54M] + pDevice->uNumSQ3[RATE_48M] +
                      pDevice->uNumSQ3[RATE_36M] + pDevice->uNumSQ3[RATE_24M];
        ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
        //ulRatio = (pDevice->uNumSQ3[RATE_24M] * 1000 / pDevice->uDiversityCnt);
        ulRatio += TOP_RATE_24M;
        ulMaxPacket = pDevice->uNumSQ3[RATE_24M];
    }
    if ( pDevice->uNumSQ3[RATE_18M] > ulMaxPacket ) {
        ulPacketNum = pDevice->uNumSQ3[RATE_54M] + pDevice->uNumSQ3[RATE_48M] +
                      pDevice->uNumSQ3[RATE_36M] + pDevice->uNumSQ3[RATE_24M] +
                      pDevice->uNumSQ3[RATE_18M];
        ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
        //ulRatio = (pDevice->uNumSQ3[RATE_18M] * 1000 / pDevice->uDiversityCnt);
        ulRatio += TOP_RATE_18M;
        ulMaxPacket = pDevice->uNumSQ3[RATE_18M];
    }
    if ( pDevice->uNumSQ3[RATE_12M] > ulMaxPacket ) {
        ulPacketNum = pDevice->uNumSQ3[RATE_54M] + pDevice->uNumSQ3[RATE_48M] +
                      pDevice->uNumSQ3[RATE_36M] + pDevice->uNumSQ3[RATE_24M] +
                      pDevice->uNumSQ3[RATE_18M] + pDevice->uNumSQ3[RATE_12M];
        ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
        //ulRatio = (pDevice->uNumSQ3[RATE_12M] * 1000 / pDevice->uDiversityCnt);
        ulRatio += TOP_RATE_12M;
        ulMaxPacket = pDevice->uNumSQ3[RATE_12M];
    }
    if ( pDevice->uNumSQ3[RATE_11M] > ulMaxPacket ) {
        ulPacketNum = pDevice->uDiversityCnt - pDevice->uNumSQ3[RATE_1M] -
                      pDevice->uNumSQ3[RATE_2M] - pDevice->uNumSQ3[RATE_5M] -
                      pDevice->uNumSQ3[RATE_6M] - pDevice->uNumSQ3[RATE_9M];
        ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
        //ulRatio = (pDevice->uNumSQ3[RATE_11M] * 1000 / pDevice->uDiversityCnt);
        ulRatio += TOP_RATE_11M;
        ulMaxPacket = pDevice->uNumSQ3[RATE_11M];
    }
    if ( pDevice->uNumSQ3[RATE_9M] > ulMaxPacket ) {
        ulPacketNum = pDevice->uDiversityCnt - pDevice->uNumSQ3[RATE_1M] -
                      pDevice->uNumSQ3[RATE_2M] - pDevice->uNumSQ3[RATE_5M] -
                      pDevice->uNumSQ3[RATE_6M];
        ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
        //ulRatio = (pDevice->uNumSQ3[RATE_9M] * 1000 / pDevice->uDiversityCnt);
        ulRatio += TOP_RATE_9M;
        ulMaxPacket = pDevice->uNumSQ3[RATE_9M];
    }
    if ( pDevice->uNumSQ3[RATE_6M] > ulMaxPacket ) {
        ulPacketNum = pDevice->uDiversityCnt - pDevice->uNumSQ3[RATE_1M] -
                      pDevice->uNumSQ3[RATE_2M] - pDevice->uNumSQ3[RATE_5M];
        ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
        //ulRatio = (pDevice->uNumSQ3[RATE_6M] * 1000 / pDevice->uDiversityCnt);
        ulRatio += TOP_RATE_6M;
        ulMaxPacket = pDevice->uNumSQ3[RATE_6M];
    }
    if ( pDevice->uNumSQ3[RATE_5M] > ulMaxPacket ) {
        ulPacketNum = pDevice->uDiversityCnt - pDevice->uNumSQ3[RATE_1M] -
                      pDevice->uNumSQ3[RATE_2M];
        ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
        //ulRatio = (pDevice->uNumSQ3[RATE_5M] * 1000 / pDevice->uDiversityCnt);
        ulRatio += TOP_RATE_55M;
        ulMaxPacket = pDevice->uNumSQ3[RATE_5M];
    }
    if ( pDevice->uNumSQ3[RATE_2M] > ulMaxPacket ) {
        ulPacketNum = pDevice->uDiversityCnt - pDevice->uNumSQ3[RATE_1M];
        ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
        //ulRatio = (pDevice->uNumSQ3[RATE_2M]  * 1000 / pDevice->uDiversityCnt);
        ulRatio += TOP_RATE_2M;
        ulMaxPacket = pDevice->uNumSQ3[RATE_2M];
    }
    if ( pDevice->uNumSQ3[RATE_1M] > ulMaxPacket ) {
        ulPacketNum = pDevice->uDiversityCnt;
        ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
        //ulRatio = (pDevice->uNumSQ3[RATE_1M]  * 1000 / pDevice->uDiversityCnt);
        ulRatio += TOP_RATE_1M;
    }

    return ulRatio;
}


VOID
BBvClea

⌨️ 快捷键说明

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