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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mconfig.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
/* mConfig.c - contians configuration and setup functions for manlib */
/* Copyright (c) 2001 Atheros Communications, Inc., All Rights Reserved */

#ident  "ACI $Id: //depot/sw/branches/ART_V53_dragon/sw/src/dk/mdk/devlib/mConfig.c#9 $, $Header: //depot/sw/branches/ART_V53_dragon/sw/src/dk/mdk/devlib/mConfig.c#9 $"

/* 
Revsision history
--------------------
1.0       Created.
*/

#ifdef VXWORKS
#include "vxworks.h"
#endif

#ifdef __ATH_DJGPPDOS__
#include <unistd.h>
#ifndef EILSEQ  
    #define EILSEQ EIO
#endif  // EILSEQ

#define __int64 long long
#define HANDLE long
typedef unsigned long DWORD;
#define Sleep   delay
#endif  // #ifdef __ATH_DJGPPDOS__


#include "wlantype.h"
#include "ar5210reg.h"

#if defined(SPIRIT_AP) || defined(FREEDOM_AP)
#ifdef COBRA_AP
#include "ar531xPlusreg.h"
#else
#include "ar531xreg.h"
#endif

#ifdef FALCON_ART_CLIENT
#include "ar5513reg.h"
#endif

#endif

#include "athreg.h"
#include "manlib.h"
#include "mdata.h"
#include "mEeprom.h"
#include "mConfig.h"
#include "mDevtbl.h"
#ifdef LINUX 
#include "../mdk/dk_ver.h"
#else
#include "..\mdk\dk_ver.h"
#endif
#include "mCfg210.h"
#include "mCfg211.h"
#include "mData211.h"
#include "mEEP210.h"
#include "mEEP211.h"
#include "..\ar5513\mCfg513.h"
#include "..\ar6000\mEep6000.h"
#include "artEar.h"
#include "art_ani.h"
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <errno.h>
#include <math.h>
#include "mIds.h"
#include "rate_constants.h"
//#ifdef LINUX
//#include "linuxdrv.h"
//#else
#include "ntdrv.h"
//#endif
#if !defined(VXWORKS) && !defined(LINUX)
#include <io.h>
#endif

#if (!CUSTOMER_REL) && (INCLUDE_DRIVER_CODE)
#if (MDK_AP) 
int m_ar5212Reset(LIB_DEV_INFO *pLibDev, A_UCHAR *mac, A_UCHAR *bss, A_UINT32 freq, A_UINT32 turbo) {
        return -1;
}
#else
  #include "m_ar5212.h"
#endif
#endif //CUSTOMER_REL

// ARCH_BIG_ENDIAN is defined some where. Cannot determine where it is defined
// Undefined LINUX for now
//#ifdef LINUX 
//#undef ARCH_BIG_ENDIAN
//#endif

// Mapping _access to access
#if defined (LINUX) || defined (__ATH_DJGPPDOS__ )
#define _access(fileName,mode) access((const char *)(fileName),(int)(mode))
#endif

#ifdef ARCH_BIG_ENDIAN
#include "endian_func.h"
#endif


//###########Temp place for ar5001 definitions
#define F2_EEPROM_ADDR      0x6000  // EEPROM address register (10 bit)
#define F2_EEPROM_DATA      0x6004  // EEPROM data register (16 bit)

#define F2_EEPROM_CMD       0x6008  // EEPROM command register
#define F2_EEPROM_CMD_READ   0x00000001
#define F2_EEPROM_CMD_WRITE  0x00000002
#define F2_EEPROM_CMD_RESET  0x00000004

#define F2_EEPROM_STS       0x600c  // EEPROM status register
#define F2_EEPROM_STS_READ_ERROR     0x00000001
#define F2_EEPROM_STS_READ_COMPLETE  0x00000002
#define F2_EEPROM_STS_WRITE_ERROR    0x00000004
#define F2_EEPROM_STS_WRITE_COMPLETE 0x00000008


LIB_INFO gLibInfo = {0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
MANLIB_API A_UINT32 enableCal = DO_NF_CAL | DO_OFSET_CAL;

A_UINT32 lib_memory_range;
A_UINT32 cache_line_size;

static A_INT32 tempMDKErrno = 0;
static char tempMDKErrStr[SIZE_ERROR_BUFFER];
#ifndef MDK_AP
static FILE     *logFileHandle;
static A_BOOL   logging = 0;
#endif


PCI_VALUES pciValues[MAX_PCI_ENTRIES];

//MANLIB_API A_UINT32 checkSumLength=0x400; //default to 16k
//MANLIB_API A_UINT32 eepromSize=0;
                    
// Local Functions
static void    initializeTransmitPower(A_UINT32 devNum, A_UINT32 freq,  
    A_INT32  override, A_UCHAR  *pwrSettings);
static A_BOOL setChannel(A_UINT32 devNum, A_UINT32 freq);
static void setSpurMitigation(A_UINT32 devNum, A_UINT32 freq);
static void testEEProm(A_UINT32 devNum);
static void enable_beamforming(A_UINT32 devNum);
static void init_beamforming_weights(A_UINT32 devNum);
#ifdef HEADER_LOAD_SCHEME
static A_BOOL setupEEPromHeaderMap(A_UINT32 devNum);
#endif //HEADER_LOAD_SCHEME

static PWR_CTL_PARAMS  pwrParams = { {FALSE, FALSE, FALSE}, 
                                    {0, 0, 0}, 
                                    {0, 0, 0}, 
                                    {0, 0, 0}, 
                                    {0, 0, 0}, 
                                    {0, 0, 0}, 
                                    {0, 0, 0}, 
                                    {0, 0, 0}, 
                                    {0, 0, 0}, 
                                    {0, 0, 0} };

A_UINT32 hwReset ( A_UINT32 devNum, A_UINT32 resetMask) {
    LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];

    //printf("SNOOP:::hwReset passing to %s\n", (pLibDev->devMap.remoteLib?"remote":"local"));

    if (pLibDev->devMap.remoteLib)
       return (pLibDev->devMap.r_hwReset(devNum, resetMask));
    else {
       ar5kInitData[pLibDev->ar5kInitIndex].pMacAPI->hwReset(devNum, resetMask);
       return(0xDEADBEEF); // it appears hwReset is overloaded to return macRev ONLY for remoteLib.
                          // return a bogus value in other case to suppress warnings. PD 1/04
    }
}

void pllProgram ( A_UINT32 devNum, A_UINT32 turbo) {

    LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];


    if (pLibDev->devMap.remoteLib) {
        if((ar5kInitData[pLibDev->ar5kInitIndex].deviceID & 0xf000 == 0xa000) && pLibDev->mode == MODE_11B)
           changeField(devNum,"bb_tx_frame_to_xpab_on", 0x7);
        pLibDev->devMap.r_pllProgram(devNum, turbo, pLibDev->mode);
    }
    else
        ar5kInitData[pLibDev->ar5kInitIndex].pMacAPI->pllProgram(devNum, turbo);
}

MANLIB_API A_INT32 getNextDevNum() {
    A_UINT32 i;
    for(i = 0; i < LIB_MAX_DEV; i++) {
        if(gLibInfo.pLibDevArray[i] == NULL) {
            return i;
        }
    }
    return -1;
}

/**************************************************************************
* initializeDevice - Setup all structures associated with this device
*
*/
MANLIB_API A_UINT32 initializeDevice
(
 struct DeviceMap map
) 
{
    A_UINT32     i, devNum = LIB_MAX_DEV;
    LIB_DEV_INFO *pLibDev;

    if (map.remoteLib) { // Thin client
        lib_memory_range = 32 * 1024; // 100kB
        //lib_memory_range = 10 * 1024; // 100kB
        cache_line_size = 0x10;
    }
    else { // library present locally
        lib_memory_range = 1048576; // 1mB
        cache_line_size = 0x20;
    }

    //printf("SNOOP:: intializeDevice called\n");
    if(gLibInfo.devCount+1 > LIB_MAX_DEV) {
        mError(0xdead, EINVAL, "initializeDevice: Cannot initialize more than %d devices\n", LIB_MAX_DEV);
        return 0xdead;
    }

    // Device sanity checks
    if(map.DEV_CFG_RANGE != LIB_CFG_RANGE) {
        mError(0xdead, EINVAL, "initializeDevice: DEV_CFG_RANGE should be %d, was given %d\n", LIB_CFG_RANGE, map.DEV_CFG_RANGE);
        return 0xdead;
    }
    // Atleast 1 MB of memory is required

    if(map.DEV_MEMORY_RANGE < lib_memory_range) {
        mError(0xdead, EINVAL, "initializeDevice: DEV_MEMORY_RANGE should be more than %d, was given %d\n", lib_memory_range, map.DEV_MEMORY_RANGE);
        return 0xdead;
    }

    if(map.DEV_REG_RANGE != LIB_REG_RANGE) {
        mError(0xdead, EINVAL, "initializeDevice: DEV_REG_RANGE should be %d, was given %d\n", LIB_REG_RANGE, map.DEV_REG_RANGE);
        return 0xdead;
    }

    //check for the allocated memory being cache line aligned.
        if (map.DEV_MEMORY_ADDRESS & (cache_line_size - 1)) {
            mError(0xdead, EINVAL, 
                "initializeDevice: DEV_MEMORY_ADDRESS should be cache line aligned (0x%x), was given 0x%08lx\n", 
                cache_line_size, map.DEV_MEMORY_ADDRESS);
            return 0xdead;
        }

        for(i = 0; i < LIB_MAX_DEV; i++) {
        if(gLibInfo.pLibDevArray[i] == NULL) {
            devNum = i;
            break;
        }
    }

    assert(i < LIB_MAX_DEV);

    // Allocate the structures for the new device
    gLibInfo.pLibDevArray[devNum] = (LIB_DEV_INFO *)malloc(sizeof(LIB_DEV_INFO));
        if  (gLibInfo.pLibDevArray[devNum] == NULL) {
       mError(devNum, ENOMEM, "initializeDevice: Failed to allocate the library device information structure\n");
       return 0xdead;
    }

    // Zero out all structures
    pLibDev = gLibInfo.pLibDevArray[devNum];
    memset(pLibDev, 0, sizeof(LIB_DEV_INFO));

    pLibDev->devNum = devNum;
    pLibDev->ar5kInitIndex = UNKNOWN_INIT_INDEX;
    gLibInfo.devCount++;
    memcpy(&(pLibDev->devMap), &map, sizeof(struct DeviceMap));

    /* Initialize the map bytes for tracking memory management: calloc will init to 0 as well*/
    pLibDev->mem.allocMapSize = (pLibDev->devMap.DEV_MEMORY_RANGE / BUFF_BLOCK_SIZE) / 8;
    pLibDev->mem.pAllocMap = (A_UCHAR *) calloc(pLibDev->mem.allocMapSize, sizeof(A_UCHAR));
    if(pLibDev->mem.pAllocMap == NULL) {
        mError(devNum, ENOMEM, "initializeDevice: Failed to allocate the allocation map\n");
        free(gLibInfo.pLibDevArray[devNum]);
        return 0xdead;
    }

    pLibDev->mem.pIndexBlocks = (A_UINT16 *) calloc((pLibDev->mem.allocMapSize * 8), sizeof(A_UINT16));
    if(pLibDev->mem.pIndexBlocks == NULL) {
        mError(devNum, ENOMEM, "initializeDevice: Failed to allocate the indexBlock map\n");
        free(gLibInfo.pLibDevArray[devNum]->mem.pAllocMap);
        free(gLibInfo.pLibDevArray[devNum]);
        return 0xdead;
    }
    pLibDev->mem.usingExternalMemory = FALSE;

    pLibDev->regFileRead = 0;
    pLibDev->regFilename[0] = '\0'; // empty string

    pLibDev->mdkErrno = 0;
    pLibDev->mdkErrStr[0] = '\0';
    pLibDev->libCfgParams.refClock = REF_CLK_DYNAMIC;
    pLibDev->devState = INIT_STATE;

    pLibDev->eepromStartLoc = 0x00; // default. set to 0x400 for the 2nd eeprom_block if present
    pLibDev->maxLinPwrx4    = 0;    // default init to 0 dBm

    pLibDev->libCfgParams.chainSelect = 2;
    pLibDev->libCfgParams.flashCalSectorErased = FALSE;
    pLibDev->libCfgParams.useShadowEeprom = FALSE;
    pLibDev->libCfgParams.useEepromNotFlash = FALSE; // AR5005 configured to use flash by default 
    pLibDev->libCfgParams.tx_chain_mask = 0x3; // default dual for falcon
    pLibDev->libCfgParams.rx_chain_mask = 0x3; // default dual for falcon
    pLibDev->libCfgParams.chain_mask_updated_from_eeprom = FALSE; 
    pLibDev->blockFlashWriteOn = FALSE;
    pLibDev->noEndPacket = FALSE;

#ifndef __ATH_DJGPPDOS__
    // enable ART ANI and reuse by default
    configArtAniSetup(devNum, ART_ANI_ENABLED, ART_ANI_REUSE_ON);
#endif

    return devNum;
}

/**************************************************************************
* useMDKMemory - Repoints the libraries memory map at the one used by
*                MDK so they can share the map
*
*/

MANLIB_API void useMDKMemory
(
 A_UINT32 devNum, 
 A_UCHAR *pExtAllocMap,
 A_UINT16 *pExtIndexBlocks
)
{
    LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];

    if(gLibInfo.pLibDevArray[devNum] == NULL) {
        mError(devNum, EINVAL, "Device Number %d:useMDKMemory\n", devNum);
        return;
    }
    if (gLibInfo.pLibDevArray[devNum]->devState < INIT_STATE) {
        mError(devNum, EILSEQ, "Device Number %d:useMDKMemory: initializeDevice must be called first\n", devNum);
        return;
    }
    if((pExtAllocMap == NULL) || (pExtIndexBlocks == NULL)) {
        mError(devNum, EINVAL, "Device Number %d:useMDKMemory: provided memory pointers are NULL\n", devNum);
        return;
    }
    // Free the current Memory Map
    free(gLibInfo.pLibDevArray[devNum]->mem.pIndexBlocks);
    free(gLibInfo.pLibDevArray[devNum]->mem.pAllocMap);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日本一区二区三区| 欧美三级在线看| 免费成人美女在线观看.| 亚洲在线视频免费观看| 一区二区三区四区蜜桃| 亚洲高清在线视频| 五月天亚洲精品| 琪琪一区二区三区| 国产一本一道久久香蕉| 成人午夜在线免费| 99riav久久精品riav| 在线看国产一区| 91精品国产福利在线观看| 日韩精品一区二区三区视频| 欧美α欧美αv大片| 国产亚洲成aⅴ人片在线观看 | 欧美色偷偷大香| 欧美人与z0zoxxxx视频| 日韩欧美在线影院| 国产精品亲子伦对白| 亚洲三级久久久| 全部av―极品视觉盛宴亚洲| 国产一区二区久久| 在线亚洲一区二区| 日韩欧美一级特黄在线播放| 国产色爱av资源综合区| 亚洲一二三专区| 国产精品一区二区男女羞羞无遮挡| 成人av影院在线| 欧美电影一区二区三区| 久久精品夜色噜噜亚洲aⅴ| 亚洲人成小说网站色在线| 免费在线成人网| www.日本不卡| 欧美xxxxxxxx| 亚洲综合一二区| 成人激情午夜影院| 欧美一区二区三区婷婷月色| 国产精品第13页| 另类小说视频一区二区| 91小视频免费观看| 久久蜜桃av一区精品变态类天堂| 亚洲精选一二三| 国产成人免费视频精品含羞草妖精| 在线观看91视频| 中文字幕中文在线不卡住| 精品一区二区三区久久久| 色综合天天做天天爱| 久久久久国产精品免费免费搜索| 亚洲成国产人片在线观看| 99天天综合性| 中文字幕av一区二区三区免费看 | 亚洲精品免费电影| 国产福利一区二区三区在线视频| 欧美三级日韩三级| 亚洲另类在线视频| 色呦呦国产精品| 中文av一区特黄| 国产麻豆精品久久一二三| 欧美日韩国产电影| 一区二区三区不卡视频在线观看| 丁香网亚洲国际| 久久免费精品国产久精品久久久久 | 精品国产sm最大网站免费看 | 日韩美女主播在线视频一区二区三区| 亚洲激情校园春色| av日韩在线网站| 国产精品不卡在线观看| 粉嫩av一区二区三区在线播放| 精品日韩欧美一区二区| 久久精品二区亚洲w码| 欧美一级高清大全免费观看| 婷婷久久综合九色综合绿巨人| 色8久久人人97超碰香蕉987| 国产精品久久久久久久久晋中 | 色狠狠色狠狠综合| 一区二区三区在线视频免费观看| www.一区二区| 一区二区高清视频在线观看| 欧美吞精做爰啪啪高潮| 午夜精品爽啪视频| 欧美一区二区三区四区视频| 久久99蜜桃精品| 国产亚洲欧美日韩在线一区| 成人综合激情网| 有坂深雪av一区二区精品| 在线免费视频一区二区| 婷婷综合五月天| 精品999在线播放| 福利视频网站一区二区三区| 亚洲欧洲色图综合| 欧美在线观看一区| 久久精品免费看| 国产免费成人在线视频| 成人av一区二区三区| 亚洲午夜免费福利视频| 日韩视频不卡中文| 成人丝袜高跟foot| 亚洲国产cao| 久久久午夜精品| 91麻豆高清视频| 日本在线不卡视频一二三区| 久久久久国产一区二区三区四区| 91理论电影在线观看| 日韩电影网1区2区| 国产精品日日摸夜夜摸av| 91久久精品一区二区三区| 蜜桃精品视频在线| 国产精品美女久久久久久久| 欧美高清性hdvideosex| 成人av网站在线观看免费| 亚洲成人激情自拍| 中文幕一区二区三区久久蜜桃| 欧美性受xxxx| 丁香桃色午夜亚洲一区二区三区| 一区二区三区四区不卡在线| 久久天天做天天爱综合色| 欧美午夜理伦三级在线观看| 国产乱子轮精品视频| 婷婷中文字幕一区三区| 综合久久国产九一剧情麻豆| 日韩欧美在线不卡| 欧美无人高清视频在线观看| 成人精品国产福利| 激情六月婷婷久久| 日本伊人午夜精品| 亚洲高清免费观看| 亚洲天堂a在线| 欧美—级在线免费片| 91精品国产91久久综合桃花| 欧美在线免费观看视频| 91美女视频网站| caoporm超碰国产精品| 国产精品一级二级三级| 免费成人av在线播放| 亚洲第一在线综合网站| 亚洲视频一二区| 国产精品天美传媒沈樵| 亚洲精品一区二区三区在线观看| 欧美日韩精品是欧美日韩精品| 91蜜桃网址入口| 色综合久久久久久久久| hitomi一区二区三区精品| 粉嫩嫩av羞羞动漫久久久| 丁香六月久久综合狠狠色| 国产高清不卡二三区| 国产.欧美.日韩| 成人av影院在线| 99麻豆久久久国产精品免费优播| 粉嫩aⅴ一区二区三区四区五区| 国产精品自产自拍| 国产夫妻精品视频| 成人激情小说乱人伦| 成人h精品动漫一区二区三区| 成人激情午夜影院| 色婷婷亚洲一区二区三区| 色www精品视频在线观看| 在线观看一区日韩| 欧美日韩在线播放| 欧美一区二区三区日韩| 精品久久久三级丝袜| 国产日韩精品视频一区| 国产精品免费观看视频| 洋洋成人永久网站入口| 日本午夜精品一区二区三区电影 | 在线看国产一区二区| 欧美丰满高潮xxxx喷水动漫| 欧美成人伊人久久综合网| 久久精品无码一区二区三区| 17c精品麻豆一区二区免费| 一级精品视频在线观看宜春院| 天涯成人国产亚洲精品一区av| 美女脱光内衣内裤视频久久网站 | 在线观看国产一区二区| 欧美丰满一区二区免费视频| 欧美xxxxxxxx| 亚洲色图欧美偷拍| 琪琪一区二区三区| 97se亚洲国产综合自在线观| 欧美日韩一卡二卡| 久久精品免视看| 亚洲丰满少妇videoshd| 黄网站免费久久| 欧洲生活片亚洲生活在线观看| 日韩视频不卡中文| 亚洲人成网站在线| 国产在线日韩欧美| 欧美亚洲国产bt| 国产欧美一区二区精品性色超碰| 亚洲乱码国产乱码精品精98午夜 | 在线电影院国产精品| 国产精品日日摸夜夜摸av| 首页欧美精品中文字幕| 高清视频一区二区| 日韩欧美一区在线| 亚洲欧美韩国综合色| 国产一区二区三区不卡在线观看| 在线亚洲人成电影网站色www| 久久众筹精品私拍模特| 午夜精品福利在线|