📄 mask_sc.c
字号:
/*****************************************************************************//* FIle Name : mask_sc.c *//* Description : WiMax OFDM Subcarrier Mask *//* author : miffie *//* Date : Nov/01/05 *//* Copyright (c) 2005 miffie All rights reserved. *//*****************************************************************************/void mask_set ( char *mask , char *group ) { //mask_set//set mask[group] =1 ;char ii ; for(ii=0;ii<12;ii++) mask[128+(group[ii])] = 1 ; } //mask_setvoid mask_sc ( char *mask, char index ) { //mask_sc//0: No energy on the subcarrier//1: send data on the subcarrierint ii , pp ;char sc_group[16][12] = {{-100,-99,-98,-37,-36,-35, 1, 2, 3,64,65,66}, {-97,-96,-95,-34,-33,-32, 4, 5, 6,67,68,69}, {-94,-93,-92,-31,-30,-29, 7, 8, 9,70,71,72}, {-91,-90,-89,-28,-27,-26,10,11,12,73,74,75}, {-87,-86,-85,-50,-49,-48,14,15,16,51,52,53}, {-84,-83,-82,-47,-46,-45,17,18,19,54,55,56}, {-81,-80,-79,-44,-43,-42,20,21,22,57,58,59}, {-78,-77,-76,-41,-40,-39,23,24,25,60,61,62}, {-75,-74,-73,-12,-11,-10,26,27,28,89,90,91}, {-72,-71,-70, -9, -8, -7,29,30,31,92,93,94}, {-69,-68,-67, -6, -5, -4,32,33,34,95,96,97}, {-66,-65,-64, -3, -2, -1,35,36,37,98,99,100}, {-62,-61,-60,-25,-24,-23,39,40,41,76,77,78}, {-59,-58,-57,-22,-21,-20,42,43,44,79,80,81}, {-56,-55,-54,-19,-18,-17,45,46,47,82,83,84}, {-53,-52,-51,-16,-15,-14,48,49,50,85,86,87} } ;char sc_pilot[] = { -38, 13, -88, 63, -13, 38, -63, 88 } ; //Guard band for(ii=-128;ii<-100;ii++) mask[ii+128] = 0 ; for(ii=101;ii<128;ii++) mask[ii+128] = 0 ; //DC mask[0+128] = 0 ; //available carriers printf("mask_sc %d\n", index) ; if (index &0x1 ) { //single subchannel mask_set( &mask[0], &sc_group[ ((index>>1)&0xf) ][0] ) ; } //single subchannel else if (index&0x2) { //two subchannels mask_set( &mask[0], &sc_group[ ((index>>1)&0xe)+0 ][0] ) ; mask_set( &mask[0], &sc_group[ ((index>>1)&0xe)+1 ][0] ) ; mask[ sc_pilot[ ((index>>2)&0x7) ] +128 ] = 1 ; } //two subchannels else if (index&0x4) { //four subchannels mask_set( &mask[0], &sc_group[ ((index>>1)&0xc)+0 ][0] ) ; mask_set( &mask[0], &sc_group[ ((index>>1)&0xc)+1 ][0] ) ; mask[ sc_pilot[ ((index>>2)&0x6) ] +128 ] = 1 ; mask_set( &mask[0], &sc_group[ ((index>>1)&0xc)+2 ][0] ) ; mask_set( &mask[0], &sc_group[ ((index>>1)&0xc)+3 ][0] ) ; mask[ sc_pilot[ ((index>>2)&0x6)+1 ] +128 ] = 1 ; } //four subchannels else if (index&0x8) { //eight subchannels mask_set( &mask[0], &sc_group[ ((index>>1)&0x8)+0 ][0] ) ; mask_set( &mask[0], &sc_group[ ((index>>1)&0x8)+1 ][0] ) ; mask[ sc_pilot[ ((index>>2)&0x4) ] +128 ] = 1 ; mask_set( &mask[0], &sc_group[ ((index>>1)&0x8)+2 ][0] ) ; mask_set( &mask[0], &sc_group[ ((index>>1)&0x8)+3 ][0] ) ; mask[ sc_pilot[ ((index>>2)&0x4)+1 ] +128 ] = 1 ; mask_set( &mask[0], &sc_group[ ((index>>1)&0x8)+4 ][0] ) ; mask_set( &mask[0], &sc_group[ ((index>>1)&0x8)+5 ][0] ) ; mask[ sc_pilot[ ((index>>2)&0x4)+2 ] +128 ] = 1 ; mask_set( &mask[0], &sc_group[ ((index>>1)&0x8)+6 ][0] ) ; mask_set( &mask[0], &sc_group[ ((index>>1)&0x8)+7 ][0] ) ; mask[ sc_pilot[ ((index>>2)&0x4)+3 ] +128 ] = 1 ; } //eight subchannels else if (index==0x10) { //16 sub channels for(ii=-100;ii<0;ii++) mask[ii+128] = 1 ; mask[0+128] = 0 ; for(ii=1;ii<=100;ii++) mask[ii+128] = 1 ; } //16 subchannels else { // no channels assigned for(ii=-100;ii<=100;ii++) mask[ii+128] = 0 ; } // no channels assigned } //mask_sc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -