📄 interleaver.cpp
字号:
//---------------------------------------------------------------------------
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -