亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mconfig.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁 / 共 5 頁
字號:
    gLibInfo.pLibDevArray[devNum]->mem.pIndexBlocks = NULL;
    gLibInfo.pLibDevArray[devNum]->mem.pAllocMap = NULL;

    // Assign to the MDK Memory Map
    pLibDev->mem.pAllocMap = pExtAllocMap;
    pLibDev->mem.pIndexBlocks = pExtIndexBlocks;
    pLibDev->mem.usingExternalMemory = TRUE;
}

MANLIB_API A_UINT16 getDevIndex
(
    A_UINT32 devNum
)
{
    if (gLibInfo.pLibDevArray[devNum] == NULL) {
        mError(devNum, EINVAL, "Device Number %d:getDevIndex \n", devNum);
        return (A_UINT16)-1;
    }

    return gLibInfo.pLibDevArray[devNum]->devMap.devIndex;
}
/**************************************************************************
* closeDevice - Free all structures associated with this device
*
*/
MANLIB_API void closeDevice
(
    A_UINT32 devNum
) 
{
//      FIELD_VALUES *pFieldValues;

    if(gLibInfo.pLibDevArray[devNum] == NULL) {
        mError(devNum, EINVAL, "Device Number %d:closeDevice\n", devNum);
        return;
    }
    if(gLibInfo.pLibDevArray[devNum]->mem.usingExternalMemory == FALSE) {
        if(gLibInfo.pLibDevArray[devNum]->mem.pIndexBlocks) {
            free(gLibInfo.pLibDevArray[devNum]->mem.pIndexBlocks);
            gLibInfo.pLibDevArray[devNum]->mem.pIndexBlocks = NULL;
        }
        if (gLibInfo.pLibDevArray[devNum]->mem.pAllocMap) {
            free(gLibInfo.pLibDevArray[devNum]->mem.pAllocMap);
            gLibInfo.pLibDevArray[devNum]->mem.pAllocMap = NULL;
        }
    }

    if(gLibInfo.pLibDevArray[devNum]->eepData.infoValid) {
        freeEepStructs(devNum);
        gLibInfo.pLibDevArray[devNum]->eepData.infoValid = FALSE;
    }

    
    if (gLibInfo.pLibDevArray[devNum]->regArray) {
        free(gLibInfo.pLibDevArray[devNum]->regArray);
        gLibInfo.pLibDevArray[devNum]->regArray = NULL;
    }
    if (gLibInfo.pLibDevArray[devNum]->pModeArray) {
        free(gLibInfo.pLibDevArray[devNum]->pModeArray);
        gLibInfo.pLibDevArray[devNum]->pModeArray  = NULL;
    }

    if (gLibInfo.pLibDevArray[devNum]->pciValuesArray) {
        free(gLibInfo.pLibDevArray[devNum]->pciValuesArray);
        gLibInfo.pLibDevArray[devNum]->pciValuesArray = NULL;
    }
  
    if(gLibInfo.pLibDevArray[devNum]->pEarHead) {
        ar5212EarFree(gLibInfo.pLibDevArray[devNum]->pEarHead);
    }

    free(gLibInfo.pLibDevArray[devNum]);
    gLibInfo.pLibDevArray[devNum] = NULL;
    gLibInfo.devCount--;
}

/**************************************************************************
* specifySubSystemID - Tell library what subsystemID to try if can't find
*                      a match 
*
* 
*
*/
MANLIB_API void specifySubSystemID
(
 A_UINT32 devNum,
 A_UINT32   subsystemID
)
{
    mError(devNum, EIO, "Device Number %d:specifySubSystemID is an obsolete library command\n", devNum);
    
    devNum = 0;         //quiet compiler warning.
    subsystemID = 0; 
    return;
}

/**************************************************************************
* setResetParams - Setup params prior to calling resetDevice 
*
* These are new params added for second generation products
*
*/
MANLIB_API void setResetParams
(
 A_UINT32 devNum,
 A_CHAR     *pFilename,
 A_BOOL     eePromLoad,
 A_BOOL     forceCfgLoad,  
 A_UCHAR    mode,
 A_UINT16     initCodeFlag
)
{
    LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];
    A_UINT16      i;


//  printf("\n In SetResetParams pfilename = %s \n",pFilename);
    if (checkDevNum(devNum) == FALSE) {
        mError(devNum, EINVAL, "Device Number %d:setResetParams\n", devNum);
        return;
    }
    
    pLibDev->eePromLoad = eePromLoad;
//  pLibDev->eePromHeaderLoad = eePromHeaderLoad;
    pLibDev->mode = mode;
    pLibDev->use_init = initCodeFlag;

    if(eePromLoad == 0) {
        //force the eeprom header to re-apply, next time we load eeprom
        for (i = 0; i < 4; i++) {
            pLibDev->eepromHeaderApplied[i] = FALSE;
        }
    }
    if(forceCfgLoad) {
        //force the pci values to be regenerated
        pLibDev->regFileRead = 0;       
        //printf("SNOOP::: regFileRead to zero\n");

        //force the eeprom header to re-apply
        for (i = 0; i < 4; i++) {
            pLibDev->eepromHeaderApplied[i] = FALSE;
        }
    }

    if(( pFilename == '\0' ) || ( pFilename == NULL ) || (pFilename[0] == (A_CHAR)NULL)) {
        return;
   }


#ifndef MDK_AP    
    //do a check for file exist and is readable
    if(_access(pFilename, 04) != 0) {
        mError(devNum, EINVAL, "Device Number %d:setRegFilename: either file [%s] does not exist or is not readable\n", devNum, pFilename);
        return;
    }

    //if there is a config file change then reset the config file reading
    if(strcmp(pLibDev->regFilename, pFilename) != 0) {
        pLibDev->regFileRead = 0;
        //printf("SNOOP::: regFileRead to zero\n");
    }

    strcpy(pLibDev->regFilename, pFilename);
#endif
}

/**************************************************************************
* configureLibParams - Allow certain library params to be configured.
*                      Similar to setResetParmams.  This function will
*                      use a strcuture to pass params as this will be device
*                      specific params that will grow through time.
*
*/
MANLIB_API void configureLibParams
(
 A_UINT32 devNum,
 LIB_PARAMS *pLibParamsInfo
)
{
    LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];
    if (pLibDev->libCfgParams.loadEar != pLibParamsInfo->loadEar) {
        pLibDev->regFileRead = 0;
    } 
#ifndef __ATH_DJGPPDOS__
if (!isFalcon(devNum)) {
    if (pLibDev->artAniSetup.Enabled != pLibParamsInfo->artAniEnable) {
        if (pLibParamsInfo->artAniEnable == ART_ANI_ENABLED) {
            enableArtAniSetup(devNum);
        } else {
            disableArtAniSetup(devNum);
        }
    }
}
    pLibDev->artAniSetup.Reuse = pLibParamsInfo->artAniReuse;
    pLibDev->artAniSetup.currNILevel = pLibParamsInfo->artAniNILevel;
    pLibDev->artAniSetup.currBILevel = pLibParamsInfo->artAniBILevel;
    pLibDev->artAniSetup.currSILevel = pLibParamsInfo->artAniSILevel;
#else
    pLibParamsInfo->artAniEnable = ART_ANI_DISABLED;
#endif
    // chainmask from eeprom gets precedence
    if (pLibDev->libCfgParams.chain_mask_updated_from_eeprom) {
        pLibParamsInfo->tx_chain_mask = pLibDev->libCfgParams.tx_chain_mask;
        pLibParamsInfo->rx_chain_mask = pLibDev->libCfgParams.rx_chain_mask;
    }
    if (pLibDev->libCfgParams.useEepromNotFlash > 0) {
        pLibParamsInfo->useEepromNotFlash = pLibDev->libCfgParams.useEepromNotFlash;
    }
    memcpy(&(pLibDev->libCfgParams), pLibParamsInfo, sizeof(LIB_PARAMS));
    return;
}

/**************************************************************************
* getDeviceInfo - get a subset of the device info for display
    *
*/
MANLIB_API void getDeviceInfo
(
 A_UINT32 devNum, 
 SUB_DEV_INFO *pInfoStruct      //pointer to caller assigned struct
)
{
    LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];
    A_UINT32    strLength;

    if(pLibDev->ar5kInitIndex == UNKNOWN_INIT_INDEX) {
        mError(devNum, EIO, "Device Number %d:getDeviceInfo fail, run resetDevice first\n", devNum);
        return;
    }
    pInfoStruct->aRevID = pLibDev->aRevID;
    pInfoStruct->hwDevID = pLibDev->hwDevID;
    pInfoStruct->swDevID = ar5kInitData[pLibDev->ar5kInitIndex].swDeviceID;
    pInfoStruct->bbRevID = pLibDev->bbRevID;
    pInfoStruct->macRev = pLibDev->macRev;
    pInfoStruct->subSystemID = pLibDev->subSystemID;
    strLength = strlen(pLibDev->regFilename);
    if (strLength) {
        strcpy(pInfoStruct->regFilename, pLibDev->regFilename);
        pInfoStruct->defaultConfig = 0;
    }
    else {
        //copy in the default
        if (ar5kInitData[pLibDev->ar5kInitIndex].pCfgFileVersion) {
            strcpy(pInfoStruct->regFilename, ar5kInitData[pLibDev->ar5kInitIndex].pCfgFileVersion);
        } else {
            pInfoStruct->regFilename[0]='\0';
        }
        pInfoStruct->defaultConfig = 1;
    }
    sprintf(pInfoStruct->libRevStr, DEVLIB_VER1); 

}

static A_BOOL analogRevMatch
(
    A_UINT32 index,
    A_UINT32 aRevID
)
{
    A_UINT16 i;
    A_UCHAR  aProduct = (A_UCHAR)(aRevID & 0xf);
    A_UCHAR  aRevision = (A_UCHAR)((aRevID >> 4) & 0xf);

    if(ar5kInitData[index].pAnalogRevs == NULL) {
        return(TRUE);
    }

    for (i = 0; i < ar5kInitData[index].numAnalogRevs; i++) {
        if((aProduct == ar5kInitData[index].pAnalogRevs[i].productID) &&
            (aRevision == ar5kInitData[index].pAnalogRevs[i].revID)) {
            return (TRUE);
        }
    }
    return(FALSE);
}

static A_BOOL macRevMatch
(
    A_UINT32 index,
    A_UINT32 macRev
)
{
    A_UINT16 i;
    
    if(ar5kInitData[index].pMacRevs == NULL) {
        return (TRUE);
    }

    for(i = 0; i < ar5kInitData[index].numMacRevs; i++) {
        if(macRev == ar5kInitData[index].pMacRevs[i]) {
            return(TRUE);
        }
    }
    return(FALSE);
}

A_INT32 findDevTableEntry
(
    A_UINT32 devNum
)
{
    A_UINT32 i;
    LIB_DEV_INFO *pLibDev;

    pLibDev = gLibInfo.pLibDevArray[devNum];

    //FJC: 07/24/03 this function can now be called from outside resetDevice
    //so it needs to read the hw info incase it has not been read.
    //have copied this from resetDevice rather than move it to minimize
    //inpact.  Should readly optimize this so don't do the same stuff twice.
    pLibDev->hwDevID = (pLibDev->devMap.OScfgRead(devNum, 0) >> 16) & 0xffff;

     /* Reset the device. */
     /* Masking the board specific part of the device id */
     switch (pLibDev->hwDevID & 0xff)   {
        case 0x0007:
#ifndef __ATH_DJGPPDOS__
            if (pLibDev->devMap.remoteLib)
            {
                pLibDev->macRev = hwReset(devNum, BUS_RESET | BB_RESET | MAC_RESET);
            }
            else
            {
                hwResetAr5210(devNum, BUS_RESET | BB_RESET | MAC_RESET);
#if defined(SPIRIT_AP) || defined(FREEDOM_AP)
#if !defined(COBRA_AP)
                pLibDev->macRev = (sysRegRead(AR531X_REV) >> REV_WMAC_MIN_S) & 0xff;
#endif
#else
                pLibDev->macRev = REGR(devNum, F2_SREV) & F2_SREV_ID_M;
#endif
            }
#endif
            break;
        case 0x0011:
        case 0x0012:
        case 0x0013:
        case 0x0014:
        case 0x0015:
        case 0x0016: 
        case 0x0017: 
        case 0x001a:
        case 0x001b:
        case 0x001c:
        case 0x001f:
        case 0x00b0: 
        case 0xa014:
        case 0xa016:
        case 0x0019:
        case (DEVICE_ID_COBRA&0xff):
            if (pLibDev->devMap.remoteLib)
                pLibDev->macRev = hwReset(devNum, BUS_RESET | BB_RESET | MAC_RESET);
            else
            {
                hwResetAr5211(devNum, BUS_RESET | BB_RESET | MAC_RESET);
#if defined(SPIRIT_AP) || defined(FREEDOM_AP)
#if defined(COBRA_AP)
            if((pLibDev->hwDevID & 0xff) == (DEVICE_ID_COBRA&0xff))
                pLibDev->macRev = (sysRegRead(AR531XPLUS_PCI+F2_SREV) & F2_SREV_ID_M);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服丝袜中文字幕一区| 韩国一区二区视频| 在线精品亚洲一区二区不卡| 最新高清无码专区| 色视频成人在线观看免| 亚洲福利视频三区| 欧美一区二区精美| 国产自产视频一区二区三区| 国产拍欧美日韩视频二区| 大陆成人av片| 亚洲精品国产一区二区精华液| 91国偷自产一区二区开放时间 | 中文字幕av不卡| 99国产精品99久久久久久| 亚洲国产另类精品专区| 欧美成人一区二区三区在线观看 | 午夜精品福利视频网站 | 337p日本欧洲亚洲大胆精品| 国产一区二区不卡老阿姨| 欧美国产丝袜视频| 在线观看区一区二| 久久黄色级2电影| 国产精品嫩草影院com| 欧美系列在线观看| 国产主播一区二区| 日韩一区日韩二区| 日韩一区二区麻豆国产| 高清国产一区二区三区| 亚洲超碰97人人做人人爱| 久久久精品日韩欧美| 欧洲精品在线观看| 国产乱码精品1区2区3区| 夜色激情一区二区| 久久久久综合网| 欧美午夜一区二区三区| 国产自产高清不卡| 午夜精品在线看| 中文字幕av一区二区三区高| 欧美一卡在线观看| 色噜噜狠狠色综合中国| 黄色日韩网站视频| 亚洲成av人片在线观看| 中文字幕av一区 二区| 日韩欧美在线影院| 日本久久电影网| 国产精品一区在线| 日韩高清一区在线| 亚洲精品视频观看| 国产欧美视频一区二区三区| 欧美一区中文字幕| 欧美亚洲国产一区二区三区| 成人激情图片网| 精品写真视频在线观看| 午夜久久电影网| 一区二区不卡在线视频 午夜欧美不卡在 | 91官网在线观看| 国产精品乡下勾搭老头1| 人人狠狠综合久久亚洲| 亚洲电影一区二区三区| 亚洲日本一区二区三区| 国产日韩av一区| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美群妇大交群中文字幕| 91在线视频网址| 成人v精品蜜桃久久一区| 国产精品一二三| 久久97超碰国产精品超碰| 日本成人在线视频网站| 亚洲二区视频在线| 亚洲一区二区三区四区不卡| 亚洲日本va午夜在线影院| 国产精品无圣光一区二区| 久久午夜国产精品| 久久综合久久99| 精品福利在线导航| 精品国产自在久精品国产| 日韩区在线观看| 精品av久久707| 欧美大片在线观看一区| 欧美不卡一区二区三区| 2021久久国产精品不只是精品| 91精品国产综合久久久久久久| 欧美日韩国产区一| 91精品视频网| 日韩丝袜情趣美女图片| 欧美刺激脚交jootjob| 久久蜜桃av一区二区天堂 | 日韩成人一级大片| 日本va欧美va精品| 国产一区二区三区香蕉| 粉嫩一区二区三区性色av| 成人免费观看男女羞羞视频| av欧美精品.com| 91精彩视频在线观看| 欧美日韩国产一级二级| 日韩一区二区视频| 久久久不卡影院| 国产精品嫩草影院av蜜臀| 一区二区免费在线播放| 日本aⅴ精品一区二区三区| 国内久久精品视频| 成人av在线电影| 欧美日韩国产一二三| ww亚洲ww在线观看国产| 国产精品久久久久永久免费观看| 亚洲女同一区二区| 日韩福利电影在线观看| 国产成人综合自拍| 欧美性猛片xxxx免费看久爱 | 精品久久久久久久久久久久久久久久久 | 久久久精品蜜桃| 亚洲三级免费观看| 日本不卡一二三| 成人黄色免费短视频| 91蜜桃婷婷狠狠久久综合9色| 欧美日韩精品一区二区三区蜜桃| 久久综合色鬼综合色| 亚洲另类在线视频| 久久精品久久精品| caoporn国产一区二区| 欧美卡1卡2卡| 国产精品色噜噜| 日韩激情视频网站| 国产999精品久久久久久| 欧美色图在线观看| 国产欧美一区二区三区网站| 婷婷开心激情综合| 不卡一二三区首页| 欧美刺激午夜性久久久久久久| 成人免费在线播放视频| 久久成人麻豆午夜电影| 日本高清不卡视频| 国产精品青草久久| 激情综合一区二区三区| 欧美性色黄大片手机版| 国产精品无码永久免费888| 日本大胆欧美人术艺术动态 | 日本一区中文字幕| 91在线无精精品入口| 久久欧美一区二区| 日本欧美一区二区在线观看| jvid福利写真一区二区三区| 精品电影一区二区三区| 亚洲国产成人tv| 91伊人久久大香线蕉| 26uuu久久综合| 久久精品国产99国产精品| 欧美中文一区二区三区| 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲精品亚洲人成人网在线播放| 麻豆精品久久久| 欧美人与z0zoxxxx视频| 一级精品视频在线观看宜春院 | 精品第一国产综合精品aⅴ| 无吗不卡中文字幕| 91官网在线观看| 亚洲欧洲综合另类| www.亚洲人| 国产校园另类小说区| 国产原创一区二区三区| 精品久久久影院| 国产在线视频不卡二| 欧美大片顶级少妇| 精品一区二区在线观看| 91精品国产乱| 久久精品国内一区二区三区 | 久久久久久久久97黄色工厂| 蜜桃av一区二区三区| 日韩欧美色电影| 奇米影视一区二区三区小说| 欧美裸体一区二区三区| 午夜久久久久久电影| 欧美精品第一页| 美国毛片一区二区三区| 精品精品国产高清a毛片牛牛| 久久国产剧场电影| 精品福利av导航| 懂色av一区二区三区免费观看| 欧美激情综合在线| 成人在线一区二区三区| 亚洲欧美福利一区二区| 欧美网站一区二区| 日欧美一区二区| 欧美va天堂va视频va在线| 国产盗摄视频一区二区三区| 欧美激情在线看| 日本高清无吗v一区| 日韩电影在线看| 久久一二三国产| av在线一区二区三区| 亚洲一区二区三区三| 337p亚洲精品色噜噜| 国产黄色精品网站| 亚洲免费伊人电影| 欧美一卡在线观看| 国产一区二区三区在线观看精品 | 亚洲国产综合在线| 日韩午夜在线观看视频| 国产成人av自拍| 亚洲乱码国产乱码精品精小说 |