interleaver.cpp

来自「QAM module to use in Java with an easy i」· C++ 代码 · 共 72 行

CPP
72
字号
//---------------------------------------------------------------------------


#pragma hdrstop

#include "Interleaver.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

TInterleaver::TInterleaver()
{
        Init(1,1);
}

TInterleaver::TInterleaver(int B, int M)
{
        Init(B,M);
}


int __fastcall TInterleaver::DeInterleaveUpdate(int val)
{
        int return_val;
        Idelaylines[delaylineptr].delay[Idelaylines[delaylineptr].ptr]=val;
        Idelaylines[delaylineptr].ptr++;Idelaylines[delaylineptr].ptr%=Idelaylines[delaylineptr].delay.size();
        return_val=Idelaylines[delaylineptr].delay[Idelaylines[delaylineptr].ptr];
        delaylineptr--;
        if(delaylineptr<0)delaylineptr=Length-1;
        return return_val;
}

int __fastcall TInterleaver::InterleaveUpdate(int val)
{
        int Return_Val;
        Idelaylines[delaylineptr].delay[Idelaylines[delaylineptr].ptr]=val;
        Idelaylines[delaylineptr].ptr++;Idelaylines[delaylineptr].ptr%=Idelaylines[delaylineptr].delay.size();
        Return_Val=Idelaylines[delaylineptr].delay[Idelaylines[delaylineptr].ptr];
        delaylineptr++;delaylineptr%=Length;
        return Return_Val;
}

//try B=128 M=1 (M=1 produces normal triagular shape)
void TInterleaver::Init(int B, int M)
{
        delaylineptr=0;
        Length=B;
        Idelaylines.resize(B);
        for(unsigned int i=0;i<Idelaylines.size();i++)
        {
                Idelaylines[i].delay.resize(i*M+1);
                //for(unsigned int j=0;j<Idelaylines[i].delay.size();j++)Idelaylines[i].delay[j]=rand()%256;
                Idelaylines[i].ptr=0;
        }
}






void __fastcall TInterleaver::ResetInterleaverPtr()
{
        delaylineptr=0;
}

void __fastcall TInterleaver::ResetDeInterleaverPtr()
{
        delaylineptr=Length-1;
}

⌨️ 快捷键说明

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