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

📄 initproc.c

📁 此压缩包为杰得开发得z228的BSP的源代码,可以实现很多功能,尤其是视频解码有很好的效果.
💻 C
📖 第 1 页 / 共 5 页
字号:
  Adapter->AdhocDefaultBand         = MRVDRV_802_11_BAND_BG;
#elif (defined(MRV_CHIP_8305) || defined(MRV_CHIP_8381))
  Adapter->region_channel[0].Valid  = TRUE;
  Adapter->region_channel[0].Band   = MRVDRV_802_11_BAND_B;  
  Adapter->region_channel[0].Region   = 0x40; //JPN
  Adapter->region_channel[0].CFP      = channel_freq_power_JPN_BG;
  Adapter->region_channel[0].NrCFP  = 14;                     
#else
  Adapter->region_channel[0].Valid  = TRUE;
  Adapter->region_channel[0].Band   = MRVDRV_802_11_BAND_BG;  
  Adapter->region_channel[0].Region   = 0x40; //JPN
  Adapter->region_channel[0].CFP      = channel_freq_power_JPN_BG;
  Adapter->region_channel[0].NrCFP  = 14;

#endif ///(MRV_CHIP_8XXX)
/*
#elif defined(MRV_CHIP_8385PN)
  Adapter->region_channel[0].Valid  = TRUE;
  Adapter->region_channel[0].Band   = MRVDRV_802_11_BAND_BG;  
  Adapter->region_channel[0].Region   = 0x40; //JPN
  Adapter->region_channel[0].CFP      = channel_freq_power_JPN_BG;
  Adapter->region_channel[0].NrCFP  = 14;
#elif defined(MRV_CHIP_8388)
  Adapter->region_channel[0].Valid  = TRUE;
  Adapter->region_channel[0].Band   = MRVDRV_802_11_BAND_BG;  
  Adapter->region_channel[0].Region   = 0x40; //JPN
  Adapter->region_channel[0].CFP      = channel_freq_power_JPN_BG;
  Adapter->region_channel[0].NrCFP  = 14;
#elif defined(MRV_CHIP_8686PN)      //dralee_1209
  Adapter->region_channel[0].Valid  = TRUE;
  Adapter->region_channel[0].Band   = MRVDRV_802_11_BAND_BG;  
  Adapter->region_channel[0].Region   = 0x40; //JPN
  Adapter->region_channel[0].CFP      = channel_freq_power_JPN_BG;
  Adapter->region_channel[0].NrCFP  = 14;
#elif defined(MRV_CHIP_8399)
  Adapter->region_channel[0].Valid  = TRUE;
  Adapter->region_channel[0].Band   = MRVDRV_802_11_BAND_BG;  
  Adapter->region_channel[0].Region   = 0x40; //JPN
  Adapter->region_channel[0].CFP      = channel_freq_power_JPN_BG;
  Adapter->region_channel[0].NrCFP  = 14; 
  
#else 
  Adapter->region_channel[0].Valid  = TRUE;
  Adapter->region_channel[0].Band   = MRVDRV_802_11_BAND_B;  
  Adapter->region_channel[0].Region   = 0x40; //JPN
  Adapter->region_channel[0].CFP      = channel_freq_power_JPN_BG;
  Adapter->region_channel[0].NrCFP  = 14;                     
#endif      
  */
  Adapter->cur_region_channel = &(Adapter->region_channel[0]);
  Adapter->connected_band  = MRVDRV_802_11_BAND_BG;
  Adapter->connected_channel = 1;

  //lykao, 053005, set Adhoc Initial value
    Adapter->AdhocDefaultChannel      = 6;
  Adapter->AdhocWiFiDataRate          = 0; //set adhoc Band=MRVDRV_802_11_BAND_B

   
    Adapter->SetSD4BIT                  =0;  //Default setSD1BIT =4 bit mode
    #ifdef MRVL_WINCE50
      Adapter->RegionTableIndex = 0;
      Adapter->RegionCode = 0x10;
    #endif 
#if defined (IF_GSPI)
	Adapter->SdioIstThread = 100;
#else

	Adapter->SdioIstThread= 101; //150; dralee_20060604. to fix platform reset hang bug. 
