📄 demodulator.h
字号:
#ifndef _DEMODULATOR
#define _DEMODULATOR
#include "channel.H"
#include "BPSK.h"
typedef unsigned char byte;
typedef unsigned int UINT;
//TO DO: unsigned long
typedef int (*DemodFunc)(UINT& sym, const double* r, const AWGN* gauss, void* regs);//解调一个信号矢量,输出一个符号的函数
typedef int (*ReliabFunc)(double* reliab, const double* r, const AWGN* gauss, void* regs);
//根据信号矢量分别给出符号的每个比特的可信度(为0的概率)
typedef void (*InitDemCoreFunc)(void*);//初始化解调器内核(分配资源)
typedef void (*CloseDemCoreFunc)(void*);//关闭解调器内核(释放资源)
/*解调器"接口", 是每种具体的解调器内核模块必需提供的*/
struct DemodCoreInterface {
InitDemCoreFunc InitDemCore;//初始化解调器内核函数
CloseDemCoreFunc CloseDemCore;//关闭解调器内核函数
DemodFunc DemodOneSig;//解调函数
ReliabFunc GetReliability;//给出比特可信度的函数
int CoreStructSize;//用于存放解调器用到的各寄存器的结构体所占的字节数(如果不需要则为0)
int sigDim;//一个符号包含的比特数
int symWid;//一个信号矢量所包含的信号分量数
};
/*将表征调制器内核的信息依序填入以下表中:*/
enum DemodMethod {
//作为每种解调方法标识符的枚举名字
Demod_BPSK
};
static DemodCoreInterface DemodCores[]= {
/*接口实现, 参照下列顺序:*/
//{InitFunc, CloseFunc, DemodFunc, GetReliability, CoreSize, signalDim, symbolWidth}
{NULL, NULL, BPSKDemod, BPSKReliab, 0, 3, 3}
};
struct Demodulator {
int inW;
int outW;
AWGN* gauss;
byte masko;
int ib;
byte* outbuf;
double* reliabuf;
//double* symbol;
//int iSym;
UINT masktop;
void* DemCoreRegs;
DemodFunc DemodOneSig;
ReliabFunc Reliability;
InitDemCoreFunc InitDemCore;
CloseDemCoreFunc CloseDemCore;
};
extern void InitDemodulator(Demodulator& m, DemodMethod method, AWGN* gauss);
//extern int DemodOneComponent(double c, byte*& output, Demodulator& m);
extern int DemodOneSignal(const double* sig, byte*& output, Demodulator& m);
extern int DemodOneSignal(const double* sig, double*& output, Demodulator& m);
extern void ResetDemodulator(Demodulator& m);
extern void CloseDemodulator(Demodulator& m);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -