Esempio n. 1
0
int* fftBinIndices(double samplingRate, int frameSize) 
{
	int* cbin = new int[numMelFilters + 2];	// Mel Â˲¨Æ÷¸öÊý

	cbin[0] = (int)(lowerFilterFreq / samplingRate * frameSize);
	cbin[NUM_MEL_BANDS+1] = (int)(frameSize / 2);
        
	for (int ii = 1; ii <= numMelFilters; ii++) {// 
		double fc = centerFreq(ii, samplingRate);
		cbin[ii] = (int)(fc / samplingRate * frameSize);
	}
        
	return cbin;
}
Esempio n. 2
0
void printFreqInfo(REG_DMN_PAIR_MAPPING *regDomainPair, COUNTRY_CODE_TO_ENUM_RD *country, 
		   REG_DOMAIN *regDmnCur, REG_DMN_FREQ_BAND *freqBand, int *channel_no)
{
	int freq, idx;
	bool pscan = false, adhoc = true, dfs=false, ht20=false;
	char *ht40CapStr = NULL;
	unsigned char mode;
	unsigned short cFreq = 0;
	int rate = RATE_F;

	for(freq=freqBand->lowChannel, idx=0;
			freq<=freqBand->highChannel; 
			freq+=freqBand->channelSep, idx++){

		mode = freqBand->mode;
		
		/*
		 * If the current regcode is country code AND
		 * Country code does not allow 11g AND
		 * the current channel is a 11G channel,
		 * then force the mode as 11B
		 */
		if(country){
			if( !(country->allowMode & OFDM_YES) && (mode == MODE_11G)) {
				mode = MODE_11B;
			}
		}

		ht40CapStr = NULL; /* stupid code....I am sorry*/

		if(mode == MODE_11A) {
			if((cFreq = centerFreq(freq, HT40PLUS, true)) != 0) {  /*5G don't care + or -*/
				if((freqBand->ht40ChanMask >> ((cFreq - freqBand->lowChannel) / 
								freqBand->channelSep)) & 0x1) {
					ht40CapStr = "HT40";
				}
			}
		}else {
			if((cFreq = centerFreq(freq, HT40MINUS, false)) != 0) {
				if((freqBand->ht40ChanMask >> ((cFreq - freqBand->lowChannel) / 
								freqBand->channelSep)) & 0x1) {
					ht40CapStr = "HT40-";
				}
			}
			if((cFreq = centerFreq(freq, HT40PLUS, false)) != 0) {
				if((freqBand->ht40ChanMask >> ((cFreq - freqBand->lowChannel) / 
								freqBand->channelSep)) & 0x1) {
					if(ht40CapStr == NULL) {
						ht40CapStr = "HT40+";
					}else {
						ht40CapStr = "HT40+/-";
					}
				}
			}
		}
		if(ht40CapStr) {
			ht20 = true;
		}

		if(freqBand->usePassScan & regDmnCur->pscan & regDomainPair->pscanMask){
			pscan = true;
		}

		if(mode == MODE_11A) {  /*11A 5G mode*/

			if((regDmnCur->flags | regDomainPair->flags5GHz) &
					(DISALLOW_ADHOC_11A | ADHOC_NO_11A) )
				adhoc = false;			
			if(regDmnCur->dfsMask & freqBand->useDfs)
				dfs = true;		
			if(country){
				if(!(country->allowMode & MCS_HT40_A_YES))
					ht40CapStr = NULL;
				if(country->allowMode & MCS_HT20_YES)
					ht20 = true;
			}
			if ( freqBand->ht40ChanMask & FREQ_QUARTER_RATE ) {
				rate = RATE_Q; /*Quarter rate index in rateStr*/
			}
			else if ( freqBand->ht40ChanMask & FREQ_HALF_RATE ) {
				rate = RATE_H; /*Half rate string index in rateStr*/
			}

		}else if((mode == MODE_11G) ||  /*11bg 2.4G mode*/
				(mode == MODE_11B) ||
				(mode == MODE_11GONLY)) {

			if((regDmnCur->flags | regDomainPair->flags2GHz) &
					DISALLOW_ADHOC_11G )
				adhoc = false;
			if(country){
				if(!(country->allowMode & MCS_HT40_G_YES))
					ht40CapStr = NULL;
				if((mode == MODE_11G) && (country->allowMode & MCS_HT20_YES))
					ht20 = true;
			}
		}else {
			printf("Error! unknow 80211 mode\n");
			exit(0);
		}
		printf("%-2d %-4d%-2s %-2.1f %-7s %-6s  %-1s  %-1s  %-1s\n", 
				++(*channel_no), 
				freq, 
				ht20? modeStr[(mode & 0x3)+3]: modeStr[mode],
				(double)freqBand->power,
				pscan? "PASSIVE": "ACTIVE",
				dfs? "DFS": "NO_DFS",
				adhoc? "Y": "N",
				ht40CapStr? "Y": "N",
				rateStr[rate]
			  );
	}