/* * Define here the outputs for the module */ #ifndef _WIMAXCONTROL_H #define _WIMAXCONTROL_H //////////////////////////////////////////////////////////////////////////////// ///////////////////////EXECUTION CONTROL//////////////////////////////////////// #define NONACTIVE 0 #define ACTIVE 1 /*Defines a module as active*/ #define TEST_FLOW 2 /*Test flows: Bypass data flow mode*/ #define TEST_PROCESS 3 /*Test Module Process*/ typedef struct /*Execution COntrol*/ { int status; /*STATUS: Module Active=1, Module Non Active=0;*/ }CExect; //////////////////////////////////////////////////////////////////////////////// ///////////////////////WIMAX CONTROL//////////////////////////////////////////// /*Values for modula variable*/ #define OFDMmode 0 #define OFDMAmode 1 /*Values for modula parameter. Indicate the number of bits per symbol*/ #define _BPSK 1 #define _QPSK 2 #define _16QAM 4 #define _64QAM 6 #define NO_MOD 7 /*Values for cconv parameter CC CODE RATE*/ #ifndef _CODERATE #define CODERATE1R2 0.5 /*1/2*/ #define CODERATE3R4 0.75 /*3/4*/ #define CODERATE2R3 0.666666 /*2/3*/ #define CODERATE5R6 0.833333 /*5/6*/ #endif /*Values for channelcoding*/ #define CC 0 #define CTC 1 #define LDPC 2 /*Values for Execution control: STATUS VALUES*/ #define STARTED 0 #define STOPED 1 #define WAIT 2 /*Channel Modes*/ /*Values channel_mode*/ #define NONOISE 0 #define GAUSSIAN 1 #define SUI1 10 #define SUI2 11 #define SUI3 12 #define SUI4 13 /*Values for CCpolinomial*/ #define DEFAULT 0 #define CUSTOM 1 /*Values for K*/ #define KWIMAX 7 /*Puncturing Modes*/ #define WIMAXDEFINED 0 #define CUSTOM 1 //Puncturing matrix must be provided typedef struct //Defined according the control out needs { int usernumber; //Number of active user// int uncodedbytes; //Number of uncoded data bytes// int mode; //OFDM mode; OFDMA mode// //BIT LEVEL/////////////////////////// int modulation; //Modulation=Number of bits per symbol// int coderate; //Overall code rates// int rsolomon; //RSOL: Reed Solomon number of PARITY BYTES// //QPSK (32,24,4) PARITY BYTES=8 DATASIZE=23 //QPSK (40,36,2) PARITY BYTES=4 DATASIZE=35 //16QAM (64,46,8) PARITY BYTES=16 DATASIZE=63 //16QAM (80,72,4) PARITY BYTES=8 DATASIZE=71 //64QAM (108,96,6) PARITY BYTES=12 DATASIZE=95 //64QAM (120,108,6) PARITY BYTES=12 DATASIZE=107 //CONVOLUTIONAL CODE int channelcoding; // CC: Convolutional coding // CTC: Convolutional Turbo code // LDPC: Low Density Parity Check float CCcoderate; //CCONC, VITERBI: Convolutional code rate// //CONVOLUTIONAL CODE RATE ALWAYS EQUAL TO 1/2 //DIFFERENT CODING RATES DUE TO PUNCTURING int tail; //CCONV, VITERBI: Number of bytes of tail: 1 byte; 8 bits // float viterbiEbNo; //VITERBI: Adaptative quantiser int CCpolinomial; //0:default; 1:custom int g[2][KMAX]; //Polinomials definition. KMAX=20 int viterbiK; //constraint length //PUNCTURING float punct_rate; //Puncturing rate: (input bits)/(output bits) int pseqlength; //Puncturing sequence length int puncseq[MAXPSEQ]; //Define puncturing sequence: //zero indicate punctured data //one indicate non punctured data //DEPUNCTURING //float depunct_rate; //Puncturing mode //CHANNEL int channel_mode; //WHITENOISE, SUI float channelEbNo; //EbNo int interl; //INTER: Number of bits in Interleaver module// }CWimax; //CONTROL WIMAX// ///////////////////////WIMAX CONTROL//////////////////////////////////////////// #endif