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

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

?? mmask.c

?? Atheros AP Test with Agilent N4010A source code
?? C
字號:
// To Do List :
//
//  1. verify setResetParams

#ifdef _WINDOWS
#include <windows.h>
#endif 
#include <stdio.h>
#ifdef WIN32
#include <conio.h>
#endif
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <ctype.h>
#include <stdarg.h>
#include "wlantype.h"   /* typedefs for A_UINT16 etc.. */
#include "athreg.h"
#include "manlib.h"     /* The Manufacturing Library */
#include "mConfig.h"

#include "mMaskPhys.h"
#include "mMaskMath.h"

A_UINT32 goldDevNum;
A_UINT32 dutDevNum;
double total_gain_val = 0;

extern A_UINT32 CAP_DESC_PTR;
extern A_UINT32 CAP_DATA_PTR;	 

MANLIB_API void set_dev_nums(A_UINT32 gold_dev, A_UINT32 dut_dev) {
	goldDevNum = gold_dev;
	dutDevNum  = dut_dev;
}

// Routine to force the noise floor (NOTE: values latch after do_noisefloor!!)
MANLIB_API void force_minccapwr (A_UINT32 maxccapwr) {
	A_UINT32  do_noisefloor = 1 ;
	// Disable noise cal
	REGW(goldDevNum, 0x9860,REGR(goldDevNum, 0x9860)&~0x8002);

	// Force value of noise floor (maxCCApwr) and 
	REGW(goldDevNum, 0x9864, sign_trunc(maxccapwr*2,9));
    
	// Do noise cal to load minCCApwr register
	REGW(goldDevNum, 0x9860,REGR(goldDevNum, 0x9860)|(do_noisefloor<<1));

	while (do_noisefloor == 1) {
		do_noisefloor = (REGR(goldDevNum, 0x9860)|0x2) >> 1;
	}
}

// Routine to consume descriptors and report the most likely gains and rssi
MANLIB_API double detect_signal (A_UINT32 desc_cnt, A_UINT32 adc_des_size, A_UINT32 mode, A_UINT32 *gain) {
    A_UINT32 rx_desc_ptr ;
    A_UINT32 rx_data_ptr ;
    A_UINT32 buf_len = 0;
    A_UINT32 tmp_ptr = 0;
    A_UINT32 k = 0;
    double   rssi = 0;
    A_UINT32 rfgain_max = 64;
    A_UINT32 bbgain_max = 64;
    A_UINT32 rfgain_desired = 0;
    A_UINT32 bbgain_desired = 0;
    A_UINT32  rfgain_adj = adc_des_size - adc_desired_size();
	A_BOOL	  debug = 1;

printf("SNOOP: read rfgain_adj=%d\n", rfgain_adj);

    buf_len = pad_rx_buffer(HEAD_LEN+MDK_HEAD_LEN+MDK_DATA_LEN);

printf("SNOOP: buf_len=%d\n", buf_len);

    rx_desc_ptr = memAlloc(goldDevNum, desc_cnt * DESC_LEN);
    rx_data_ptr = memAlloc(goldDevNum, desc_cnt * buf_len);
     
printf("SNOOP: malloc done\n");

    for (k=0;k<desc_cnt;k++) {
        tmp_ptr = rx_desc_ptr + (k*DESC_LEN);
        mem_write(tmp_ptr, tmp_ptr+DESC_LEN);
        mem_write(tmp_ptr+0x4, rx_data_ptr+k*buf_len);
        mem_write(tmp_ptr+0x8, 0x0);
        mem_write(tmp_ptr+0xc, buf_len);
        mem_write(tmp_ptr+0x10, 0x0);
        mem_write(tmp_ptr+0x14, 0x0);
    }

printf("SNOOP: mem_write done \n");


    mem_write(tmp_ptr, 0x0);

    REGW(goldDevNum, 0x803c,0x20);                                   // mac::pcu::rx_filter::promisc
    REGW(goldDevNum, 0x8048,0x0);                                    // mac::pcu::diag_sw::rx_disable
        
    REGW(goldDevNum, 0x000c,rx_desc_ptr);                           // mac::dru::rxdp::linkptr
    REGW(goldDevNum, 0x0008,0x4);                                    // mac::dru::cr::rxe

//printf("SNOOP: REGW done \n");

    report_gain(rx_desc_ptr,desc_cnt, &(gain[0]));


//printf("SNOOP: report gain done \n");

    if (debug) { printf("Snoop: Current => RF: %d, BB: %d\n",gain[0],gain[1]); }

    rfgain_desired = gain[0] + rfgain_adj * 2;
    if (rfgain_desired > rfgain_max) {
        gain[0] = rfgain_max;
        bbgain_desired = gain[1] + (rfgain_desired-rfgain_max);
    } else {
        gain[0] = rfgain_desired;
        bbgain_desired = gain[1];
    }
    if (debug) { printf("Snoop: Desired => RF: %d, BB: %d\n",rfgain_desired,bbgain_desired); }

    if (bbgain_desired > bbgain_max) {
        gain[1] = bbgain_max;
    } else {
        gain[1] = bbgain_desired;
    }

	total_gain_val = total_gain(gain, mode);

printf("SNOOP: total gain=%f \n", total_gain_val);

    rssi = report_rssi(rx_desc_ptr,desc_cnt);

printf("SNOOP: rssi=%f \n", rssi );

	memFree(goldDevNum, rx_desc_ptr);
	memFree(goldDevNum, rx_data_ptr);


//printf("SNOOP: freed memory. done with detect_signal. returning rssi. \n");

    return (rssi);
}


// Routine to fix the gain at a given level
MANLIB_API void config_capture (A_UINT32 dut_dev, A_UCHAR *RX_ID, A_UCHAR *BSS_ID, A_UINT32 channel, A_UINT32 turbo, A_UINT32 *gain, A_UINT32 mode) {
	if (mode==2) { 
		mode = 1;	// 11b => 11g
	}
	setResetParams(goldDevNum, NULL, 0, 0, (A_UCHAR)mode, 0);
	resetDevice(dut_dev, RX_ID , BSS_ID, channel, turbo);
	
	REGW(goldDevNum, 0x9804,1);                                      // turbo=1 to make rx filter 40 MHz
	force_gain(gain[0], gain[1], gain[2], gain[3], gain[4]);
	printf("forced gain to : %d, %d, %d, %d, %d\n", gain[0], gain[1], gain[2], gain[3], gain[4]);
	
	enable_tstadc();
	arm_rx_buffer();
}


// Routine to trigger a pre-defined sweep across the desired channel
// and return the concatenated power spectral density estimate
MANLIB_API A_UINT32 trigger_sweep (A_UINT32 dut_dev, A_UINT32 channel, A_UINT32 mode, A_UINT32 averages, A_UINT32 path_loss, A_BOOL return_spectrum, double *psd) {
	A_UINT32 lvl_offset = path_loss - (A_UINT32) total_gain_val;  // total gain is computed in detect_signal earlier
	A_UINT32 num_fail_pts = 0;
	double *psdl40;
	double *psdl30;
	double *psdm;
	double *psdr30;
	double *psdr40;
//	A_UINT32 psd[ NUM_BASE_MASK_PTS];

	A_UINT32 ii, jj, size40;

	double   *WR_TURBO;
	double   *WI_TURBO;
	double   *WR_BASE;
	double   *WI_BASE;

	A_UINT32 CCK_L0, CCK_L1 ;
	A_UINT32 CCK_M0, CCK_M1;
	A_UINT32 CCK_R0, CCK_R1;
	A_UINT32 OFDM_L0, OFDM_L1;
	A_UINT32 OFDM_M0, OFDM_M1;
	A_UINT32 OFDM_R0, OFDM_R1;

	A_UINT32	a,b,c,d,e;

	if (mode == 2) {
		size40 = NUM_BASE_MASK_PTS;
	} else {
		size40 = NUM_TURBO_MASK_PTS;
	}

	psdl40 = (double *) malloc(size40 * sizeof(double));
	psdr40 = (double *) malloc(size40 * sizeof(double));
	psdl30 = (double *) malloc(NUM_BASE_MASK_PTS * sizeof(double));
	psdr30 = (double *) malloc(NUM_BASE_MASK_PTS * sizeof(double));
	psdm   = (double *) malloc(NUM_TURBO_MASK_PTS * sizeof(double));


	WR_BASE = (double *) malloc( NUM_BASE_MASK_PTS * sizeof(double));
	WI_BASE = (double *) malloc( NUM_BASE_MASK_PTS * sizeof(double));
	WR_TURBO = (double *) malloc( NUM_TURBO_MASK_PTS * sizeof(double));
	WI_TURBO = (double *) malloc( NUM_TURBO_MASK_PTS * sizeof(double));

	printf("snoop: trigger_sweep : done with mallocs \n");

	slice(NUM_TURBO_MASK_PTS,12.5,12.5, &OFDM_R0, &OFDM_R1);
	slice(NUM_BASE_MASK_PTS,25,0, &CCK_L0, &CCK_L1);
	slice(NUM_TURBO_MASK_PTS,25,25, &CCK_M0, &CCK_M1);
	slice(NUM_BASE_MASK_PTS,0,25, &CCK_R0, &CCK_R1);
	slice(NUM_TURBO_MASK_PTS,12.5,12.5, &OFDM_L0, &OFDM_L1);
	slice(NUM_TURBO_MASK_PTS,25,25, &OFDM_M0, &OFDM_M1);

	printf("snoop: trigger_sweep : ofdm r0 r1 m0 m1 l0 l1 = %d %d %d %d %d %d \n", OFDM_R0, OFDM_R1, OFDM_M0, OFDM_M1, OFDM_L0, OFDM_L1);
	printf("snoop: trigger_sweep : CCK r0 r1 m0 m1 l0 l1 = %d %d %d %d %d %d \n", CCK_R0, CCK_R1, CCK_M0, CCK_M1, CCK_L0, CCK_L1);

	wtable(NUM_TURBO_MASK_PTS, &(WR_TURBO[0]), &(WI_TURBO[0]));
	wtable(NUM_BASE_MASK_PTS, &(WR_BASE[0]), &(WI_BASE[0]));

	printf("snoop: trigger_sweep : done generating wtables \n");

	printf("snoop: trigger_sweep: 1st est spec : reg 18 = 0x%x\n", REGR(goldDevNum, 0x9848));

	estimate_spectrum(NUM_TURBO_MASK_PTS,WR_TURBO,WI_TURBO,averages,lvl_offset, &(psdm[0]) );
	read_gain(&(a),&(b),&(c),&(d),&(e));
	printf("snoop: trigger_sweep: read gain after 1st est spec : %d, %d, %d, %d, %d\n", a,b,c,d,e);

	printf("snoop: trigger_sweep : done with 1st estimate_spectrum \n");

    if (mode == 2) {
        REGW(goldDevNum, 0x9804,0);
        changeChannel(dut_dev,channel-40);
	estimate_spectrum(NUM_BASE_MASK_PTS,WR_BASE,WI_BASE,averages,lvl_offset, &(psdl40[0]) );
        changeChannel(dut_dev,channel-30);
	estimate_spectrum(NUM_BASE_MASK_PTS,WR_BASE,WI_BASE,averages,lvl_offset, &(psdl30[0]) );
        changeChannel(dut_dev,channel+30);
	estimate_spectrum(NUM_BASE_MASK_PTS,WR_BASE,WI_BASE,averages,lvl_offset, &(psdr30[0]) );
        changeChannel(dut_dev,channel+40);
	estimate_spectrum(NUM_BASE_MASK_PTS,WR_BASE,WI_BASE,averages,lvl_offset, &(psdr40[0]) );
        changeChannel(dut_dev,channel);
        REGW(goldDevNum, 0x9804,1);

	printf("snoop: trigger_sweep : done with all estimate_spectra for mode==2\n");
	
	jj = 0;	ii = 0;
	while (ii <= (CCK_L1 - CCK_L0)) { psd[jj+ii] = psdl40[CCK_L0+ii]; ii++; }

	jj += ii; ii = 0;
	while (ii <= (CCK_L1 - CCK_L0)) { psd[jj+ii] = psdl30[CCK_L0+ii]; ii++; }
	
	jj += ii; ii = 0;
	while (ii <= (CCK_M1 - CCK_M0)) { psd[jj+ii] = psdm[CCK_M0+ii]; ii++; }
		
	jj += ii; ii = 0;
	while (ii <= (CCK_R1 - CCK_R0)) { psd[jj+ii] = psdr30[CCK_R0+ii]; ii++; }

	jj += ii; ii = 0;
	while (ii <= (CCK_R1 - CCK_R0)) { psd[jj+ii] = psdr40[CCK_R0+ii]; ii++; }

    } else {
        changeChannel(dut_dev,channel-30);
printf("snoop: trigger_sweep: 2nd est spec : reg 18 = 0x%x\n", REGR(goldDevNum, 0x9848));
	estimate_spectrum(NUM_TURBO_MASK_PTS,WR_TURBO,WI_TURBO,averages,lvl_offset, &(psdl40[0]) );
	read_gain(&(a),&(b),&(c),&(d),&(e));
	printf("snoop: trigger_sweep: read gain after 2nd est spec : %d, %d, %d, %d, %d\n", a,b,c,d,e);
        changeChannel(dut_dev,channel+30);
printf("snoop: trigger_sweep: 3rd est spec : reg 18 = 0x%x\n", REGR(goldDevNum, 0x9848));
	estimate_spectrum(NUM_TURBO_MASK_PTS,WR_TURBO,WI_TURBO,averages,lvl_offset, &(psdr40[0]) );
	read_gain(&(a),&(b),&(c),&(d),&(e));
	printf("snoop: trigger_sweep: read gain after 3rd est spec : %d, %d, %d, %d, %d\n", a,b,c,d,e);
        changeChannel(dut_dev,channel);

	printf("snoop: trigger_sweep : done with all estimate_spectra for mode!=2\n");

	jj = 0;	ii = 0;
	while (ii <= (OFDM_L1 - OFDM_L0)) { psd[jj+ii] = psdl40[OFDM_L0+ii]; ii++; 
	//printf("snoop: trigger_sweep: psd[%d] = %f\n", (jj+ii), psd[jj+ii-1]);
	}
	
	jj += ii; ii = 0;
	while (ii <= (OFDM_M1 - OFDM_M0)) { psd[jj+ii] = psdm[OFDM_M0+ii]; ii++; 
	//printf("snoop: trigger_sweep: psd[%d] = %f\n", (jj+ii), psd[jj+ii-1]);
	}

	jj += ii; ii = 0;
	while (ii <= (OFDM_R1 - OFDM_R0)) { psd[jj+ii] = psdr40[OFDM_R0+ii]; ii++; 
	//printf("snoop: trigger_sweep: psd[%d] = %f\n", (jj+ii), psd[jj+ii-1]);
	}

    }

	free(psdl40); free(psdr40); free(psdl30); free(psdr30); free(psdm);
	memFree(goldDevNum, CAP_DATA_PTR);
	memFree(goldDevNum, CAP_DESC_PTR);

	printf("snoop: trigger_sweep : done \n");

	if (return_spectrum) {
		return(num_fail_pts);  //psd = NULL; // dummy op
	} else {
		return(num_fail_pts);
	}

//	return(num_fail_pts);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产日本韩| 日韩欧美一二三区| 国产成人亚洲综合a∨婷婷图片| 高清国产一区二区| 成人免费毛片嘿嘿连载视频| 国产a级毛片一区| 成人av在线一区二区三区| 国产精品一区二区三区乱码| 国产精品一区不卡| 成人av综合在线| 欧洲色大大久久| 欧美一区三区四区| 久久久久久影视| 亚洲欧美在线视频观看| 亚洲二区在线视频| 免费看精品久久片| 国产一区 二区| 91视频在线观看| 欧美日韩国产成人在线91| 欧美一级久久久| 国产欧美日韩亚州综合| 亚洲欧美电影一区二区| 污片在线观看一区二区| 韩国av一区二区三区| 成人av电影在线| 欧美国产日韩亚洲一区| 亚洲乱码国产乱码精品精可以看| 亚洲国产精品一区二区久久恐怖片| 丝袜脚交一区二区| 风间由美性色一区二区三区| 在线观看免费成人| 久久久久久久精| 伊人一区二区三区| 国产精品18久久久久久久久| 日本精品免费观看高清观看| 日韩精品一区二区三区中文不卡 | 亚洲裸体xxx| 蜜桃av一区二区| 91免费看视频| 2024国产精品视频| 亚洲福利电影网| av激情亚洲男人天堂| 51精品秘密在线观看| 国产精品入口麻豆原神| 日本成人超碰在线观看| 成人黄色av网站在线| 日韩一区二区在线看| 亚洲欧美偷拍三级| 国产一区二区日韩精品| 91精品婷婷国产综合久久性色| 日本一区二区三区免费乱视频| 天天操天天干天天综合网| 91原创在线视频| 国产欧美一区二区精品仙草咪 | 日韩欧美的一区| 亚洲午夜久久久久久久久久久| 国产a级毛片一区| 精品少妇一区二区三区 | 久久亚洲一级片| 青青草成人在线观看| 欧美性一二三区| 亚洲欧美二区三区| 一本久久a久久免费精品不卡| 国产欧美综合色| 国产美女在线精品| 久久―日本道色综合久久| 蜜桃视频第一区免费观看| 欧美日韩一区国产| 亚洲大片一区二区三区| 欧美日韩一区小说| 亚洲福利电影网| 综合av第一页| 91女厕偷拍女厕偷拍高清| 亚洲国产精华液网站w| 国产成人精品影院| 欧美高清一级片在线观看| 国产69精品一区二区亚洲孕妇| 国产亚洲人成网站| 成人免费视频视频| 国产精品乱码人人做人人爱| av在线免费不卡| 亚洲美女偷拍久久| 欧美日韩在线观看一区二区 | 精品一区二区三区视频| 精品国产亚洲在线| 国产一区二区精品久久| 国产欧美一区二区三区在线老狼| 国产毛片精品视频| 中文字幕中文乱码欧美一区二区| 99在线精品视频| 亚洲精品视频一区| 欧美日韩精品二区第二页| 七七婷婷婷婷精品国产| 国产亚洲精品资源在线26u| 国产suv精品一区二区6| 18成人在线观看| 欧美精品在线一区二区| 蜜桃久久av一区| 国产精品欧美一区喷水| 在线观看www91| 国模一区二区三区白浆| 18涩涩午夜精品.www| 欧美日韩在线三区| 国产成人免费在线观看| 亚洲一区电影777| 日韩欧美美女一区二区三区| 成人福利电影精品一区二区在线观看| **性色生活片久久毛片| 欧美久久一二区| 国产成人自拍网| 亚洲午夜精品一区二区三区他趣| 日韩精品影音先锋| 欧美中文字幕一二三区视频| 蜜桃一区二区三区在线| 18成人在线观看| 欧美精品一区二| 欧美日韩国产小视频| 国产精品乡下勾搭老头1| 偷拍日韩校园综合在线| 中文av字幕一区| 日韩精品资源二区在线| 91浏览器打开| 丁香天五香天堂综合| 日韩精品免费专区| 亚洲欧洲制服丝袜| 欧美激情综合五月色丁香| 一区二区三区四区在线播放| 久久综合网色—综合色88| 欧美亚洲丝袜传媒另类| 成人一区二区三区视频| 国产综合色精品一区二区三区| 午夜视频一区在线观看| 亚洲日穴在线视频| 欧美国产成人精品| 久久综合五月天婷婷伊人| 欧美一区二区三区性视频| 色一情一乱一乱一91av| 国产成人精品免费网站| 另类欧美日韩国产在线| 天堂影院一区二区| 一区二区三区四区高清精品免费观看 | 久久久久九九视频| 欧美mv和日韩mv的网站| 欧美精品99久久久**| 欧美午夜精品一区二区三区| 色婷婷综合视频在线观看| 菠萝蜜视频在线观看一区| 国产成人欧美日韩在线电影| 国产精品亚洲成人| 国产伦精品一区二区三区免费迷| 捆绑调教一区二区三区| 五月天婷婷综合| 天天做天天摸天天爽国产一区| 亚洲123区在线观看| 亚洲成a人片综合在线| 亚洲综合色视频| 亚洲国产裸拍裸体视频在线观看乱了 | 黄色成人免费在线| 国产一区二区福利| 粉嫩一区二区三区在线看| 懂色av一区二区三区蜜臀| 成人免费视频caoporn| 91一区一区三区| 欧美丝袜自拍制服另类| 3d成人h动漫网站入口| 日韩区在线观看| 久久久久久久久久久久久久久99| 国产亚洲成aⅴ人片在线观看| 中文字幕 久热精品 视频在线| 国产精品久久久久久久久久久免费看 | 一区二区三区欧美日| 亚洲国产综合91精品麻豆| 日本欧美在线看| 国产福利一区在线| 在线免费不卡视频| 欧美一区永久视频免费观看| 国产亚洲综合在线| 亚洲欧美aⅴ...| 美腿丝袜亚洲综合| jlzzjlzz国产精品久久| 欧美日韩精品一区二区在线播放| 欧美成人三级电影在线| 国产精品天干天干在线综合| 一区二区三区在线免费播放| 奇米在线7777在线精品| 成人免费毛片aaaaa**| 欧美性生活影院| 精品sm在线观看| 一区二区三区成人在线视频| 极品瑜伽女神91| 欧美亚洲综合久久| 久久精品人人爽人人爽| 亚洲一区二区三区中文字幕 | 欧美激情一区二区三区蜜桃视频| 亚洲欧美一区二区久久| 国产剧情在线观看一区二区| 色婷婷av一区二区三区gif| 久久人人97超碰com| 日本vs亚洲vs韩国一区三区二区| 99久久综合精品|