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

📄 cmdsend.c

📁 此压缩包为杰得开发得z228的BSP的源代码,可以实现很多功能,尤其是视频解码有很好的效果.
💻 C
📖 第 1 页 / 共 5 页
字号:
#ifdef CAL_DATA
	case HostCmd_CMD_802_11_CAL_DATA_EXT:
		//TT_CMDPARSE_SEND_CMD_VAR_LEN( HostCmd_DS_802_11_CAL_DATA_EXT, OID_MRVL_DS_CAL_DATA_EXT, 
		//	Revision, CalDataLen, 
		//	sizeof(OID_MRVL_DS_CAL_DATA_EXT)-sizeof(NDIS_OID)-1024 );
		TT_CMDPARSE_SEND_CMD( HostCmd_DS_802_11_CAL_DATA_EXT, OID_MRVL_DS_CAL_DATA_EXT, Revision );
		break;
	case HostCmd_CMD_802_11_CAL_DATA:
		TT_CMDPARSE_SEND_CMD( HostCmd_DS_802_11_CAL_DATA, OID_MRVL_DS_CAL_DATA, Reserved1[0] );
		break;
#endif //CAL_DATA

	case HostCmd_CMD_802_11_PWR_CFG:
		TT_CMDPARSE_SEND_CMD( HostCmd_DS_802_11_PWR_CFG, OID_MRVL_DS_PWR_CFG, Enable );
		break;

	case HostCmd_CMD_802_11_TPC_CFG:
		TT_CMDPARSE_SEND_CMD( HostCmd_DS_802_11_TPC_CFG, OID_MRVL_DS_TPC_CFG, Enable );
/*		{
			PHostCmd_DS_802_11_TPC_CFG		pThisCmd;
			POID_MRVL_DS_TPC_CFG			pOid;

			pThisCmd = (PHostCmd_DS_802_11_TPC_CFG) pCmdPtr;
			Size = sizeof(HostCmd_DS_802_11_TPC_CFG);

			pThisCmd->Action = CmdOption;

			if ( CmdOption == HostCmd_ACT_GEN_SET )
			{
				pOid = (POID_MRVL_DS_TPC_CFG) InformationBuffer;

 				NdisMoveMemory( 
						(PUCHAR) &(pThisCmd->Enable),
						(PUCHAR) &(pOid->Enable),
						sizeof(OID_MRVL_DS_TPC_CFG) - sizeof(NDIS_OID) );
			}
		}
*/		break;
		
	case HostCmd_CMD_802_11_RATE_ADAPT_RATESET:
		TT_CMDPARSE_SEND_CMD( HostCmd_RATE_ADAPT_RATESET, OID_MRVL_DS_RATE_ADAPT_RATESET, EnableHwAuto );
/*		{
			PHostCmd_RATE_ADAPT_RATESET	pRate;
			POID_MRVL_DS_RATE_ADAPT_RATESET	pOid;

			pRate = (PHostCmd_RATE_ADAPT_RATESET) pCmdPtr;
			Size = sizeof(HostCmd_RATE_ADAPT_RATESET);

			pRate->Action = CmdOption;

			if ( CmdOption == HostCmd_ACT_GEN_SET )
			{
				pOid = (POID_MRVL_DS_RATE_ADAPT_RATESET) InformationBuffer;
				
				pRate->EnableHwAuto = pOid->EnableHwAuto;
				pRate->Bitmap = pOid->Bitmap; 
				NKDbgPrintfW( L"-v5- Ready to send RATE_ADAPTION command\n" );
			}
		}
*/		break;
//tt --

    case HostCmd_CMD_BCA_CONFIG:
        {
            PHostCmd_DS_CMD_BCA_CONFIGURATION   pCmdBCAConfig;

            pCmdBCAConfig = (PHostCmd_DS_CMD_BCA_CONFIGURATION)pCmdPtr;
            Size = sizeof(HostCmd_DS_CMD_BCA_CONFIGURATION);
            
            pCmdBCAConfig->Action = CmdOption;

            if ( CmdOption == HostCmd_ACT_GEN_SET )
            {
                pCmdBCAConfig->Mode = (USHORT)Adapter->BTMode;
                pCmdBCAConfig->AntennaConfig = (USHORT)Adapter->BTAntennaConfig;
                pCmdBCAConfig->FreqConfig = (USHORT)Adapter->BTFrequencyConfig;
                pCmdBCAConfig->TxPriorityLo = Adapter->BTWLANTxPriorityLo;
                pCmdBCAConfig->TxPriorityHi = Adapter->BTWLANTxPriorityHi;
                pCmdBCAConfig->RxPriorityLo = Adapter->BTWLANRxPriorityLo;
                pCmdBCAConfig->RxPriorityHi = Adapter->BTWLANRxPriorityHi;
            }
        }
        break;

