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

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

?? mmaskphys.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁 / 共 2 頁
字號:
    A_UINT32 decryptcrcerr = 0;
    A_UINT32 phyerr = 0;
    A_UINT32 keyidxvalid = 0;
    A_UINT32 keycachemiss = 0;
    A_UINT32 desc4 = 0;
    A_UINT32 more = 0;
    A_UINT32 rssi = 0;
    double rssi_out_resolution = read_rssi_out();

    //    FILE *STATUS;
    char name[25];

	retval = (A_UINT32 *) malloc(100*sizeof(A_UINT32));

//    if( (STATUS = fopen( "status.nfo", "w")) == NULL ) {
//	  printf("Failed to open status.nfo - using Defaults\n");
//	  exit(0);
//    }

//    fprintf( STATUS, "RSSI\tDONE\tDATALEN\tMORE\tFRRXOK\tCRCERR\tFIFO\tDECRYPT\tPHYERR\tKEYIDX\tKEYCACHE\n");
//    fprintf( STATUS, "\t\t\t\t\t\tOVERRUN\tCRCERR\t\tVALID\tMISS\n");
    for (j=0;j<desc_cnt; j++) {
        tmp_ptr      = rx_desc_ptr + (j*DESC_LEN);   
        desc5         = mem_read(tmp_ptr + 0x14);
        done          = (desc5 & 0x1);
        frrxok        = ((desc5 & 0x2) != 0x0) ? 1 : 0;
        crcerr        = ((desc5 & 0x4) != 0x0) ? 1 : 0;
        fifooverrun   = ((desc5 & 0x8) != 0x0) ? 1 : 0;
        decryptcrcerr = ((desc5 & 0x10) != 0x0) ? 1 : 0;
        phyerr        = ((desc5 & 0x60) != 0x0) ? 1 : 0;
        keyidxvalid   = ((desc5 & 0x80) != 0x0) ? 1 : 0;
        keycachemiss  = ((desc5 & 0x10000000) != 0x0) ? 1 : 0;
        desc4         = mem_read(tmp_ptr + 0x10);
        datalen       = desc4 & 0xfff;
        more          = (desc4 >> 12) & 0x1;
        rssi          = sign_ext((desc4 >> 19) & 0xff,8);
        if (done & frrxok) {
            retval[k++] = rssi ;
        }
	//        fprintf( STATUS, "%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",rssi,done,datalen,more,frrxok,
	//	 crcerr,fifooverrun,decryptcrcerr,phyerr,keyidxvalid,keycachemiss);

    }
    //    fclose(STATUS) ;

    strcpy(name, "rssi");
	return_val = mode(&(retval[0]), k, name);
	free(retval);
    return(rssi_out_resolution*return_val);
}

// Routine to report the rssi after descriptor consumption
double report_rssi (A_UINT32 rx_desc_ptr, A_UINT32 desc_cnt) { 
    A_UINT32 j = 0;
    A_UINT32 k = 0;
    A_UINT32 tmp_ptr = 0;
    A_UINT32 desc4 = 0;
    A_UINT32 desc5 = 0;
    A_UINT32 rssi = 0;
    double rssi_out_resolution = read_rssi_out();
    double final_ret_val;
    A_UINT32 *retval;
	A_UINT32 return_val;

    char  name[25];

	retval = (A_UINT32 *) malloc(100*sizeof(A_UINT32));

    for (j=0;j<desc_cnt; j++) {
        tmp_ptr = rx_desc_ptr + (j*DESC_LEN);
        desc4 = mem_read(tmp_ptr + 0x10);
        desc5 = mem_read(tmp_ptr + 0x14);
        if ((desc5 & 0x3) == 0x3) {
            rssi = sign_ext((desc4 >> 20) & 0xff,8);	
printf("snoop: report_rssi: rssi[%d] = %d  (res = %f)\n",k, rssi, rssi_out_resolution);	
            retval[k++] = rssi;
        }
    }
    strcpy(name, "rssi");
	return_val =  mode(&(retval[0]),k,name);
	final_ret_val = (double) (return_val*rssi_out_resolution);
	free(retval);
    return(final_ret_val);
}

// Routine to read back setting for adc_desired_size
A_INT32 adc_desired_size () { 
    return sign_ext((REGR(goldDevNum, 0x9850) & 0xff),8)/2;
}



// Routine to setup the receive capture buffer and enable the tstadc
void enable_tstadc () { 
    CAP_DESC_PTR = memAlloc(goldDevNum, DESC_LEN);
    CAP_DATA_PTR = memAlloc(goldDevNum, CAPTURE_LEN);
    mem_write(CAP_DESC_PTR,      0x0);
    mem_write(CAP_DESC_PTR+0x4,  CAP_DATA_PTR);
    mem_write(CAP_DESC_PTR+0x8,  0x0);
    mem_write(CAP_DESC_PTR+0xc,  0xfff);
    mem_write(CAP_DESC_PTR+0x10, 0x0);
    mem_write(CAP_DESC_PTR+0x14, 0x0);
    REGW(goldDevNum, 0x803c,0x20);                                   // mac::pcu::rx_filter::promiscuous
    REGW(goldDevNum, 0x8048,0x0);                                    // mac::pcu::diag_sw::rx_disable
    REGW(goldDevNum, 0x9808, REGR(goldDevNum, 0x9808) | (1<<8) | (1<<10));   // tstadc_en=1, rx_obs_sel=adc
	printf("snoop: enable_tstadc : reg_9808 = 0x%x\n", REGR(goldDevNum, 0x9808));
    mSleep(10);
}

// Routine to reset and arm the tstadc
void arm_rx_buffer () { 
    A_UINT32 addr;

    for (addr=0; addr<CAPTURE_LEN/4; addr++) {
        mem_write(CAP_DATA_PTR+(addr<<2), 0x0);
    }
    REGW(goldDevNum, 0x8054, 0x0);                                   // pcu::tst_addac::test_mode
    mSleep(5);
    
    REGW(goldDevNum, 0x000c,CAP_DESC_PTR);                           // mac::dru::rxdp::linkptr
    REGW(goldDevNum, 0x0008,0x4);                                    // mac::dru::cr::rxe
    
    REGW(goldDevNum, 0x8054, (1<<20) | (1<<14) | 2);                 // pcu::tst_addac::[arm_rx_buffer
    mSleep(5);	
}
    

// Routine to capture the last n samples of tstadc data
void begin_capture (A_UINT32 n, double *i, double *q) { 
    A_UINT32 desc5 = CAP_DESC_PTR+0x14;
    A_UINT32 k = 0;
    A_UINT32 dwords = CAPTURE_LEN/4;
    A_UINT32 addr = 0;
    A_UINT32 rdaddr = 0;
    A_UINT32 rddata = 0;

	double ADC_OFFSET	 = pow(2,ADC_BITS)/2;
	double ADC_SCALE	 = ADC_VPP/pow(2,ADC_BITS);

    REGW(goldDevNum, 0x8054, REGR(goldDevNum, 0x8054) | (1<<19));            // pcu::tst_addac::begin_capture
    mSleep(10);

    while (((mem_read(desc5) & 0x1)) != 0x1) { 1; }
    mem_write(desc5, 0x0);

    // read tstadc data except last 2 samples which are empty
    for (addr=(dwords-n/2-1); addr<(dwords-1); addr++) {
        rdaddr = CAP_DATA_PTR + (addr<<2);
        rddata = mem_read(rdaddr);
    
        q[2*k]   = ((((rddata >> 8) & 0xff) << 1) - ADC_OFFSET) * ADC_SCALE;
        i[2*k]   = (((rddata & 0xff) << 1) - ADC_OFFSET) * ADC_SCALE;
        q[2*k+1] = ((((rddata >> 24) & 0xff) << 1) - ADC_OFFSET) * ADC_SCALE;
        i[2*k+1] = ((((rddata >> 16) & 0xff) << 1) - ADC_OFFSET) * ADC_SCALE;

        k++;    
    }
}


// Routine to capture the last n samples of tstadc data
// and estimate the power spectral density over averages
void estimate_spectrum (A_UINT32 n, double *wr, double *wi, A_UINT32 averages, A_UINT32 lvl_offset, double *psd) { 

    A_UINT32 j = 0;
    A_UINT32 k = 0;
    double *i, *q, *iq;
    double psd_offset = -PSD_SCALE*log((n*n)*averages);

	i  = (double *) malloc(n*sizeof(double));
	q  = (double *) malloc(n*sizeof(double));
	iq = (double *) malloc(n*sizeof(double));

	if ((i==NULL) || (q==NULL) || (iq==NULL)) {
			printf("could not allocate memory for i, q or iq\n");
			if (i != NULL) { free(i); }
			if (q != NULL) { free(q); }
			if (iq != NULL) { free(iq); }
			exit(0);
	}
	printf("snoop: estimate_spectrum : n=%d, avgs = %d, lvl_offset=%d\n", n, averages, lvl_offset);

    for (j=0; j<averages; j++) {
//      printf("snoop: estimate_spectrum : j=%d, ", j);

        arm_rx_buffer();
        begin_capture(n, &(i[0]), &(q[0]));
//      printf("snoop: estimate_spectrum : begun capture, ");

        fft(n,&(i[0]),&(q[0]),wr,wi);
//      printf("snoop: estimate_spectrum : did fft 1, ");
        mag(n,i,q,&(iq[0]));
//      printf("snoop: estimate_spectrum : did mag, ");
        fftshift(n,&(iq[0]));
//      printf("snoop: estimate_spectrum : did fft 2\n ");

        for (k=0; k<n; k++) {
            if (iq[k]!=0) { psd[k] += iq[k]; }
        }

    }
    // ---------------------------------------------------------------
    // PSD is calculated as:
    //
    //     averages
    //       ----         --             --
    //        \           |  *iq[j]/n  |
    //         >  20*log10|  -----------  |
    //        /           |   averages   |
    //       ----         __             __
    //       j=0
    //
    // ---------------------------------------------------------------
    for (k=0; k<n; k++) {
        psd[k] = PSD_SCALE*log(psd[k])+psd_offset+lvl_offset;
    }

    psd[n/2] = (psd[n/2-1]+psd[n/2+1])/2;

	free(i);
	free(q);
	free(iq);
      printf("snoop: estimate_spectrum : done \n");
}



// Routine to calculate turbo mode filter response at a given frequency
double turbo_resp (A_INT32 freq) { 
	A_UINT32  x = abs(freq);
	double retval;

	if (x <= 19e6) {
		retval = 0.0;
	} else if (x <= 20e6) {
		retval = interp(0.0,-0.5,19000000,20000000,x);
	} else if (x <= 30e6) {
		retval = interp(-0.5,-7.0,20000000,30000000,x);
	} else if (x <= 40e6) {
		retval = interp(-7.0,-13.5,30000000,40000000,x);
	} else {
		retval = -13.5;
	}
	return(retval);
}
           
// Routine to select the resolution of the rssi register
void select_rssi_out (double resolution) { 
	A_UINT32  format = 0;
	if (resolution == .5)  { 
		format = 1; 
	} else if (resolution == .25) { 
		format = 2; 
	}

	REGW(goldDevNum, 0x985c,REGR(goldDevNum, 0x985c) & ~(3<<30) | (format<<30));
}

// Routine to read the resolution of the rssi register
double read_rssi_out () { 
	A_UINT32 format = (REGR(goldDevNum, 0x985c) >> 30) & 0x3;

	if (format == 1) { 
		return .5; 
	} else if (format == 2) { 
		return .25; 
	} else { 
		return 1; 
	}
}

// Routine to read back the rssi register
A_UINT32 read_rssi () { 
    return sign_ext(REGR(goldDevNum, 0x9c1c),8);
}



// Routine to read back minccapwr register
A_UINT32 read_minccapwr () { 
    return sign_ext((REGR(goldDevNum, 0x9864) >> 19),9);
}

// Routine to read testout
A_UINT32 read_testout (A_UINT32 bits, A_UINT32 offset) {
//    if (not defined offset) { offset = 0; }
    REGW(goldDevNum, 0x987c+(bits<<2),0x0);
    return bit_rev((REGR(goldDevNum, 0x9c00) >> (32-bits-offset)) & mask(bits),bits);
}


A_UINT32 mem_read(A_UINT32 addr) {
	A_UINT32 buffer;
	LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[goldDevNum];

	pLibDev->devMap.OSmemRead(goldDevNum,addr, (A_UCHAR *)&buffer, 4);
	return(buffer);
}

void mem_write(A_UINT32 addr, A_UINT32 val) {
	LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[goldDevNum];
	pLibDev->devMap.OSmemWrite(goldDevNum, addr, (A_UCHAR *)&val, 4);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久福利| 国产精品青草久久| 日韩女优视频免费观看| 欧美一区在线视频| 久久久91精品国产一区二区精品 | 欧美极品少妇xxxxⅹ高跟鞋| 久久久91精品国产一区二区三区| 国产拍欧美日韩视频二区| 国产精品九色蝌蚪自拍| 一区二区三区在线影院| 天天色天天操综合| 成人aa视频在线观看| 欧美性受极品xxxx喷水| 欧美一级夜夜爽| 欧美经典三级视频一区二区三区| 一区二区三区四区视频精品免费| 日韩中文字幕亚洲一区二区va在线| 国产一级精品在线| 欧美日韩亚洲另类| 亚洲欧美在线观看| 麻豆91精品视频| 在线影院国内精品| 日本一区二区三区国色天香| 日产国产欧美视频一区精品| a亚洲天堂av| 国产精品久久久久久久久久久免费看| 亚洲成av人片一区二区梦乃| 91在线高清观看| 久久久久久久久久久久久久久99 | 精品少妇一区二区三区在线播放| 亚洲激情图片小说视频| 不卡的看片网站| 久久久久久久综合日本| 免费观看一级特黄欧美大片| 色域天天综合网| 一区二区日韩av| 欧美日韩亚洲不卡| av亚洲精华国产精华| 久久亚洲影视婷婷| 国产精品一区二区果冻传媒| 久久午夜老司机| 国产69精品久久久久毛片| 日韩午夜在线影院| 韩国成人在线视频| 久久精品欧美一区二区三区不卡 | √…a在线天堂一区| 成人av在线资源网| 亚洲人成在线播放网站岛国 | 亚洲欧美日韩国产一区二区三区| 99re成人在线| 亚洲一区二区在线观看视频| 欧美一区二区三区不卡| 久久97超碰国产精品超碰| 国产三级欧美三级| 色妹子一区二区| 美美哒免费高清在线观看视频一区二区| 日韩欧美一卡二卡| 成人av网站在线| 首页国产丝袜综合| 国产欧美日韩亚州综合| 欧美色中文字幕| 国产精品91xxx| 日韩一区精品视频| 亚洲日本乱码在线观看| 亚洲裸体xxx| 2021国产精品久久精品| 欧美日韩亚洲另类| 99精品桃花视频在线观看| 久久精品国产一区二区| 中文字幕在线播放不卡一区| 日韩午夜在线观看视频| 91社区在线播放| 国产成人综合在线播放| 蜜乳av一区二区三区| 亚洲午夜久久久久久久久电影院| 国产精品人妖ts系列视频| 欧美一区二区高清| 欧美一级黄色录像| 欧美老肥妇做.爰bbww视频| 色综合色综合色综合色综合色综合 | 精品一区二区三区不卡| 日本视频一区二区三区| 亚洲国产一区视频| 亚洲成人动漫精品| 三级不卡在线观看| 日本亚洲视频在线| 精品一区二区在线视频| 91国偷自产一区二区三区成为亚洲经典 | 91精品国产91久久久久久一区二区| 色噜噜狠狠成人网p站| 91女人视频在线观看| 懂色av一区二区三区蜜臀| 成人免费毛片a| 一本一道久久a久久精品综合蜜臀| 9i看片成人免费高清| 欧美日韩亚洲综合在线| 欧美一区二区三区在线观看视频 | 日韩国产高清影视| 久色婷婷小香蕉久久| 丁香激情综合五月| 欧美日韩综合在线| 久久久亚洲午夜电影| 亚洲色图20p| 老汉av免费一区二区三区| 国产精品自拍一区| 欧美亚洲国产一区在线观看网站 | 蜜桃一区二区三区在线观看| 成年人国产精品| 日韩精品中文字幕一区二区三区 | 欧美性大战久久| 日韩精品一区二区三区老鸭窝| 亚洲三级电影网站| 久久国产精品99久久人人澡| 在线视频欧美区| 国产精品女上位| 精品亚洲porn| 91精品国产一区二区三区 | 91在线观看地址| 久久精品一区二区三区不卡牛牛| 亚洲va韩国va欧美va| 99re视频精品| 亚洲女同ⅹxx女同tv| 黄网站免费久久| 精品国产亚洲在线| 久久精品久久精品| 日韩欧美电影一二三| 无码av中文一区二区三区桃花岛| 91久久国产最好的精华液| 亚洲三级理论片| 日本道免费精品一区二区三区| 中文字幕中文字幕中文字幕亚洲无线| 国产精品性做久久久久久| 精品国产一区二区在线观看| 国产精品伊人色| 国产精品久久久久久久久搜平片| 成人国产一区二区三区精品| 国产午夜精品福利| 成人免费观看男女羞羞视频| 国产精品欧美一区喷水| 91同城在线观看| 亚洲国产精品自拍| 欧美mv日韩mv国产| 丁香婷婷综合五月| 伊人一区二区三区| 欧美日韩国产色站一区二区三区| 日本亚洲最大的色成网站www| 日韩一区二区不卡| 国产盗摄一区二区三区| 夜夜精品浪潮av一区二区三区| 3d成人h动漫网站入口| 国产精品一区二区久久精品爱涩 | 欧美喷水一区二区| 国产在线精品一区二区夜色 | 欧美色视频在线观看| 久久99精品久久只有精品| 亚洲色图色小说| 国产欧美日产一区| 欧美成人精品1314www| 色又黄又爽网站www久久| 久久99这里只有精品| 国产成+人+日韩+欧美+亚洲| 性做久久久久久久久| 国产欧美日韩卡一| 日韩精品专区在线| 欧美日韩一级大片网址| 91在线观看美女| 波多野洁衣一区| 成人免费三级在线| 韩国女主播一区二区三区| 日韩不卡手机在线v区| 亚洲第一福利视频在线| 亚洲国产另类av| 亚洲成人1区2区| 亚洲mv大片欧洲mv大片精品| 亚洲国产乱码最新视频| 亚洲一二三专区| 无吗不卡中文字幕| 日韩国产精品大片| 久久99国产精品久久99| 国产精品99久久久久| 99久久精品国产观看| 97se亚洲国产综合自在线不卡| 91香蕉国产在线观看软件| 日本韩国欧美一区二区三区| 在线电影欧美成精品| 亚洲综合免费观看高清完整版在线| 一区二区三区精密机械公司| 亚洲国产精品人人做人人爽| 免费精品视频在线| 国产一区二区h| 欧美亚洲国产怡红院影院| 欧美成人精品福利| 中文字幕一区二区三区四区不卡 | 中文字幕乱码亚洲精品一区| 亚洲乱码国产乱码精品精98午夜 | 亚洲国产精品久久人人爱| 国产一区91精品张津瑜| 91福利国产成人精品照片| 久久综合精品国产一区二区三区 | 欧美精品在线观看播放|