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

📄 cmdsend.c

📁 Windows CE 6.0 BSP for VOIP sample phone. Intel PXA270 platform.
💻 C
📖 第 1 页 / 共 5 页
字号:
			return NDIS_STATUS_SUCCESS;
   	    	}		
	case HostCmd_CMD_802_11_SET_WEP:

		{
			pSetWEP = (PHostCmd_DS_802_11_SET_WEP)pCmdPtr;
			pNewWEP = (PNDIS_802_11_WEP)InformationBuffer;
			
			Size = (USHORT)(sizeof(HostCmd_DS_802_11_SET_WEP));

			SetupWepKeys( PendingOID,
						   pSetWEP, 
						   pNewWEP,
						   InformationBuffer,
						   Adapter,
						   CmdOption);
	
			break;
		}

	case HostCmd_CMD_802_11_SNMP_MIB:

		{
			switch (PendingOID)
			{
				case OID_802_11_INFRASTRUCTURE_MODE:
				{
					Size = (USHORT)(sizeof(HostCmd_DS_802_11_SNMP_MIB));
					pSNMPMIB = (PHostCmd_DS_802_11_SNMP_MIB)pCmdPtr;
					pSNMPMIB->QueryType = HostCmd_ACT_GEN_SET;
					pSNMPMIB->OID = (USHORT)DesiredBssType_i; // InfrastructureMode Index = 0
					pSNMPMIB->BufSize = sizeof(UCHAR);
				
					if( Adapter->InfrastructureMode == Ndis802_11Infrastructure )
						ucTemp = 1; // Infrastructure mode
					else
						ucTemp = 2; // Ad hoc mode
				
					NdisMoveMemory(pSNMPMIB->Value, &ucTemp, sizeof(UCHAR));				
					break;
				} 	
			
				case OID_802_11_FRAGMENTATION_THRESHOLD:
				{
					NDIS_802_11_FRAGMENTATION_THRESHOLD ulTemp;
					USHORT usTemp;
				
					Size = (USHORT)(sizeof(HostCmd_DS_802_11_SNMP_MIB));
					pSNMPMIB = (PHostCmd_DS_802_11_SNMP_MIB)pCmdPtr;
					pSNMPMIB->OID = (USHORT)FragThresh_i; 
					
					if(PendingInfo==HostCmd_PENDING_ON_GET_OID){
						pSNMPMIB->QueryType = HostCmd_ACT_GEN_GET;
					}
					else if(PendingInfo==HostCmd_PENDING_ON_SET_OID){
						pSNMPMIB->QueryType = HostCmd_ACT_GEN_SET;
						pSNMPMIB->BufSize = sizeof(USHORT);
						ulTemp=*((NDIS_802_11_FRAGMENTATION_THRESHOLD *)InformationBuffer);
						*((PUSHORT)(pSNMPMIB->Value))=(USHORT)ulTemp;
						DBGPRINT(DBG_OID,("OID: Setting Fragmentation threshold to %d\n", ulTemp ));
					}
					else if(PendingInfo==HostCmd_PENDING_ON_NONE){
						pSNMPMIB->QueryType = HostCmd_ACT_GEN_SET;
						pSNMPMIB->BufSize = sizeof(USHORT);
						usTemp=(USHORT)Adapter->FragThsd;
						NdisMoveMemory(pSNMPMIB->Value, &usTemp, sizeof(USHORT));
					}												
					break;					
				}	
			
				case OID_802_11_RTS_THRESHOLD:
				{
					USHORT usTemp;
					NDIS_802_11_RTS_THRESHOLD ulTemp;
				
					Size = (USHORT)(sizeof(HostCmd_DS_802_11_SNMP_MIB));
					pSNMPMIB = (PHostCmd_DS_802_11_SNMP_MIB)pCmdPtr;
					pSNMPMIB->OID = (USHORT)RtsThresh_i; 
			
					if(PendingInfo==HostCmd_PENDING_ON_GET_OID){
						pSNMPMIB->QueryType = HostCmd_ACT_GEN_GET;
					}
					else if(PendingInfo==HostCmd_PENDING_ON_SET_OID){
						pSNMPMIB->QueryType = HostCmd_ACT_GEN_SET;
						pSNMPMIB->BufSize = sizeof(USHORT);
						ulTemp=*((NDIS_802_11_RTS_THRESHOLD *)InformationBuffer);
						*((PUSHORT)(pSNMPMIB->Value))=(USHORT)ulTemp;
						DBGPRINT(DBG_OID,("OID: Setting RTS threshold to %d\n", ulTemp ));
					}
					else if(PendingInfo==HostCmd_PENDING_ON_NONE){
						pSNMPMIB->QueryType = HostCmd_ACT_GEN_SET;
						pSNMPMIB->BufSize = sizeof(USHORT);
						usTemp=(USHORT)Adapter->RTSThsd;
						NdisMoveMemory(pSNMPMIB->Value, &usTemp, sizeof(USHORT));
					}				
					break;		
				}					
		
#ifdef ENABLE_802_11D
	                     case OID_802_11D_ENABLE:
		              {
		                     USHORT	usTemp;

			              Size = (USHORT)(sizeof(HostCmd_DS_802_11_SNMP_MIB));
			              pSNMPMIB = (PHostCmd_DS_802_11_SNMP_MIB)pCmdPtr;
			              pSNMPMIB->OID = Dot11D_i;

			              pSNMPMIB->QueryType = HostCmd_ACT_GEN_SET;
			              pSNMPMIB->BufSize = sizeof(USHORT);
			              usTemp = *(USHORT*) InformationBuffer;
			              *((USHORT *) (pSNMPMIB->Value)) = usTemp;
	
			             
		              }
				 break;		 
#endif	
				default:
					break;
                     }
		}	
		break;		
		
	case HostCmd_CMD_802_11_AUTHENTICATE:
		{
            		UCHAR ucAuth;

			Size = (USHORT)(sizeof(HostCmd_DS_802_11_AUTHENTICATE));
			pAuthenticate = (PHostCmd_DS_802_11_AUTHENTICATE) pCmdPtr;

			// if the authentication type need to be determined at initialization time
			// if (PendingInfo == HostCmd_PENDING_ON_NONE)
            		// {
				ucAuth = (UCHAR)Adapter->AuthenticationMode;					
			// }	
			// else
            		// {
              	//	 ucAuth = (UCHAR) (*((PNDIS_802_11_AUTHENTICATION_MODE) InformationBuffer));
            		// }

            		switch (ucAuth)
            		{
            			case Ndis802_11AuthModeWPAPSK:
            			case Ndis802_11AuthModeWPA:
            			case Ndis802_11AuthModeOpen:
                            case Ndis802_11AuthModeWPA2:       
    				case Ndis802_11AuthModeWPA2PSK:	
						DBGPRINT(DBG_OID, ("Set Authentication type : %d\n",	ucAuth));	
						pAuthenticate->AuthType = 0;  // open authentication
              				break;

            			case Ndis802_11AuthModeShared:

                                          DBGPRINT(DBG_OID, ("Set Authentication type : %d\n",	ucAuth));
						pAuthenticate->AuthType = 1;  // shared authentication
                				break;

            			default:
               				DBGPRINT(DBG_WARNING, ("Received unsupported authentication mode: %d\n",	ucAuth));
               				return NDIS_STATUS_FAILURE;
            		}

			// set AP MAC address
			// NdisMoveMemory(pAuthenticate->MacAddr, Adapter->CurrentBSSID, MRVDRV_ETH_ADDR_LEN);
			NdisMoveMemory(pAuthenticate->MacAddr, InformationBuffer, MRVDRV_ETH_ADDR_LEN);

		       ///HexDump(DBG_OID, "pAuthenticate->MacAddr:", pAuthenticate->MacAddr, MRVDRV_ETH_ADDR_LEN);

			break;
		}
		
        case HostCmd_CMD_802_11_ASSOCIATE_EXT:
	 case HostCmd_CMD_802_11_ASSOCIATE:
	 case HostCmd_CMD_802_11_REASSOCIATE:

			{
            	              //Size = (USHORT)(sizeof(HostCmd_DS_802_11_ASSOCIATE_EXT));
				pAsso = (PHostCmd_DS_802_11_ASSOCIATE_EXT)pCmdPtr;

            			if ( Adapter->bIsAssociateInProgress == TRUE )
            			{
                			DBGPRINT(DBG_CMDRESP | DBG_WARNING, 
                    						("There is already an association command pending, "
                     					 "fail the current request!\n"));

				  	ReturnCmdNode( Adapter, pTempCmd);

					if (Adapter->bIsReconnectEnable == TRUE)	
					{
//					       RETAILMSG(1, (TEXT("Adapter->bIsReConnectNow = FALSE  1  \r\n")));	
						Adapter->bIsReConnectNow = FALSE;
					}
					Adapter->bIsSystemConnectNow = FALSE;
							
                			return NDIS_STATUS_NOT_ACCEPTED;
            			}
			
				Status = SetupAssociationExt(
								(PHostCmd_DS_802_11_ASSOCIATE_EXT)pCmdPtr, 
								PendingInfo, 
								Adapter, 
								pTempCmd, 
								InformationBuffer
								);

                                Size = pAsso->Size;
			  
				if (Status != NDIS_STATUS_SUCCESS)
				{
					DBGPRINT(DBG_CMDRESP , (" fail the current request! \n "));

					ReturnCmdNode( Adapter, pTempCmd);

					if (Adapter->bIsReconnectEnable == TRUE)
					{
//RETAILMSG(1, (TEXT("Adapter->bIsReConnectNow = FALSE  2  \r\n")));
						Adapter->bIsReConnectNow = FALSE;
					}
					Adapter->bIsSystemConnectNow = FALSE;

					return Status;
				}

#ifdef TLV_ASSOCIATE
            			DBGPRINT(DBG_CMDRESP,("HWAC - ASSOCIATION_EXT command to %2x-%2x-%2x-"
                    			   				      "%2x-%2x-%2x is ready\n",
                    					    		      pAsso->PeerStaAddr[0],
                    					    		      pAsso->PeerStaAddr[1],
                    					    		      pAsso->PeerStaAddr[2],
                    					    		      pAsso->PeerStaAddr[3],
                    					    		      pAsso->PeerStaAddr[4],
                    					    		      pAsso->PeerStaAddr[5]));
#else
				DBGPRINT(DBG_CMDRESP,("HWAC - ASSOCIATION_EXT command to %2x-%2x-%2x-"
                    							      "%2x-%2x-%2x is ready\n",
                    							      pAsso->DestMacAddr[0],
                    							      pAsso->DestMacAddr[1],
                    							      pAsso->DestMacAddr[2],
                    							      pAsso->DestMacAddr[3],
                    							      pAsso->DestMacAddr[4],
                    							      pAsso->DestMacAddr[5]));
#endif
				///HexDump(DBG_CMDRESP, "ASSOCIATE_EXT Command: ", (UCHAR *)pCmdPtr, Size);

            			break;
			}
			
	case HostCmd_CMD_802_11_AD_HOC_START:

			{
				Size = (USHORT)(sizeof(HostCmd_DS_802_11_AD_HOC_START));
				pAdHocStart = (PHostCmd_DS_802_11_AD_HOC_START)pCmdPtr;

				if (Adapter->ulPSNumOfBSSIDs >= MRVDRV_MAX_BSSID_LIST)
				{
					ReturnCmdNode(Adapter, pTempCmd); 
					return NDIS_STATUS_FAILURE;
				}

				SetupAdHocStart(  pAdHocStart,
								PendingInfo,
								Adapter, 
								pTempCmd,
								InformationBuffer
								);

				DBGPRINT(DBG_CMDRESP,("HWAC - AD HOC Start command is ready\n"));
			
				break;
			}	

	case HostCmd_CMD_802_11_AD_HOC_JOIN:
			{
				// The command structure is HostCmd_CMD_802_11_AD_HOC_JOIN
				Size = (USHORT)(sizeof(HostCmd_DS_802_11_AD_HOC_JOIN));
				pAdHocJoin = (PHostCmd_DS_802_11_AD_HOC_JOIN)pCmdPtr;

				Status = SetupAdHocJoin( pAdHocJoin,
									   PendingInfo,
									   Adapter, 
									   pTempCmd,
									   InformationBuffer
									   );
				if (Status != NDIS_STATUS_SUCCESS)
				{
					ReturnCmdNode(Adapter, pTempCmd); 
				}
			
				DBGPRINT(DBG_CMDRESP,("HWAC - AD HOC Join command is ready\n"));
			}
			break;

	case HostCmd_CMD_802_11_DEAUTHENTICATE:
	case HostCmd_CMD_802_11_DISASSOCIATE:

			{
		       	if (Cmd == HostCmd_CMD_802_11_DEAUTHENTICATE)
		       	{
					Size = (USHORT)(sizeof(HostCmd_DS_802_11_DEAUTHENTICATE));
			    		pDeAuthenticate = (PHostCmd_DS_802_11_DEAUTHENTICATE) pCmdPtr;

			    		// set AP MAC address
			    		NdisMoveMemory( pDeAuthenticate->MacAddr, InformationBuffer, MRVDRV_ETH_ADDR_LEN);
			
			    		// Reason code 3 = Station is leaving
			    		pDeAuthenticate->ReasonCode = 3;
#ifdef BG_SCAN
    	      				if ( Adapter->bBgScanEnabled==TRUE&&Adapter->bBgDeepSleep==FALSE)
    	      				{
    	           				EnableBgScan( Adapter, FALSE); 
    	             	      				}
#endif 	
					if (Adapter->bAvoidScanAfterConnectedforMSecs == TRUE)  
					{
						NdisMCancelTimer(&Adapter->MrvDrvAvoidScanAfterConnectedTimer, &timerStatus);
						Adapter->bAvoidScanAfterConnectedforMSecs=FALSE;
					}
       	
		    		}
		    		else if (Cmd == HostCmd_CMD_802_11_DISASSOCIATE)
		    		{			
			    		Size = (USHORT)(sizeof(HostCmd_DS_802_11_DISASSOCIATE));
			    		pDisasso = (PHostCmd_DS_802_11_DISASSOCIATE)pCmdPtr;
			    		NdisMoveMemory( pDisasso->DestMacAddr, InformationBuffer, MRVDRV_ETH_ADDR_LEN);
			    		pDisasso->ReasonCode = 3;
						
//RETAILMSG(1, (TEXT("HostCmd_CMD_802_11_DISASSOCIATE \r\n ")));	
//
//        {     ULONG i;
//			
//		RETAILMSG(1, (TEXT("Adapter->CurrentBSSID  \r\n")));	
//			
//		for (i=0; i<6; i++)
//		{
//                  RETAILMSG(1, (TEXT("%02x  "), Adapter->CurrentBSSID[i] ));
//			if (((i %16) == 0) && i)
//				RETAILMSG(1, (TEXT("\r\n")));
//			
//		}
//		RETAILMSG(1, (TEXT("\r\n")));		
//	 }	



		
		    		}
					
		    		//  need to clean up Rx and Tx first
///		    		CleanUpSingleTxBuffer(Adapter);
///		    		ResetRxPDQ(Adapter);
			}
			break;

	case HostCmd_CMD_802_11_RF_ANTENNA:

			{
				Size = (USHORT)(sizeof(HostCmd_DS_802_11_RF_ANTENNA));
				pAntenna = (PHostCmd_DS_802_11_RF_ANTENNA)pCmdPtr;		
				pAntenna->Action = CmdOption;		
			
				if ((CmdOption ==HostCmd_ACT_SET_RX) || (CmdOption==HostCmd_ACT_SET_TX))
					pAntenna->AntennaMode=(USHORT)(*(NDIS_802_11_ANTENNA *)InformationBuffer);
				break;
			}
			
	case HostCmd_CMD_802_11_RF_TX_POWER:
			{		
				Size = (USHORT)(sizeof(HostCmd_DS_802_11_RF_TX_POWER));
				pRTP = (PHostCmd_DS_802_11_RF_TX_POWER)pCmdPtr;
		
		    		if ( InformationBuffer != NULL )
            			{
                			// OID command
                			switch (CmdOption)
                			{
						case HostCmd_ACT_TX_POWER_OPT_SET :
						{
							ULONG  usDesiredPowerInDbm = *((ULONG *)InformationBuffer);

#ifdef MRV_CHIP_8385PN
							if ( (usDesiredPowerInDbm < 5) || (usDesiredPowerInDbm > 17) )
#elif defined(MRV_CHIP_8381PN)
							if ( (usDesiredPowerInDbm < 0) || (usDesiredPowerInDbm > 15) )
#elif defined(MRV_CHIP_8381P)
							if ( (usDesiredPowerInDbm < 0) || (usDesiredPowerInDbm > 15) )
#elif defined(MRV_CHIP_8305)
							if ( (usDesiredPowerInDbm < 3) || (usDesiredPowerInDbm > 19) )

⌨️ 快捷键说明

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