📄 baseband.c
字号:
{ UINT cbBitCount; UINT cbUsCount = 0; UINT cbTmp; BOOL bExtBit; BYTE byPreambleType = pDevice->byPreambleType; BOOL bCCK = pDevice->bCCK; cbBitCount = cbFrameLength * 8; bExtBit = FALSE; switch (wRate) { case RATE_1M : cbUsCount = cbBitCount; *pbyPhySgn = 0x00; break; case RATE_2M : cbUsCount = cbBitCount / 2; if (byPreambleType == 1) *pbyPhySgn = 0x09; else // long preamble *pbyPhySgn = 0x01; break; case RATE_5M : if (bCCK == FALSE) cbBitCount ++; cbUsCount = (cbBitCount * 10) / 55; cbTmp = (cbUsCount * 55) / 10; if (cbTmp != cbBitCount) cbUsCount ++; if (byPreambleType == 1) *pbyPhySgn = 0x0a; else // long preamble *pbyPhySgn = 0x02; break; case RATE_11M : if (bCCK == FALSE) cbBitCount ++; cbUsCount = cbBitCount / 11; cbTmp = cbUsCount * 11; if (cbTmp != cbBitCount) { cbUsCount ++; if ((cbBitCount - cbTmp) <= 3) bExtBit = TRUE; } if (byPreambleType == 1) *pbyPhySgn = 0x0b; else // long preamble *pbyPhySgn = 0x03; break; case RATE_6M : if(byPacketType == PK_TYPE_11A) {//11a, 5GHZ *pbyPhySgn = 0x9B; //1001 1011 } else {//11g, 2.4GHZ *pbyPhySgn = 0x8B; //1000 1011 } break; case RATE_9M : if(byPacketType == PK_TYPE_11A) {//11a, 5GHZ *pbyPhySgn = 0x9F; //1001 1111 } else {//11g, 2.4GHZ *pbyPhySgn = 0x8F; //1000 1111 } break; case RATE_12M : if(byPacketType == PK_TYPE_11A) {//11a, 5GHZ *pbyPhySgn = 0x9A; //1001 1010 } else {//11g, 2.4GHZ *pbyPhySgn = 0x8A; //1000 1010 } break; case RATE_18M : if(byPacketType == PK_TYPE_11A) {//11a, 5GHZ *pbyPhySgn = 0x9E; //1001 1110 } else {//11g, 2.4GHZ *pbyPhySgn = 0x8E; //1000 1110 } break; case RATE_24M : if(byPacketType == PK_TYPE_11A) {//11a, 5GHZ *pbyPhySgn = 0x99; //1001 1001 } else {//11g, 2.4GHZ *pbyPhySgn = 0x89; //1000 1001 } break; case RATE_36M : if(byPacketType == PK_TYPE_11A) {//11a, 5GHZ *pbyPhySgn = 0x9D; //1001 1101 } else {//11g, 2.4GHZ *pbyPhySgn = 0x8D; //1000 1101 } break; case RATE_48M : if(byPacketType == PK_TYPE_11A) {//11a, 5GHZ *pbyPhySgn = 0x98; //1001 1000 } else {//11g, 2.4GHZ *pbyPhySgn = 0x88; //1000 1000 } break; case RATE_54M : if (byPacketType == PK_TYPE_11A) {//11a, 5GHZ *pbyPhySgn = 0x9C; //1001 1100 } else {//11g, 2.4GHZ *pbyPhySgn = 0x8C; //1000 1100 } break; default : if (byPacketType == PK_TYPE_11A) {//11a, 5GHZ *pbyPhySgn = 0x9C; //1001 1100 } else {//11g, 2.4GHZ *pbyPhySgn = 0x8C; //1000 1100 } break; } if (byPacketType == PK_TYPE_11B) { *pbyPhySrv = 0x00; if (bExtBit) *pbyPhySrv = *pbyPhySrv | 0x80; *pwPhyLen = (WORD) cbUsCount; } else { *pbyPhySrv = 0x00; *pwPhyLen = (WORD)cbFrameLength; }}/* * Description: Set Antenna mode * * Parameters: * In: * pDevice - Device Structure * byAntennaMode - Antenna Mode * Out: * none * * Return Value: none * */VOIDBBvSetAntennaMode (PSDevice pDevice, BYTE byAntennaMode){ //{{ RobertYu: 20041124, ABG Mode, VC1/VC2 define, make the ANT_A, ANT_B inverted /*if ( (pDevice->byRFType == RF_MAXIM2829) || (pDevice->byRFType == RF_UW2452) || (pDevice->byRFType == RF_AIROHA7230) ) { // RobertYu: 20041210, 20050104 switch (byAntennaMode) { case ANT_TXA: byAntennaMode = ANT_TXB; break; case ANT_TXB: byAntennaMode = ANT_TXA; break; case ANT_RXA: byAntennaMode = ANT_RXB; break; case ANT_RXB: byAntennaMode = ANT_RXA; break; } }*/ switch (byAntennaMode) { case ANT_TXA: break; case ANT_TXB: break; case ANT_RXA: pDevice->byBBRxConf &= 0xFC; break; case ANT_RXB: pDevice->byBBRxConf &= 0xFE; pDevice->byBBRxConf |= 0x02;; break; } CONTROLnsRequestOut(pDevice, MESSAGE_TYPE_SET_ANTMD, (WORD) byAntennaMode, 0, 0, NULL);}/* * Description: Set Antenna mode * * Parameters: * In: * pDevice - Device Structure * byAntennaMode - Antenna Mode * Out: * none * * Return Value: none * */BOOLBBbVT3184Init (PSDevice pDevice){ NTSTATUS ntStatus; WORD wLength; PBYTE pbyAddr; PBYTE pbyAgc; WORD wLengthAgc; BYTE abyArray[256]; ntStatus = CONTROLnsRequestIn(pDevice, MESSAGE_TYPE_READ, 0, MESSAGE_REQUEST_EEPROM, EEP_MAX_CONTEXT_SIZE, pDevice->abyEEPROM); if (ntStatus != STATUS_SUCCESS) { return FALSE; } //20080215-01,<Add> by Mike Liu// if ((pDevice->abyEEPROM[EEP_OFS_RADIOCTL]&0x06)==0x04) // return FALSE; if ( !pDevice->bZoneRegExist ) { pDevice->byZoneType = pDevice->abyEEPROM[EEP_OFS_ZONETYPE]; } pDevice->byRFType = pDevice->abyEEPROM[EEP_OFS_RFTYPE]; DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Zone Type %x\n", pDevice->byZoneType); DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"RF Type %d\n", pDevice->byRFType); if ((pDevice->byRFType == RF_AL2230) || (pDevice->byRFType == RF_AL2230S)) { pDevice->byBBRxConf = abyVT3184_AL2230[10]; wLength = sizeof(abyVT3184_AL2230); pbyAddr = abyVT3184_AL2230; pbyAgc = abyVT3184_AGC; wLengthAgc = sizeof(abyVT3184_AGC); 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; } else if (pDevice->byRFType == RF_AIROHA7230) { pDevice->byBBRxConf = abyVT3184_AL2230[10]; wLength = sizeof(abyVT3184_AL2230); pbyAddr = abyVT3184_AL2230; pbyAgc = abyVT3184_AGC; wLengthAgc = sizeof(abyVT3184_AGC); // Init ANT B select,TX Config CR09 = 0x61->0x45, 0x45->0x41(VC1/VC2 define, make the ANT_A, ANT_B inverted) //pbyAddr[0x09] = 0x41; // Init ANT B select,RX Config CR10 = 0x28->0x2A, 0x2A->0x28(VC1/VC2 define, make the ANT_A, ANT_B inverted) //pbyAddr[0x0a] = 0x28; // Select VC1/VC2, CR215 = 0x02->0x06 pbyAddr[0xd7] = 0x06; 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; } else if ( (pDevice->byRFType == RF_VT3226) || (pDevice->byRFType == RF_VT3226D0) ) { pDevice->byBBRxConf = abyVT3184_VT3226D0[10]; //RobertYu:20060515 wLength = sizeof(abyVT3184_VT3226D0); //RobertYu:20060515 pbyAddr = abyVT3184_VT3226D0; //RobertYu:20060515 pbyAgc = abyVT3184_AGC; wLengthAgc = sizeof(abyVT3184_AGC); pDevice->abyBBVGA[0] = 0x20; //RobertYu:20060104, reguest by Jack 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 MACvRegBitsOn(pDevice, MAC_REG_SOFTPWRCTL2, SOFTPWRCTL_RFLEOPT); //}} //{{RobertYu:20060609 } else if ( (pDevice->byRFType == RF_VT3342A0) ) { pDevice->byBBRxConf = abyVT3184_VT3226D0[10]; wLength = sizeof(abyVT3184_VT3226D0); pbyAddr = abyVT3184_VT3226D0; pbyAgc = abyVT3184_AGC; wLengthAgc = sizeof(abyVT3184_AGC); pDevice->abyBBVGA[0] = 0x20; 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 MACvRegBitsOn(pDevice, MAC_REG_SOFTPWRCTL2, SOFTPWRCTL_RFLEOPT); //}} } else { return TRUE; } memcpy(abyArray, pbyAddr, wLength); CONTROLnsRequestOut(pDevice, MESSAGE_TYPE_WRITE, 0, MESSAGE_REQUEST_BBREG, wLength, abyArray ); memcpy(abyArray, pbyAgc, wLengthAgc); CONTROLnsRequestOut(pDevice, MESSAGE_TYPE_WRITE, 0, MESSAGE_REQUEST_BBAGC, wLengthAgc, abyArray ); if ((pDevice->byRFType == RF_VT3226) || //RobertYu:20051116, 20060111 remove VT3226D0 (pDevice->byRFType == RF_VT3342A0) //RobertYu:20060609 ) { ControlvWriteByte(pDevice,MESSAGE_REQUEST_MACREG,MAC_REG_ITRTMSET,0x23); MACvRegBitsOn(pDevice,MAC_REG_PAPEDELAY,0x01); } else if (pDevice->byRFType == RF_VT3226D0) { ControlvWriteByte(pDevice,MESSAGE_REQUEST_MACREG,MAC_REG_ITRTMSET,0x11); MACvRegBitsOn(pDevice,MAC_REG_PAPEDELAY,0x01); } ControlvWriteByte(pDevice,MESSAGE_REQUEST_BBREG,0x04,0x7F); ControlvWriteByte(pDevice,MESSAGE_REQUEST_BBREG,0x0D,0x01); RFbRFTableDownload(pDevice); return TRUE;//ntStatus; }/* * Description: Turn on BaseBand Loopback mode * * Parameters: * In: * pDevice - Device Structure * * Out: * none * * Return Value: none * */void BBvLoopbackOn (PSDevice pDevice){ BYTE byData; //CR C9 = 0x00 ControlvReadByte (pDevice, MESSAGE_REQUEST_BBREG, 0xC9, &pDevice->byBBCRc9);//CR201 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -