📄 modulator.h
字号:
#ifndef _MODULATOR
#define _MODULATOR
#include "BPSK.h"
typedef unsigned char byte;
typedef unsigned int UINT;
//TO DO: unsigned long
typedef int (*ModulateFunc)(double*, UINT sym, void*);//调制一个符号,输出一个信号矢量的函数
typedef void (*InitModCoreFunc)(void*);//初始化调制器内核(分配资源)
typedef void (*CloseModCoreFunc)(void*);//关闭调制器内核(释放资源)
/*调制器"接口", 是每种具体的调制器内核模块必需提供的*/
struct ModuCoreInterface {
InitModCoreFunc InitModCore;//初始化调制器内核函数
CloseModCoreFunc CloseModCore;//关闭调制器内核函数
ModulateFunc ModulateOneSym;//调制函数
int ModCoreSize;//用于存放调制器用到的各寄存器的结构体所占的字节数(如果不需要则为0)
int symWid;//一个符号包含的比特数
int sigDim;//一个信号矢量所包含的信号分量数
};
/*将表征调制器内核的信息依序填入以下表中:*/
enum ModMethod {
//作为每种调制方法标识符的枚举名字
Mod_BPSK
};
static ModuCoreInterface ModuCores[]= {
/*接口实现, 参照下列顺序:*/
/*:{InitFunc, CloseFunc, ModulateFunc, ModCoreSize, symbolWidth, signalDimension}*/
{NULL, NULL, BPSKModulate, 0, 3, 3}
};
struct Modulator {
int inW;//输入符号所包含的比特数
int outW;//输出信号矢量所包含的信号分量数
UINT maskSym;//表示符号寄存器当前比特位置的掩码
UINT masktop;//符号寄存器的最高位掩码(最高位为1,其余为0)
UINT symbol;//将输入比特流存储以构成一个符号的寄存器
double* outbuf;//输出信号矢量的缓存
void* ModCoreRegs;//指向存放调制器内核所需寄存器的结构体的指针
ModulateFunc ModulateOneSym;//调制函数
InitModCoreFunc InitModCore;//初始化调制器内核函数
CloseModCoreFunc CloseModCore;//关闭调制器内核函数
};
extern void InitModulator(Modulator& m, ModMethod method);
extern int ModulateOneByte(byte b, double*& output, Modulator& m);
extern void ResetModulator(Modulator& m);
extern void CloseModulator(Modulator& m);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -