interleaver.c

来自「This model is just testing an idea of MI」· C语言 代码 · 共 51 行

C
51
字号
/*****************************************************************************//*   FIle Name : interleaver.c                                               *//*   Description : WLAN FEC interleaver for Encoder                          *//*                 1st : i=(Ncbps/16)(kmod 16) + floor(k/16)                 *//*                 2nd : j=s*floor(i/s) + (i+Ncbps-floor(16*i/Ncbps))mod s   *//*   author : miffie                                                         *//*   Date   : aug/05/05                                                      *//*   Copyright (c) 2005 miffie   All rights reserved.                          *//*****************************************************************************/struct binaryset interleaver (struct binaryset datain, char Nbpsc ) {int 	ii , pp ;char 	shifter ;char 	tmp1 ;struct 	binaryset bset ;char    *top1, *top2 ;//Ncbps is same as datain.size  //Main     PRINTF("interleaver size=%d\n", datain.size ) ;    if (((top1 = (char *)malloc(datain.size*sizeof(char)) ) == NULL) |        ((top2 = (char *)malloc(datain.size*sizeof(char)) ) == NULL)) {        PRINTF( " malloc failed in interleaver.c\n") ;    } //fail    else { //allocated     //permutation1     for(ii=0;ii<datain.size;ii++) { //p1      pp = (datain.size/16) * (ii % 16) + (ii/16) ;      //printf("permutation1 %d %d\n", ii, pp  ) ;      top1[ pp ] =  datain.data[ ii ] ;      //printf(" top1(%d)=%d \n", pp, top1[pp] ) ;     } //p1     //permutation2     tmp1 = 1 ;     if ((Nbpsc/2)>tmp1)  tmp1 = (Nbpsc/2) ;     for(ii=0;ii<datain.size;ii++) { //p2      pp = tmp1* (ii/tmp1) +             ( ii + datain.size - (16*ii/datain.size)) % tmp1 ;      //printf("permutation2 %d %d\n", ii, pp ) ;      top2[ pp ] =  top1[ ii ] ;      //printf(" top2(%d)=%d \n", pp, top2[pp] ) ;     } //p2     bset.format = 0 ;     bset.size = datain.size ;     bset.data = top2 ;    }//allocated    free( top1 ) ;    free( datain.data ) ;    return ( bset ) ;} //interleaver

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?