#ifdef  DEEP_SLEEP

  case HostCmd_CMD_802_11_DEEP_SLEEP:
    Size = sizeof(HostCmd_DS_802_11_DEEP_SLEEP);
    break;
#endif 

#ifdef HOST_SLEEP
  case HostCmd_CMD_802_11_HOST_SLEEP_CFG:
    { 
      PHostCmd_DS_HOST_SLEEP pCmdHostSleep;
      POID_MRVL_DS_HOST_SLEEP_CFG   pOIDHostSleep; 
      int len;

      pOIDHostSleep = (POID_MRVL_DS_HOST_SLEEP_CFG)InformationBuffer;
      pCmdHostSleep= (PHostCmd_DS_HOST_SLEEP)pCmdPtr;
      //dralee_20060606
      //Size = sizeof(HostCmd_DS_HOST_SLEEP);
      //pCmdHostSleep->Size =sizeof(HostCmd_DS_HOST_SLEEP);
      pCmdHostSleep->Criteria=pOIDHostSleep->ulCriteria;
      pCmdHostSleep->GPIO=pOIDHostSleep->ucGPIO;
      pCmdHostSleep->Gap=pOIDHostSleep->ucGap;
                       
      Size = sizeof(HostCmd_DS_HOST_SLEEP)-sizeof(HostCmd_DS_HOST_WAKEUP_FILTER);      

      //dralee_20060606
      if( pCmdHostSleep->Criteria != -1 && pOIDHostSleep->Filter.Header.Type == Host_Sleep_Filter_Type)
      {
            //dralee_20060606
            len = (pOIDHostSleep->Filter.Header.Len + sizeof(MrvlIEtypesHeader_t));
            NdisMoveMemory( (UCHAR *)&pCmdHostSleep->Filter.Header.Type,
                            (UCHAR *)&pOIDHostSleep->Filter.Header.Type, 
                            len ); 
            Size = sizeof(HostCmd_DS_HOST_SLEEP)-sizeof(HostCmd_DS_HOST_WAKEUP_FILTER)+ len;
            //RETAILMSG(1,(L"v8 hostsleepcfg cmd:%x,%x,%x,%x,%x,%x\n\r",
            //               pCmdHostSleep->Criteria,
            //               pCmdHostSleep->Filter.Header.Type,
            //               pOIDHostSleep->Filter.Header.Len,
            //               pOIDHostSleep->Filter.entry[0].AddressType,
            //               pOIDHostSleep->Filter.entry[0].EthType,
            //               pOIDHostSleep->Filter.entry[0].Ipv4Addr
            //              ));
      }          

	// 36.p4 : Fix deep sleep +++
	#ifdef IF_GSPI
	if ( pCmdHostSleep->Criteria == 0xFFFFFFFF ) {
		// wake up the device to leave sleep, when we set "hostsleepcfg ffffffff 1 80"
		spi_ExitDeepSleep();
	} else {
		// At normal situation, we don't need to do spi_ResetDeepSleep here.
		// Since it will be called when handling awake event.  
		// To This is to do fault torance, to make sure the status is corrent
		spi_ResetDeepSleep();
	}
	#endif
     
	// 36.p4 : Fix deep sleep ---
      DBGPRINT(DBG_HOSTSLEEP, ("HostCmd_CMD_802_11_HOST_SLEEP_CFG:pCmdHostSleep->Criteria=0x%x\n,pCmdHostSleep->GPIO=0x%x\n,pCmdHostSleep->Gap =0x%x,pCmdHostSleep->Size =0x%x\n", pCmdHostSleep->Criteria ,pCmdHostSleep->GPIO,pCmdHostSleep->Gap,pCmdHostSleep->Size));                  
      //RETAILMSG(1, (L"HostCmd_CMD_802_11_HOST_SLEEP_CFG:pCmdHostSleep->Criteria=0x%x\n,pCmdHostSleep->GPIO=0x%x\n,pCmdHostSleep->Gap =0x%x,pCmdHostSleep->Size =0x%x\n", pCmdHostSleep->Criteria ,pCmdHostSleep->GPIO,pCmdHostSleep->Gap,pCmdHostSleep->Size));                 
    }
    break;
    
  case HostCmd_CMD_802_11_HOST_SLEEP_AWAKE_CONFIRM:
    Size = sizeof( HostCmd_DS_WAKEUP_CONFIRM);
    break;
#endif
	case HostCmd_CMD_802_11_SLEEP_PARAMS:
		{
            PHostCmd_DS_802_11_SLEEP_PARAMS    pCmdSleepParams;
            POID_MRVL_DS_SLEEP_PARAMS          pOIDSleep_Params; 

            pCmdSleepParams= (PHostCmd_DS_802_11_SLEEP_PARAMS)pCmdPtr; 
			Size = sizeof(HostCmd_DS_802_11_SLEEP_PARAMS);
		    if(CmdOption ==HostCmd_ACT_SET)
			{	 
			  pOIDSleep_Params = (POID_MRVL_DS_SLEEP_PARAMS)InformationBuffer;
			  pCmdSleepParams->Action=HostCmd_ACT_SET;
              pCmdSleepParams->Error=pOIDSleep_Params->Error;
              pCmdSleepParams->Offset=pOIDSleep_Params->Offset;
              pCmdSleepParams->StableTime=pOIDSleep_Params->StableTime;
			  pCmdSleepParams->CalControl=pOIDSleep_Params->CalControl;
			  pCmdSleepParams->ExternalSleepClk=pOIDSleep_Params->ExternalSleepClk;
			  pCmdSleepParams->Reserved=pOIDSleep_Params->Reserved;
               
			  DBGPRINT(DBG_OID|DBG_DEBUGUSE, ("Set HostCmd_CMD_802_11_SLEEP_PARAMS:Size=%d\n, pCmdSleepParams->Error=%d\n,pCmdSleepParams->Offset=%d\n,pCmdHostWakeup->Gap =%d\n,pCmdSleepParams->CalControl=%d\n,pCmdSleepParams->ExternalSleepClk=%d\n,pCmdSleepParams->Reserved=%d\n",Size, pCmdSleepParams->Error ,pCmdSleepParams->Offset,pCmdSleepParams->StableTime,pCmdSleepParams->CalControl,pCmdSleepParams->ExternalSleepClk,pCmdSleepParams->Reserved));    			    		
		    }else if(CmdOption ==HostCmd_ACT_GET)
		    {
		    	  pCmdSleepParams->Action=HostCmd_ACT_GET;
                
		    }
		}
        break;

#if 0 //tt ++ v5 firmware
    case HostCmd_CMD_802_11_LED_CONTROL:
        {
            PHostCmd_DS_CMD_802_11_LED_CONTROL      pCmdLEDControl;
            POID_MRVL_DS_LED_CONTROL                pOIDLEDControl;

            if ( InformationBuffer == NULL )
            {
                DBGPRINT(DBG_ERROR, ("HostCmd_CMD_802_11_LED_CONTROL: "
                    "InformationBuffer is NULL!\n"));
                break;
            }

            pOIDLEDControl = (POID_MRVL_DS_LED_CONTROL)InformationBuffer;
            pCmdLEDControl = (PHostCmd_DS_CMD_802_11_LED_CONTROL)pCmdPtr;

            Size = sizeof(HostCmd_DS_CMD_802_11_LED_CONTROL);

            pCmdLEDControl->DutyCycle = pOIDLEDControl->DutyCycle;
            pCmdLEDControl->GpioNum = pOIDLEDControl->GpioNum;
            pCmdLEDControl->LedCycle = pOIDLEDControl->LedCycle;
        }
        
        break;
