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; }
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] ); }