📄 preamble.c
字号:
/*****************************************************************************//* FIle Name : preamble.c *//* Description : WLAN Preamble of PPDU Encoder *//* author : miffie *//* Date : aug/10/05 *//* Copyright (c) 2005 miffie All rights reserved. *//*****************************************************************************////////////////////////////////////////////////////////////////////////////////struct complexset preamble( ) { // struct complexset cset0, cset1 ;struct complexset ctop ;struct complex *ctmp1, *ctmp2 ;int ii ;static char longseq[] = { 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , //-32 -25 -1 ,-1 , 1 , 1 ,-1 , 1 ,-1 , 1 , //-24 -17 1 , 1 , 1 , 1 , 1 ,-1 ,-1 , 1 , //-16 -9 1 ,-1 , 1 ,-1 , 1 , 1 , 1 , 1 , //-8 -1 0 , 1 ,-1 ,-1 , 1 , 1 ,-1 , 1 , // 0 7 -1 , 1 ,-1 ,-1 ,-1 ,-1 ,-1 , 1 , // 8 15 1 ,-1 ,-1 , 1 ,-1 , 1 ,-1 , 1 , //16 23 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 } ; //24 31static double short_realp[] = { 0.046 , -0.132 , -0.013 , 0.143, 0.092 , 0.143 , -0.013 , -0.132, 0.046 , 0.002 , -0.079 , -0.013, 0.000 , -0.013 , -0.079 , 0.002 } ;static double short_image[] = { 0.046 , 0.002 , -0.079 , -0.013, 0.000 , -0.013 , -0.079 , 0.002, 0.046 , -0.132 , -0.013 , 0.143, 0.092 , 0.143 , -0.013 , -0.132 } ; //Make LONG sequence if (((ctmp1 = (struct complex *)malloc(160*sizeof(struct complex))) == NULL) | ((ctmp2 = (struct complex *)malloc(64*sizeof(struct complex))) == NULL)) { PRINTF( " malloc failed in preamble\n") ; } //fail else { //allocated //SHORT Sequence cset0.size = 160 ; cset0.data = ctmp1 ; for (ii=0;ii<160;ii++) { //shortseq ctmp1[ ii ].realp = short_realp[ ii %16 ] ; ctmp1[ ii ].image = short_image[ ii %16 ] ; } //shortseq ctop = cset0 ; //short seq boundary ctmp1[ 0 ].realp = ctmp1[ 0 ].realp/2 ; ctmp1[ 0 ].image = ctmp1[ 0 ].image/2 ; //LONG Sequence OFDM mapper cset1.size =64 ; cset1.data = ctmp2 ; for (ii=0;ii<64;ii++) {//long map cset1.data[ ii ].realp = longseq[ ii ] ; cset1.data[ ii ].image = 0 ; }//long map //Compare with Table G.11 for Frequency Domain data print_complexset( cset1 ) ; //OFDM IFFT cset1 = idft64 ( cset1 ) ; //Compare with Table G.12 for Frequency Domain data print_complexset( cset1 ) ; //build a preamble cset0 = extract_complexset(cset1 , 32 , 32 ) ; //Guard Interval2 ctop = cat_complexset(ctop , cset0 ) ; ctop = cat_complexset(ctop , cset1 ) ; ctop = cat_complexset(ctop , cset1 ) ; //short seq & longseq boundary ctop.data[160].realp = (ctop.data[160].realp + ctop.data[16].realp) /2 ; ctop.data[160].image = (ctop.data[160].image + ctop.data[16].image) /2 ; } //allocated return( ctop ) ;} //preamble
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -