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

📄 miscproc.c

📁 Windows CE 6.0 BSP for VOIP sample phone. Intel PXA270 platform.
💻 C
📖 第 1 页 / 共 5 页
字号:
       PCF_OBJECT  pCf = (PCF_OBJECT)Adapter->hwIface;
	//int i;
	//CmdCtrlNode *TempCmdArray;

	if( Adapter->CurPowerState == NewPowerState )
		return NDIS_STATUS_SUCCESS;

#ifdef HOST_WAKEUP
	if (Adapter->bHostWakeCfgSet == 1)
		return NDIS_STATUS_SUCCESS;	
#endif	

	switch( Adapter->CurPowerState )
	{

	case NdisDeviceStateD0:   // D0->D3

//AllenDBGPRINT(1,("D0->D3 >>> Enter \n"));

//RETAILMSG(1, (TEXT("D0->D3 >>> Enter")));

		InfraBssReconnectStop(Adapter);

		Adapter->bIsEnterD3 = TRUE;

              if (Adapter->MediaConnectStatus == NdisMediaStateConnected)
       	{
       		
			USHORT  	usCommand;
		  
			if  (Adapter->psState != PS_STATE_FULL_POWER)
				PSWakeup( Adapter);

            		if ( Adapter->InfrastructureMode == Ndis802_11Infrastructure )
              		usCommand = HostCmd_CMD_802_11_DEAUTHENTICATE;
            		else
                		usCommand = HostCmd_CMD_802_11_AD_HOC_STOP;

            		// completely clean up
			PrepareAndSendCommand(
							Adapter,
							usCommand,
							0,
							HostCmd_OPTION_USE_INT,
							(NDIS_OID)0,
							HostCmd_PENDING_ON_NONE,
							0,
							FALSE,
							NULL,
							NULL,
							NULL,
							Adapter->CurrentBSSID);	

			Adapter->MediaConnectStatus = NdisMediaStateDisconnected;		

			NdisMIndicateStatus( Adapter->MrvDrvAdapterHdl,
			    				NDIS_STATUS_MEDIA_DISCONNECT,
							(PVOID)NULL,
							0); 	
    	       	        NdisMIndicateStatusComplete(Adapter->MrvDrvAdapterHdl);

        	}

              {
      			int jj;

		       for (jj=0; jj<1000; jj++)
			   	
				NdisMSleep(1000); 
		
              }

        	NdisZeroMemory(&Adapter->PreviousSSID, sizeof(NDIS_802_11_SSID));

    		{
 		
			// Memorize the previous SSID and BSSID
			NdisMoveMemory(  &(Adapter->PreviousSSID), 
							&(Adapter->CurrentSSID), 
							sizeof(NDIS_802_11_SSID));
			
//RETAILMSG(1, (TEXT("indicate NDIS_STATUS_MEDIA_DISCONNECT  3\r\n")));        

                   ResetAdapterObject (Adapter);

			Adapter->MediaConnectStatus = NdisMediaStateDisconnected;
    	              Adapter->ulCurrentBSSIDIndex =0;
    	              Adapter->LinkSpeed = MRVDRV_LINK_SPEED_1mbps; //do not set to 0mbps

	    	       Adapter->ulLastMICErrorTime = 0;
				   
                     Adapter->EncryptionStatus = Ndis802_11EncryptionDisabled;			
						
			Adapter->psState = PS_STATE_FULL_POWER;
		}			
		
   		Adapter->bIsInDPC = FALSE;	  

		if (Adapter->bAvoidScanAfterConnectedforMSecs == TRUE)  
		{	
			BOOLEAN  timerStatus;

			NdisMCancelTimer(&Adapter->MrvDrvAvoidScanAfterConnectedTimer, &timerStatus);
			Adapter->bAvoidScanAfterConnectedforMSecs=FALSE;
		}

              ResetCmdBuffer(Adapter);

 		Adapter->bIsScanInProgress = FALSE;
		Adapter->bIsAssociateInProgress = FALSE;
		
//RETAILMSG(1, (TEXT("D0->D3 >>> Exit")));
//AllenDBGPRINT(1,("D0->D3 >>> Exit \n"));


		break;

	case NdisDeviceStateD1:
	case NdisDeviceStateD2:
	
	
		break;
	
    	case NdisDeviceStateD3:  // D3->D0
		

 		DBGPRINT(DBG_LOAD| DBG_SP,("D3->D0\n"));
//AllenDBGPRINT(1,("D3->D0 >>> \n"));
		
//RETAILMSG(1, (TEXT("D3->D0 >>> ")));

     Adapter->bIsEnterD3 = FALSE;

        	// see if this is the problem
        	// NdisFillMemory(Adapter->CurrentAddr, MRVDRV_ETH_ADDR_LEN, 0xff);

    		ixStatus = cf_IsFirmwareLoaded( Adapter->hwIface );
			
//RETAILMSG(1, (TEXT("ixStatus 0x%x >>> "), ixStatus));


		if ( ixStatus == IX_STATUS_FAILURE )
		{
	    		// we could do a hardware reset here on the card to try to restart
	    		// the boot loader.
	    		return NDIS_STATUS_FAILURE;
		} 
		else if ( ixStatus == IX_STATUS_HOST_BOOT_READY )
		{

        		ixStatus = cf_DownloadHelperImage((PCF_OBJECT)Adapter->hwIface, Adapter);

        		if (ixStatus != NDIS_STATUS_SUCCESS)
        		{
            			return NDIS_STATUS_FAILURE;
        		}

        		ixStatus = cf_DownloadFWImageHelperMode((PCF_OBJECT)Adapter->hwIface, Adapter);

        		if (ixStatus != NDIS_STATUS_SUCCESS)
        		{
            			DBGPRINT(DBG_LOAD| DBG_SP, ("Download Helper Image failed!\n"));
            			return NDIS_STATUS_FAILURE;
        		}

			bFwReloaded = TRUE;
		} 
    		else if (ixStatus == IX_STATUS_BOOT_READY)
		{
			return NDIS_STATUS_FAILURE;
        	}          
	    	else
		{
	    		DBGPRINT(DBG_LOAD | DBG_SP,("Firmware aleady running!\n"));
		}

		// InitAdapterObject(Adapter);
		// Adapter->ListBufferLen = 0;
		// Adapter->ulPSNumOfBSSIDs = 0;

        	// Enable INT
		EnableInterrupt(Adapter); 
       
        	// indicate to OS that the network is not connected
        	// NdisMSetTimer(&Adapter->MrvDrvIndicateConnectStatusTimer, 100);
        	// Adapter->DisconnectTimerSet = TRUE;

        	//----------------------------------------------------------------------------
        	// If the FW required reloading, then we have to kick start the receiver again.
        	//----------------------------------------------------------------------------
              
              {
			Adapter->RadioOn = TRUE;
			PrepareAndSendCommand(
						Adapter,				
						HostCmd_CMD_802_11_RADIO_CONTROL,
						HostCmd_ACT_GEN_SET,
						HostCmd_OPTION_USE_INT,
						(NDIS_OID)0,     //OID_MRVL_ENABLE_RADIO,
						HostCmd_PENDING_ON_NONE,
						0,
						FALSE,
						NULL,
						NULL,
						NULL,
						NULL);		
		}
				
		// completely clean up
		//InitializeWirelessConfig(Adapter);

		{
			USHORT usCommand;
			usCommand = HostCmd_CMD_802_11_DEAUTHENTICATE;
            		
            		// completely clean up
			PrepareAndSendCommand(
							Adapter,
							usCommand,
							0,
							HostCmd_OPTION_USE_INT,
							(NDIS_OID)0,
							HostCmd_PENDING_ON_NONE,
							0,
							FALSE,
							NULL,
							NULL,
							NULL,
							Adapter->CurrentBSSID);	

		}


	      {
		        PVOID InfoBuffer = NULL;

    		        DBGPRINT(DBG_LOAD ,("Init: Setting fragmentation threshold to %d\n", Adapter->FragThsd ));
		        PrepareAndSendCommand(
						Adapter,
						HostCmd_CMD_802_11_SNMP_MIB,
						0,
						HostCmd_OPTION_USE_INT,
						(NDIS_OID)OID_802_11_FRAGMENTATION_THRESHOLD,
						HostCmd_PENDING_ON_NONE,
						0,
						FALSE,
						NULL,
						NULL,
						NULL,
						NULL);

    		        DBGPRINT(DBG_LOAD ,("Init: Setting RTS threshold to %d\n", Adapter->RTSThsd ));
		        PrepareAndSendCommand(
						Adapter,
						HostCmd_CMD_802_11_SNMP_MIB,
						0,
						HostCmd_OPTION_USE_INT,
						(NDIS_OID)OID_802_11_RTS_THRESHOLD,
						HostCmd_PENDING_ON_NONE,
						0,
						FALSE,
						NULL,
						NULL,
						NULL,
						NULL);
   
		        PrepareAndSendCommand(
						Adapter,
						HostCmd_CMD_MAC_CONTROL,
						Adapter->usMacControlRecord,
						HostCmd_OPTION_USE_INT,
						0,
						HostCmd_PENDING_ON_NONE,
						0,
						FALSE,
						NULL,
						NULL,
						NULL,
						NULL);

	      
		        // BT Co-existence
    		        if ( Adapter->BTMode != 0 )
    		        {
       		        // only send command if BT mode is not 0
       		        DBGPRINT(DBG_LOAD, ("Setting BT Mode parameters:\n"));
        		        DBGPRINT(DBG_LOAD, ("BTMode=0x%x, Antenna Config = 0x%x, Freq Config = 0x%x\n",
              		  		        	Adapter->BTMode, Adapter->BTAntennaConfig, Adapter->BTFrequencyConfig));
        		        DBGPRINT(DBG_LOAD, ("TX Lo = 0x%x, TX Hi = 0x%x, RX Lo = 0x%x, RX Hi = 0x%x\n",
    	    							Adapter->BTWLANTxPriorityLo, Adapter->BTWLANTxPriorityHi,
        							Adapter->BTWLANRxPriorityLo, Adapter->BTWLANRxPriorityHi));

        		        PrepareAndSendCommand(
							Adapter,
							HostCmd_CMD_BCA_CONFIG,
							HostCmd_ACT_GEN_SET,
							HostCmd_OPTION_USE_INT,
							0,
							HostCmd_PENDING_ON_NONE,
							0,
							FALSE,
							NULL,
							NULL,
							NULL,
							NULL );  	

        			NdisMSleep(10000);
    		        }

	        }

	       // Adapter->bIsD3ToD0reconnect = TRUE;
               //InfraBssReconnectStart ( Adapter, RECONNECT_D3_TO_D0);
//		AllenDBGPRINT(1,("D3->D0 <<< \n"));

	    	break;

	default :

	       break;
    	}
    
	Adapter->CurPowerState = NewPowerState;

	//RETAILMSG(1, (TEXT("Adapter->CurPowerState = %d\n"), Adapter->CurPowerState));
	
	return NDIS_STATUS_SUCCESS;
}


/*
===============================================================================
                           CODED PRIVATE PROCEDURES
===============================================================================
*/

VOID
ResetDisconnectStatus(
	IN PMRVDRV_ADAPTER Adapter
)
{
//       RETAILMSG(1, (TEXT("ResetDisconnectStatus() \r\n")));
	   
    	DBGPRINT(DBG_CMDRESP, ("Connection reset!\n"));

#ifdef TT_WEP_1
	TurnOnWepBit( Adapter, FALSE );
#endif

#ifdef BG_SCAN
    	if ( Adapter->bBgScanEnabled==TRUE)
    	{    
       	EnableBgScan( Adapter, FALSE);
      	}
 #endif 	 	

       if (Adapter->CurrentSSID.SsidLength != 0)
       {
       	NdisMoveMemory(&Adapter->PreviousSSID, &Adapter->CurrentSSID,
					sizeof(NDIS_802_11_SSID));
       }

       //NdisZeroMemory(&(Adapter->CurrentSSID), sizeof(NDIS_802_11_SSID));
    	//NdisZeroMemory(Adapter->CurrentBSSID, MRVDRV_ETH_ADDR_LEN);  
    	//NdisZeroMemory(&(Adapter->CurrentBSSIDDesciptor), sizeof(NDIS_WLAN_BSSID_EX));  

	if ( (Adapter->psState != PS_STATE_FULL_POWER) &&
	     (Adapter->MediaConnectStatus == NdisMediaStateConnected ))
    	{
		//Adapter->psState = PS_STATE_FULL_POWER;		
      		PSWakeup(Adapter);
    	}
		
    	Adapter->MediaConnectStatus = NdisMediaStateDisconnected;
    	Adapter->ulCurrentBSSIDIndex =0;
    	Adapter->LinkSpeed = MRVDRV_LINK_SPEED_1mbps; //do not set to 0mbps

	if ((Adapter->bIsReconnectEnable == FALSE) && 
	    (Adapter->bIsBeaconLoseEvent == FALSE) &&
	    (Adapter->bIsDeauthenticaticationEvent == FALSE) &&
	    (Adapter->bIsD3ToD0reconnect == FALSE)
#ifdef ACTIVE_ROAMING
	     && (Adapter->bIsActiveRoaming == FALSE)
#endif
		)
	{
	//		RETAILMSG(1, (TEXT("indicate NDIS_STATUS_MEDIA_DISCONNECT  4\r\n")));          

		NdisMIndicateStatus( Adapter->MrvDrvAdapterHdl,
					NDIS_STATUS_MEDIA_DISCONNECT,
					(PVOID)NULL,
					0); 	
    		NdisMIndicateStatusComplete(Adapter->MrvDrvAdapterHdl);
	}
	
    	Adapter->ulLastMICErrorTime = 0;
    
       if ((Adapter->bIsReconnectEnable == FALSE) && 
	    (Adapter->bIsBeaconLoseEvent == FALSE) &&
	    (Adapter->bIsDeauthenticaticationEvent == FALSE) &&
	    (Adapter->bIsD3ToD0reconnect == FALSE)
#ifdef ACTIVE_ROAMING
	     &&(Adapter->bIsActiveRoaming == FALSE)
#endif
	   )
	{

//RETAILMSG(1, (TEXT("change  EncryptionStatus %d\r\n"), Adapter->EncryptionStatus));      
//RETAILMSG(1, (TEXT("change  ReEncryptionStatus %d\r\n"), Adapter->ReEncryptionStatus));      
				
    	    	if ( (Adapter->EncryptionStatus == Ndis802_11Encryption2Enabled )  ||	
                   (Adapter->EncryptionStatus == Ndis802_11Encryption2KeyAbsent))          // wpa
    	    	{
       		// set to key absent
        		Adapter->EncryptionStatus = Ndis802_11Encryption2KeyAbsent;
    	    	}
    	    	else if ( (Adapter->EncryptionStatus == Ndis802_11Encryption3Enabled ) || 
			     (Adapter->EncryptionStatus == Ndis802_11Encryption3KeyAbsent))   // wpa2
    	    	{
       		// set to key absent
        		Adapter->EncryptionStatus = Ndis802_11Encryption3KeyAbsent;
    	    	}
    		else if ( (Adapter->EncryptionStatus == Ndis802_11Encryption1Enabled ) ||
			     (Adapter->EncryptionStatus == Ndis802_11Encryption1KeyAbsent ))     // wep
    		{
       		// set to key absent
              	Adapter->EncryptionStatus = Ndis802_11Encryption1KeyAbsent;
    		}
       }
	
	NdisZeroMemory(Adapter->SNR,  	sizeof(Adapter->SNR));
	NdisZeroMemory(Adapter->NF,  	sizeof(Adapter->NF));
	NdisZeroMemory(Adapter->RSSI,  	sizeof(Adapter->RSSI));
	NdisZeroMemory(Adapter->rawSNR, sizeof(Adapter->rawSNR));
	NdisZeroMemory(Adapter->rawNF,  	sizeof(Adapter->rawNF));
	Adapter->numSNRNF = 0;
	Adapter->nextSNRNF = 0;

    	return;
}	


VOID
ResetSingleTxDoneAck(
	IN PMRVDRV_ADAPTER Adapter
)
{
	
}	

/******************************************************************************
 *

⌨️ 快捷键说明

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