#endif ///IF_GSPI

    #ifdef REASSOCIATE
        Adapter->bIsSystemConnectNow = FALSE;
        //35.p6++
       Adapter->bIsReconnectEnable = FALSE;	
       Adapter->bIsBeaconLoseEvent = FALSE;
       Adapter->bIsDeauthenticationEvent = FALSE;
       //35.p6--   
    #endif //REASSOCIATE	
       Adapter->CurCmd = NULL;
	
    #ifdef NEW_RSSI
       Adapter->bcn_avg_factor  = DEFAULT_BCN_AVG_FACTOR;
	Adapter->data_avg_factor = DEFAULT_DATA_AVG_FACTOR;  
	Adapter->ulRSSITickCount = 0;  
	Adapter->ulRSSIThresholdTimer=5000;
	Adapter->RSSI_Range=10;
    #endif	

    /*
     * ahan [2005-12-09]
     * 0 - No TLV,  [1,2] is valid range
     */ //++dralee_20060220
    Adapter->ScanProbes = 2;           

    /*
     * ahan [2005-12-12]
     * vlaid range is [0,20]
     */
    Adapter->LocalListenInterval = 0;  //0 - remain firmware listen interval unchanged

    /*
     * ahan [2005-12-13]
     * default event is LINK_LOSS
     * default beacon missed value is 60
     */  //++dralee_20060217
    Adapter->SubscribeEvents = LINK_LOSS; 
    Adapter->EventRecord.EventMap = LINK_LOSS;
	///crlo:fastroam ++
	Adapter->EventRecord.BeaconMissed = LINK_LOST_BEACONCNT;
    ///Adapter->EventRecord.BeaconMissed = 60;
	///crlo:fastroam --
    /* ahan [2005-12-13] */

   #ifdef AvoidOidSetScan
       Adapter->AvoidScanTime=10000;
   #endif	

    // tt mic error ++
    Adapter->bMicErrorIsHappened = FALSE;
    // tt mic error --

     Adapter->RxPDRate = 0;	
     Adapter->SNR[TYPE_RXPD][TYPE_NOAVG]=0 ;

    #ifdef BG_SCAN
    	Adapter->bBgScanEnabled = 0;
        Adapter->bActiveRoamingwithBGSCAN=FALSE;
	Adapter->bPSEnableBGScan=FALSE;
	NdisZeroMemory(Adapter->BgScanCfg, LENGTH_BGSCAN_CFG);
	Adapter->nBgScanCfg=0;
	Adapter->ulScanInterval=20000; //20sec
	Adapter->bBgDeepSleep=0;
    #endif
	#ifdef CCX
	///crlo:RadioMeasure ++
	#ifdef CCX_RADIOMEASURE
	///Adapter->dialogToken = 0x0011;			////Copy the value from a transaction of a Cisco client
	Adapter->isPassiveScan = FALSE;
	Adapter->MeasureDurtion = 0;
	Adapter->ChannelNum = 0;
	#endif ///CCX_RADIOMEASURE
	///crlo:RadioMeasure --
	#endif ///CCX
     #ifdef ACTIVE_ROAMING
        Adapter->bIsActiveRoaming = FALSE;
	Adapter->bActiveRoamingScanOneChannel=TRUE;
	Adapter->bLinkLostScanOneChannel=TRUE;
        Adapter->EventRecord.RSSILowValue  = 60; 
	Adapter->ACTIVE_ROAMING_Count=0;
	Adapter->ActiveRoamingwithBGSCAN_FLAG=FALSE;
    #endif  

    #ifdef WMM
        Adapter->WmmDesc.enabled = 0;
        Adapter->WmmDesc.required = 1;
    #ifdef WMM_UAPSD
        Adapter->WmmDesc.qosinfo = 0x0f;
    #endif
    #endif 

    #ifdef IBSS_COALESCE 
        Adapter->IbssCoalsecingEnable = 1;
    #endif 

    return;
}

/******************************************************************************
 *
 *  Name: AllocateAdapterBuffer()
 *
 *  Description: Device object buffer initialization function
 *
 *  Arguments:  
 *      PMRVDRV_ADAPTER Adapter
 *    
 *  Return Value: NDIS_STATUS_SUCCESS or NDIS_STATUS_FAILURE
 * 
 *  Notes:       
 *
 *****************************************************************************/
NDIS_STATUS AllocateAdapterBuffer(
    IN PMRVDRV_ADAPTER Adapter
  )
{
    NDIS_STATUS Status;
  // ULONG i;
  //ULONG ulBufSize;
  // PUCHAR pTempVirtualAddr;
  // NDIS_PHYSICAL_ADDRESS TempPhyAddr;
  //PNDIS_WLAN_BSSID_EX pTempBSSIDList;
    //PBSS_DESCRIPTION_SET_ALL_FIELDS pTempBssDescList;

  //  We are going to use non-cached shared memory for Rx buffers, no need to 
  //  check cache fill size offset
  ULONG Offset;

  Offset = 0;

  Adapter->InitializationStatus |= MRVDRV_INIT_STATUS_MAP_REGISTER_ALLOCATED;

  
  // Build up TxQ
  if(AllocateSingleTx(Adapter) != NDIS_STATUS_SUCCESS)
  {
    FreeAdapterObject(Adapter);
    return NDIS_STATUS_RESOURCES; 
  }

  // Build up RxQ
  Status = AllocateRxQ(Adapter);
  if( Status != NDIS_STATUS_SUCCESS ){
    FreeAdapterObject(Adapter);
    return NDIS_STATUS_RESOURCES;
  }

  // Build up command buffers
  Status = AllocateCmdBuffer(Adapter);
  if( Status != NDIS_STATUS_SUCCESS ){
    FreeAdapterObject(Adapter);
    return NDIS_STATUS_RESOURCES;
  }

  return NDIS_STATUS_SUCCESS;
}

/******************************************************************************
 *
 *  Name: ReadRegistryInfo()
 *
 *  Description: Device registry read function
 *
 *  Arguments: 
 *      PMRVDRV_ADAPTER Adapter
 *      NDIS_HANDLE RegHdl
 *
 *    
 *  Return Value: 
 *      NDIS_STATUS_SUCCESS
 *      NDIS_STATUS_FAILURE
 * 
 *  Notes:        
 *
 *****************************************************************************/

