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

📄 zdwlanadapter.cpp

📁 这个是无线网卡WirelessLAN 测试程序NDIS
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::SetWL_Sleep(PWLADAPTERINFO pWLAdapterInfoIn)
{
	if(SetWL_DisableNIC(pWLAdapterInfoIn) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;
	Sleep(100);
	if(SetWL_StopProcessor(pWLAdapterInfoIn) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::SetWL_WakeUp(PWLADAPTERINFO pWLAdapterInfoIn)
{
	int nTempInt;

	if(SetWin32NDISOid(pWLAdapterInfoIn, OID_ZD_ADAPTER_SOFT_BOOT, (PVOID)&nTempInt, sizeof(nTempInt)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::SetWL_StopProcessor(PWLADAPTERINFO pWLAdapterInfoIn)
{
	ZD_CMD_STRUCT CmdStruct;

	CmdStruct.u.send.cmd = 0x422;    
	if(SetWin32NDISOid(pWLAdapterInfoIn, OID_ZD_CMD, (PVOID)&CmdStruct, sizeof(ZD_CMD_STRUCT)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::SetWL_TxContinuous(PWLADAPTERINFO pWLAdapterInfoIn, int nMode)
{
	if(nMode<0 || nMode>1)
		return ZDNDIS_FAIL;

	if(nMode == 0) {		// Stop Testing.
		//SetWL_WriteMACRegister(pWLAdapterInfoIn, 0x400104, 1);				// 2002-11-14 Robin Kao Request
		if(SetWL_FirmwareTestCommand(pWLAdapterInfoIn, 0x0F, 0x00, 0) == ZDNDIS_FAIL)
			return ZDNDIS_FAIL;
	} else {				// Continuous Tx 
		//SetWL_WriteMACRegister(pWLAdapterInfoIn, 0x400104, 0);				// 2002-11-14 Robin Kao Request
		if(SetWL_FirmwareTestCommand(pWLAdapterInfoIn, 0x0E, 0xFF, 0) == ZDNDIS_FAIL)
			return ZDNDIS_FAIL;
	}

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::SetWL_FilterBand(PWLADAPTERINFO pWLAdapterInfoIn, int nZone)
{
	int		i, j;
	UINT	unTempInt;

	if(nZone<1 || nZone>2)
		return ZDNDIS_FAIL;

	for(i=82; i<=106; i=i+2) {
		j = (i - 82) / 2;
		unTempInt = ((UINT)g_PHY_CountryData[nZone-1][j] >> 8) & 0x00FF;
		if(WritePHYRegister(pWLAdapterInfoIn, i, unTempInt) == ZDNDIS_FAIL)
			return ZDNDIS_FAIL;

		unTempInt = (UINT)g_PHY_CountryData[nZone-1][j] & 0x00FF;
		if(WritePHYRegister(pWLAdapterInfoIn, i+1, unTempInt) == ZDNDIS_FAIL)
			return ZDNDIS_FAIL;
	}

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::QueryWL_FirmwareAntennaDiversity(PWLADAPTERINFO pWLAdapterInfoIn, int nTxRxMode)
{

	USHORT		uTempFC86;
	UINT		uTemp_CR9;
	UINT		uTemp_CR10;
	RID_STRUCT	RidStruct;

	RidStruct.rid = 0xFC86;
	RidStruct.length = 2;

	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_ZD_GETRID, &RidStruct, sizeof(RidStruct)) == ZDNDIS_FAIL) {
		TRACE( "SetWL_SetFirmwareDiversity() read RID:FC86 Fail!!" );
		AfxMessageBox( "SetWL_SetFirmwareDiversity() read RID:FC86 Fail!!" );
		return ZDNDIS_FAIL;
	}
	uTempFC86 = (USHORT)RidStruct.u.data[0];

	switch(nTxRxMode) {
		case 0:		// Tx Antenna
			// CR9: Tx Antenna Select:
			//      bit 2: Antenna 1 ==> 1
			//                     2 ==> 0
			//      bit 1: Antenna auto select   ==> 1
			//                     Nanual select ==> 0
			if(ReadPHYRegister(pWLAdapterInfoIn, 9, &uTemp_CR9) == ZDNDIS_FAIL) {
				TRACE( "Read CR9 fail!!" );
				AfxMessageBox( "Read CR9 fail!!" );
				return ZDNDIS_FAIL;
			}
			if(uTemp_CR9 & SET_BIT_2) {
				return 1;
			} else {
				return 2;
			}
			break;
		case 1:		// Rx Antenna
			// CR10: Rx Antenna Select:
			//       bit 1: Antenna 1 ==> 1
			//                      2 ==> 0
			//       bit 0: Antenna auto select   ==> 0
			//                      Nanual select ==> 1
			if(ReadPHYRegister(pWLAdapterInfoIn, 10, &uTemp_CR10) == ZDNDIS_FAIL) {
				TRACE( "Read CR10 fail!!" );
				AfxMessageBox( "Read CR10 fail!!" );
				return ZDNDIS_FAIL;
			}
			if((uTempFC86 & 0x00FF) == 0) {	// Manual Select Antenna
				if(uTemp_CR10 & SET_BIT_1) {
					return 1;
				} else {
					return 2;
				}
			} else {
				return 3;					// Auto Select Antenna
			}
			break;
		default:
			TRACE( "nTxRxMode parameter fail!!" );
			AfxMessageBox( "nTxRxMode parameter fail!!" );
			return ZDNDIS_FAIL;
			break;
	}
	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::SetWL_FirmwareAntennaDiversity(PWLADAPTERINFO pWLAdapterInfoIn, int nTxRxMode, int nAntennaState)
{

	USHORT		uTempFC86;
	UINT		uTemp_CR9;
	UINT		uTemp_CR10;
	RID_STRUCT	RidStruct;

	RidStruct.rid = 0xFC86;
	RidStruct.length = 2;

	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_ZD_GETRID, &RidStruct,sizeof(RidStruct)) == ZDNDIS_FAIL) {
		TRACE( "SetWL_SetFirmwareDiversity() read RID:FC86 Fail!!" );
		return ZDNDIS_FAIL;
	}
	uTempFC86 = (USHORT)RidStruct.u.data[0];

	switch(nTxRxMode) {
		case 0:		// Tx Antenna
			// CR9: Tx Antenna Select:
			//      bit 2: Antenna 1 ==> 1
			//                     2 ==> 0
			//      bit 1: Antenna auto select   ==> 1
			//                     Nanual select ==> 0
			if(ReadPHYRegister(pWLAdapterInfoIn, 9, &uTemp_CR9) == ZDNDIS_FAIL) {
				TRACE( "Read CR9 fail!!" );
				return ZDNDIS_FAIL;
			}
			switch(nAntennaState) {
				case 1:		// Antenna 1
					uTemp_CR9 = (uTemp_CR9 & CLR_BIT_1) | SET_BIT_2;	// Set bit 2, Clear bit 1
					uTempFC86 = (uTempFC86 & 0xFE00) | 0x0100;
					break;
				case 2:		// Antenna 2
					uTemp_CR9 = (uTemp_CR9 & CLR_BIT_1) & CLR_BIT_2;	// Clear bit 2, Clear bit 1
					uTempFC86 = (uTempFC86 & 0xFE00);
					break;
				case 3:		// Auto
					//uTemp_CR9 = (uTemp_CR9 & SET_BIT_1);				// Set bit 1 (Tx Auto Select Antenna)
					uTempFC86 = (uTempFC86 & 0xFF00) | 0x0002;
					break;
				default:
					TRACE( "nAtennaState parameter fail!!" );
					return ZDNDIS_FAIL;
					break;
			}
			if(WritePHYRegister(pWLAdapterInfoIn, 9, uTemp_CR9) == ZDNDIS_FAIL) {
				TRACE( "Write CR9 fail!!" );
				return ZDNDIS_FAIL;
			}
			break;
		case 1:		// Rx Antenna
			// CR10: Rx Antenna Select:
			//       bit 1: Antenna 1 ==> 1
			//                      2 ==> 0
			//       bit 0: Antenna auto select   ==> 0
			//                      Nanual select ==> 1
			if(ReadPHYRegister(pWLAdapterInfoIn, 10, &uTemp_CR10) == ZDNDIS_FAIL) {
				TRACE( "Read CR10 fail!!" );
				return ZDNDIS_FAIL;
			}
			switch(nAntennaState) {
				case 1:		// Antenna 1
					uTemp_CR10	= (uTemp_CR10 | SET_BIT_0) | SET_BIT_1;		// Set bit 1, Set bit 0
					uTempFC86	= (uTempFC86 & 0xFD00) | 0x0200;
					break;
				case 2:		// Antenna 2
					uTemp_CR10	= (uTemp_CR10 | SET_BIT_0) & CLR_BIT_1;		// Clear bit 1, Set bit 0
					uTempFC86	= (uTempFC86 & 0xFD00);
					break;
				case 3:		// Auto
					//uTemp_CR10	= uTemp_CR10 & CLR_BIT_0;				// Clear bit 0 (Rx Auto Select Antenna)
					uTempFC86	= (uTempFC86 & 0xFF00) | 0x0002;
					break;
				default:
					TRACE( "nAtennaState parameter fail!!" );
					return ZDNDIS_FAIL;
				break;
			}
			if(WritePHYRegister(pWLAdapterInfoIn, 10, uTemp_CR10) == ZDNDIS_FAIL) {
				TRACE( "Write CR10 fail!!" );
				return ZDNDIS_FAIL;
			}
			break;
		default:
			TRACE( "nTxRxMode parameter fail!!" );
			return ZDNDIS_FAIL;
			break;
	}

	RidStruct.u.data[0]=(USHORT)uTempFC86;

	if(SetWin32NDISOid(pWLAdapterInfoIn, OID_ZD_SETRID, &RidStruct, (DWORD)sizeof(RID_STRUCT)) == ZDNDIS_FAIL) {
		TRACE( "SetWL_SetFirmwareAntennaDiversity() write RID:FC86 Fail!!" );
		return ZDNDIS_FAIL;
	}

	return(int)(uTempFC86 & 0x03FF);
}

INT CZDWlanAdapter::SetWL_TxAntenna(PWLADAPTERINFO pWLAdapterInfoIn, int nAtenna)
{
	return(SetWL_FirmwareAntennaDiversity(pWLAdapterInfoIn, 0, nAtenna));
}

INT CZDWlanAdapter::SetWL_RxAntenna(PWLADAPTERINFO pWLAdapterInfoIn, int nAtenna)
{
	return(SetWL_FirmwareAntennaDiversity(pWLAdapterInfoIn, 1, nAtenna));
}

INT CZDWlanAdapter::SetWL_CRScrambler(PWLADAPTERINFO pWLAdapterInfoIn, int nMode)
{
	UINT unTempUINT;

	if(nMode<0 || nMode>1)
		return ZDNDIS_FAIL;

	if(ReadPHYRegister(pWLAdapterInfoIn, 32, &unTempUINT) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	if(nMode == 1) {
		unTempUINT = unTempUINT & CLR_BIT_2;	// Clear bit 2
	} else {
		unTempUINT = unTempUINT | SET_BIT_2;	// Set bit 2
	}

	if(WritePHYRegister(pWLAdapterInfoIn, 32, unTempUINT) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::SetWL_CRSpread(PWLADAPTERINFO pWLAdapterInfoIn, int nMode)
{
	UINT unTempUINT;

	if(nMode<0 || nMode>1)
		return ZDNDIS_FAIL;

	if(ReadPHYRegister(pWLAdapterInfoIn, 32, &unTempUINT) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	if(nMode == 1) {
		unTempUINT = unTempUINT & CLR_BIT_3;	// Clear bit 2
	} else {
		unTempUINT = unTempUINT | SET_BIT_3;	// Set bit 2
	}

	if(WritePHYRegister(pWLAdapterInfoIn, 32, unTempUINT) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::SetWL_CRTxPowerControl(PWLADAPTERINFO pWLAdapterInfoIn, int nLevel)
{
	if(nLevel<0 || nLevel>127)
		return ZDNDIS_FAIL;

	if(WritePHYRegister(pWLAdapterInfoIn, 31, (UINT)nLevel) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::QueryWL_CRTxPowerMeasure(PWLADAPTERINFO pWLAdapterInfoIn, int *pnPower)
{
	if(ReadPHYRegister(pWLAdapterInfoIn, 58, (UINT*)pnPower) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::SetWL_TxPoweCalibrationFactor(PWLADAPTERINFO pWLAdapterInfoIn, int nTPCFactor)
{

	RID_STRUCT	RidStruct;

	RidStruct.rid = 0xFC36;		// RID_FC36_cnfTPCFactor
	RidStruct.length = 2;
	RidStruct.u.data[0] = (USHORT)nTPCFactor;
	if(SetWin32NDISOid(pWLAdapterInfoIn, OID_ZD_SETRID, &RidStruct, (DWORD)sizeof(RID_STRUCT)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::SetWL_TxPowerSetPoint(PWLADAPTERINFO pWLAdapterInfoIn, char *pcTPCSetPointBuf)
{

	RID_STRUCT	RidStruct;

	RidStruct.rid = 0xFC37;		// RID_FC37_cnfTPCSetPoint
	RidStruct.length = 8;
	memcpy(RidStruct.u.data, pcTPCSetPointBuf, 14);
	if(SetWin32NDISOid(pWLAdapterInfoIn, OID_ZD_SETRID, &RidStruct, (DWORD)sizeof(RID_STRUCT)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::QueryWL_TxPowerSetPoint(PWLADAPTERINFO pWLAdapterInfoIn, char *pcTPCSetPointBuf)
{
	RID_STRUCT	RidStruct;

	RidStruct.rid = 0xFC37;		// RID_FC37_cnfTPCSetPoint
	RidStruct.length = 8;
	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_ZD_GETRID, &RidStruct, (DWORD)sizeof(RID_STRUCT)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;
	memcpy(pcTPCSetPointBuf, RidStruct.u.data, 14);

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::SetWL_TxPowerIntegrationValue(PWLADAPTERINFO pWLAdapterInfoIn, char *pcTPCIntegrationValueBuf)
{

	RID_STRUCT	RidStruct;

	RidStruct.rid = 0xFC38;		// RID_FC38_cnfTPCInitValue
	RidStruct.length = 8;
	memcpy(RidStruct.u.data, pcTPCIntegrationValueBuf, 14);
	if(SetWin32NDISOid(pWLAdapterInfoIn, OID_ZD_SETRID, &RidStruct, (DWORD)sizeof(RID_STRUCT)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::QueryWL_TxPowerIntegrationValue(PWLADAPTERINFO pWLAdapterInfoIn, char *pcTPCIntegrationValueBuf)
{

	RID_STRUCT	RidStruct;

	RidStruct.rid = 0xFC38;		// RID_FC38_cnfTPCInitValue
	RidStruct.length = 8;
	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_ZD_GETRID, &RidStruct, (DWORD)sizeof(RID_STRUCT)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;
	memcpy(pcTPCIntegrationValueBuf, RidStruct.u.data, 14);

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::SetWL_ResetCard(PWLADAPTERINFO pWLAdapterInfoIn)
{
	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::SetWL_RestartNIC(PWLADAPTERINFO pWLAdapterInfoIn)
{
	TRACE( "SetWL_RestartNIC()\n" );

	SetWL_DisableNIC(pWLAdapterInfoIn);
	Sleep(100);
	SetWL_EnableNIC(pWLAdapterInfoIn);

	return ZDNDIS_SUCCESS;
}

INT CZDWlanAdapter::QueryWL_NetworkType(PWLADAPTERINFO pWLAdapterInfoIn)
{

	RID_STRUCT	RidStruct;

	RidStruct.rid = RID_CFG_PORT_TYPE;	// Port Type ==> FC00
	RidStruct.length = 2;
	if(QueryWin32NDISOid(pWLAdapterInfoIn, OID_ZD_GETRID, &RidStruct, sizeof(RidStruct)) == ZDNDIS_FAIL) {
		return ZDNDIS_FAIL;
	}

	//if(RidStruct.u.data[0] > 3)
	//	return ZDNDIS_FAIL;

	return (int)(RidStruct.u.data[0]);
}

INT CZDWlanAdapter::SetWL_NetworkType(PWLADAPTERINFO pWLAdapterInfoIn, int nNetworkType)
{
//----------------------------------------------------------------------
#if _ACCESS_VIA_802_11_OID == 1

	NDIS_802_11_NETWORK_INFRASTRUCTURE ZDNetworkType;

	ZDNetworkType = (NDIS_802_11_NETWORK_INFRASTRUCTURE)nNetworkType;

	//if(WriteOid(pWLAdapterInfoIn, (DWORD)OID_802_11_INFRASTRUCTURE_MODE, (PVOID)&ZDNetworkType, (DWORD)sizeof(NDIS_802_11_NETWORK_INFRASTRUCTURE)) == ZDNDIS_FAIL)
	if(SetWin32NDISOid(pWLAdapterInfoIn, (DWORD)OID_ZD_802_11_INFRASTRUCTURE_MODE, (PVOID)&ZDNetworkType, (DWORD)sizeof(NDIS_802_11_NETWORK_INFRASTRUCTURE)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	return ZDNDIS_SUCCESS;

//----------------------------------------------------------------------
#else

	RID_STRUCT	RidStruct;

	RidStruct.rid = RID_CFG_PORT_TYPE;	// Port Type (FC00)
	RidStruct.length = 2;
	RidStruct.u.data[0] = (USHORT)nNetworkType;
	if(SetWin32NDISOid(pWLAdapterInfoIn, (DWORD) OID_ZD_SETRID,(PVOID) &RidStruct,(DWORD)sizeof(RID_STRUCT)) == ZDNDIS_FAIL)
		return ZDNDIS_FAIL;

	//SetWL_RestartNIC(pWLAdapterInfoIn);
	return ZDNDIS_SUCCESS;
//----------------------------------------------------------------------
#endif
}

INT CZDWlanAdapter::QueryWL_BSSID(PWLADAPTERINFO pWLAdapterInfoIn, char *csBSSID_Buffer)
{

//----------------------------------------------------------------------
#if _ACCESS_VIA_802_11_OID == 1

	NDIS_802_11_MAC_ADDRESS cBssid;

⌨️ 快捷键说明

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