#endif //0 //tt -- v5 firmware

    case HostCmd_CMD_802_11_MULTIPLE_DTIM:
        {
            POID_MRVL_DS_MULTIPLE_DTIM              pOIDMultipleDtim;
            PHostCmd_DS_CMD_802_11_MULTIPLE_DTIM    pCmdMultipleDtim;

            pCmdMultipleDtim = (PHostCmd_DS_CMD_802_11_MULTIPLE_DTIM)pCmdPtr;
            Size = sizeof(HostCmd_DS_CMD_802_11_MULTIPLE_DTIM);

          
#ifdef MRVL_USE_MULTIPLE_DTIM

      if (CmdOption ==HostCmd_ACT_SET)
        {
            pOIDMultipleDtim = (POID_MRVL_DS_MULTIPLE_DTIM)InformationBuffer;
              if (Adapter->DTIMFlag==TRUE)
              {   //execute initproc.c: MrvDrvInitialize
                  //set DTIMNum initial value
                  Adapter->DTIMFlag=FALSE;      
                  pCmdMultipleDtim->DtimNum =(USHORT)Adapter->DTIMNum;           
              } else {
                  //execute OID_MRVL_MULTIPLE_DTIM 
                  pCmdMultipleDtim->DtimNum =(USHORT)pOIDMultipleDtim->DtimNum; 
              Adapter->DTIMNum=pCmdMultipleDtim->DtimNum;
          }
          pCmdMultipleDtim->Size=sizeof(HostCmd_DS_CMD_802_11_MULTIPLE_DTIM);//(USHORT)0xe;
          pCmdMultipleDtim->Action=(USHORT)HostCmd_ACT_SET;
                  
          DBGPRINT(DBG_OID, ("***** 1 PrepareAndSendCommand:HostCmd_CMD_802_11_MULTIPLE_DTIM pCmdMultipleDtim->DTIMNum=%d\n",pCmdMultipleDtim->DtimNum));
              DBGPRINT(DBG_OID, ("1 PrepareAndSendCommand:HostCmd_CMD_802_11_MULTIPLE_DTIM: CmdOption=0x%x, size=0x%x,pCmdMultipleDtim->Size=0x%x\n ", CmdOption,Size,pCmdMultipleDtim->Size ));   
          //DBGPRINT(DBG_OID, ("HostCmd_CMD_802_11_MULTIPLE_DTIM:pCmdMultipleDtim->Command=0x%x\n,pCmdMultipleDtim->Size=0x%x\n,pCmdMultipleDtim->SeqNum=0x%x\n,pCmdMultipleDtim->Result=0x%x\n,pCmdMultipleDtim->Action=0x%x\n,pCmdMultipleDtim->PowerMode=0x%x\n,pCmdMultipleDtim->DtimNum=0x%x\n", pCmdMultipleDtim->Command,pCmdMultipleDtim->Size,pCmdMultipleDtim->SeqNum,pCmdMultipleDtim->Result,pCmdMultipleDtim->Action,pCmdMultipleDtim->PowerMode,pCmdMultipleDtim->DtimNum));                   
        }
#else
            pOIDMultipleDtim = (POID_MRVL_DS_MULTIPLE_DTIM)InformationBuffer;

            pCmdMultipleDtim->DtimNum = pOIDMultipleDtim->DtimNum;
#endif
        }
        break;

#ifdef WPA
    case HostCmd_CMD_802_11_ENABLE_RSN:
            {
                // Adapter->EnableWPA contains whether
                // wpa should be enabled or disabled
                PHostCmd_DS_802_11_ENABLE_RSN pEnableRSNDS;

                pEnableRSNDS = (PHostCmd_DS_802_11_ENABLE_RSN)pCmdPtr;
                if ( Adapter->WPAEnabled == TRUE )
                {
                    // enable WPA
                    pEnableRSNDS->Enable = HostCmd_ENABLE_RSN;
                }
                else
                {
                    // disable WPA
                    pEnableRSNDS->Enable = HostCmd_DISABLE_RSN;
                }

                Size = sizeof(HostCmd_DS_802_11_ENABLE_RSN);
                pEnableRSNDS->Action = CmdOption;
            }
            break;

        case HostCmd_CMD_802_11_CONFIG_RSN:

            break;
        case HostCmd_CMD_802_11_MCAST_CIPHER:
            {
                PHostCmd_DS_802_11_MCAST_CIPHER pMcastCiper;
                ULONG                           ulMcastCipher;

                pMcastCiper = (PHostCmd_DS_802_11_MCAST_CIPHER)pCmdPtr;

                pMcastCiper->Action = CmdOption;
                Size = pMcastCiper->Size = sizeof(HostCmd_DS_802_11_MCAST_CIPHER);

        if( Adapter->EncryptionStatus == Ndis802_11Encryption2KeyAbsent)
        {
                    DBGPRINT(DBG_CMDRESP, ("Set MCAST_CIPHER to WPA-PSK\n"));
                    // TKIP
                    //ulMcastCipher = 0x0050F202; 
                    ulMcastCipher = 0x02F25000;       
        }
                else
                {
                    // unrecognized RSN suite
                    DBGPRINT(DBG_WARNING, ("WARNING: Unrecognized WPA encryption status: %d\n",
                                        Adapter->EncryptionStatus));
                    return NDIS_STATUS_FAILURE;
                }

                // copy the authentication suite
                NdisMoveMemory( pMcastCiper->McastCipher, &ulMcastCipher, 
                        sizeof(ulMcastCipher));
            }
            break;

        case HostCmd_CMD_802_11_UNICAST_CIPHER:
            {
                PHostCmd_DS_802_11_UNICAST_CIPHER pUnicastCiper;
                ULONG                              ulUnicastCipher;

                pUnicastCiper = (PHostCmd_DS_802_11_UNICAST_CIPHER)pCmdPtr;

                pUnicastCiper->Action = CmdOption;
                Size = pUnicastCiper->Size = sizeof(HostCmd_DS_802_11_UNICAST_CIPHER);

        if( Adapter->EncryptionStatus == Ndis802_11Encryption2KeyAbsent)
        {
                    DBGPRINT(DBG_CMDRESP, ("Set UNICAST_CIPHER to WPA-PSK\n"));
                    // TKIP
                    //ulUnicastCipher = 0x0050F202; 
                    ulUnicastCipher = 0x02F25000;       
        }
                else
                {
                    // unrecognized RSN suite
                    DBGPRINT(DBG_WARNING, ("WARNING: Unrecognized WPA encryption status: %d\n",
                                        Adapter->EncryptionStatus));
                    return NDIS_STATUS_FAILURE;
                }

                // copy the authentication suite
                NdisMoveMemory( pUnicastCiper->UnicastCipher, &ulUnicastCipher, 
                        sizeof(ulUnicastCipher));
            }
            break;

        case HostCmd_CMD_802_11_RSN_AUTH_SUITES:
            {
                PHostCmd_DS_802_11_RSN_AUTH_SUITES pAuth;
                ULONG                              ulAuthSuite;

                pAuth = (PHostCmd_DS_802_11_RSN_AUTH_SUITES)pCmdPtr;

                pAuth->Action = CmdOption;
                Size = pAuth->Size = sizeof(HostCmd_DS_802_11_RSN_AUTH_SUITES);

                if ( Adapter->AuthenticationMode == Ndis802_11AuthModeWPAPSK ) 
                {
                    DBGPRINT(DBG_CMDRESP, ("Set RSN authentication Suites to WPA-PSK\n"));
                    // PSK
                    ulAuthSuite = 0x02F25000;                  
                }
                else if (Adapter->AuthenticationMode == Ndis802_11AuthModeWPA )
                {

⌨️ 快捷键说明

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