NDIS_STATUS ReadRegistryInfo(
    IN PMRVDRV_ADAPTER Adapter,
    IN NDIS_HANDLE RegHdl
  )
{
    NDIS_STATUS Status;
    REGINFOTAB *RegInfoTab;
    UINT i;
    ULONG j;
    // ULONG ul;
    UINT Value;
    PUCHAR pPtr;
    PUCHAR pTmp;
    // PUCHAR stopstring;
    NDIS_CONFIGURATION_PARAMETER NdisConfigParam,*ReturnedValue;
    ANSI_STRING  DestinationANSIString;
    char UnicodeBuffer[512];//to save the UNICODE string. 
    char AnsiBuffer[128];//to save the ANSI string. 
    PUCHAR NetworkAddress;

    // Read registry network address, if there is a good one, put it itno Adapter->CurrentAddr array
    NdisReadNetworkAddress(&Status, &NetworkAddress, &i, RegHdl);
    if( Status == NDIS_STATUS_SUCCESS )
  {
        if( i == MRVDRV_ETH_ADDR_LEN )
    {
            NdisMoveMemory(Adapter->CurrentAddr, NetworkAddress, MRVDRV_ETH_ADDR_LEN);
      DBGPRINT(DBG_LOAD,("*** Got registry soft addr: %2x %2x %2x %2x %2x %2x ***\n", 
      Adapter->CurrentAddr[0],
      Adapter->CurrentAddr[1],
      Adapter->CurrentAddr[2],
      Adapter->CurrentAddr[3],
      Adapter->CurrentAddr[4],
      Adapter->CurrentAddr[5]));            
        }
    }

  RegInfoTab = MrvDrvRegInfoTab;
  ReturnedValue = &NdisConfigParam;
  
  DestinationANSIString.Buffer=AnsiBuffer; 
  DestinationANSIString.MaximumLength=0x21;
  ReturnedValue->ParameterData.StringData.Buffer=(PWSTR)UnicodeBuffer;
    for(i=0; i<SIZE_OF_REG_TAB; i++, RegInfoTab++)
    {
        pPtr = ((PUCHAR)Adapter) + RegInfoTab->Offset;
        pTmp = pPtr;
        if (RegInfoTab->Type == 0)
        {
          NdisReadConfiguration(
        &Status,
              &ReturnedValue,
              RegHdl,
              &RegInfoTab->ObjNSName,
              NdisParameterInteger);
            if (Status == NDIS_STATUS_SUCCESS)
            {             
            Value = ReturnedValue->ParameterData.IntegerData;
            *((PULONG)pPtr) = (ULONG)Value;
          }
        }
        else if(RegInfoTab->Type == 1)
        {
          
          NdisReadConfiguration(
        &Status,
              &ReturnedValue,
              RegHdl,
              &RegInfoTab->ObjNSName,
              NdisParameterString);
            if (Status == NDIS_STATUS_SUCCESS)
            {   
       
          NdisUnicodeStringToAnsiString(
            &DestinationANSIString, 
            (PUNICODE_STRING)(&(ReturnedValue->ParameterData.StringData))
          );   
            
          for(j=0;DestinationANSIString.Buffer[j] != '\0';j++)
          {
            *(pTmp)=DestinationANSIString.Buffer[j];
            pTmp++;
          } 
           
          *((PULONG)(pPtr-4))=j;           
  
      }                                     
        }  
        else if (RegInfoTab->Type == 3) {

      NdisReadConfiguration(
        &Status,
        &ReturnedValue,
        RegHdl,
        &RegInfoTab->ObjNSName,
        NdisParameterHexInteger);

      if (Status == NDIS_STATUS_SUCCESS) {

        Value = ReturnedValue->ParameterData.IntegerData;
        *((PINT)pPtr) = Value;
      }
    }
    }

  Adapter->WepKey1.KeyIndex=0x0;
  Adapter->WepKey2.KeyIndex=0x1;
  Adapter->WepKey3.KeyIndex=0x2;
  Adapter->WepKey4.KeyIndex=0x3;      
  switch(Adapter->TxWepKey){

    case 0:
      Adapter->WepKey1.KeyIndex |= 0x80000000;
      NdisMoveMemory(&(Adapter->CurrentWEPKey),&(Adapter->WepKey1) , 12 + Adapter->WepKey1.KeyLength);
      break;
    case 1:
      Adapter->WepKey2.KeyIndex |= 0x80000000;
      NdisMoveMemory(&(Adapter->CurrentWEPKey),&(Adapter->WepKey2) , 12 + Adapter->WepKey2.KeyLength);
      break;  
    case 2:
      Adapter->WepKey3.KeyIndex |= 0x80000000;
      NdisMoveMemory(&(Adapter->CurrentWEPKey),&(Adapter->WepKey3) , 12 + Adapter->WepKey3.KeyLength);
      break;
    case 3:
      Adapter->WepKey4.KeyIndex |= 0x80000000;
      NdisMoveMemory(&(Adapter->CurrentWEPKey),&(Adapter->WepKey4) , 12 + Adapter->WepKey4.KeyLength);
      break;                
    default:
      break;  
  }        

 #ifdef NEW_RSSI
	Adapter->NegativeRSSI_Range=Adapter->RSSI_Range*(-1);
 #endif	

    return NDIS_STATUS_SUCCESS;
}

/******************************************************************************
 *
 *  Name: InitSyncObjects()
 *
 *  Description: Syncronization object initialization function
 *
 *  Arguments:  
 *      PMRVDRV_ADAPTER Adapter
 *    
 *  Return Value: 
 *      NDIS_STATUS_SUCCESS
 *      NDIS_STATUS_FAILURE
 * 
 *  Notes:        
 *
 *****************************************************************************/
NDIS_STATUS
InitSyncObjects(
  IN PMRVDRV_ADAPTER Adapter
  )
{  

        DWORD         threadID;  
        DWORD         waitStatus;

⌨️ 快捷键说明

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