260 lines
6.0 KiB
C++
260 lines
6.0 KiB
C++
#ifndef device_uhd_struct_h
|
||
#define device_uhd_struct_h
|
||
|
||
#include <vector>
|
||
#include <memory>
|
||
#include <iostream>
|
||
|
||
|
||
#define ZDSamSum 200000000//8路窄带采样率之和
|
||
#define ZDChMax 8 //每路大通道下窄带通道总数
|
||
enum UHD_ParamType : int
|
||
{
|
||
CenterFreq = 0,
|
||
BandWidth = 1,
|
||
SampleFreq = 2,
|
||
Gain = 3,
|
||
PowerRef = 4,
|
||
KDDCSwitch = 5,
|
||
KFFTSwitch = 6,
|
||
ZDDCSwitch = 7,
|
||
ZDDCParam = 8,
|
||
KFFTParam = 9,
|
||
ClockSource = 10,
|
||
SnapshotSwitch = 11,
|
||
Snapshot_tm_s = 12,
|
||
};
|
||
enum UHD_FFTWin : unsigned char
|
||
{
|
||
jxc =0,// 矩形窗 = 0,
|
||
hnc = 1,// 汉宁窗 = 1,
|
||
hmc = 2, // 海明窗 = 2,
|
||
blkmc = 3,// 布莱克曼窗 = 3,
|
||
};
|
||
enum UHD_FFTLen : unsigned int
|
||
{
|
||
_1024 = 1024,
|
||
_2048 = 2048,
|
||
_4096 = 4096,
|
||
_8192 = 8192,
|
||
_16384 = 16384,
|
||
_32768 = 32768,
|
||
};
|
||
#pragma pack(push)
|
||
#pragma pack(1)
|
||
struct UHD_ZDParam
|
||
{
|
||
unsigned char KCH = 0;//宽带通道号
|
||
unsigned short ZCH = 0;//窄带通道号
|
||
long long CenterFreq = 0; // 中频
|
||
int BandWidth = 0; //带宽
|
||
int SampleFreq = 0; // 采样率
|
||
int ExtraPer = 1024;//抽取率 4-4096,2的指数
|
||
bool bSwitch_ZDDC = false;
|
||
|
||
};
|
||
struct UHD_KDParam
|
||
{
|
||
unsigned char KCH = 0;//宽带通道号
|
||
long long CenterFreq = 10000000;
|
||
|
||
int BandWidth = 160000000;
|
||
int SampleFreq = 200000000;
|
||
|
||
bool bSwitch_6GCH = false;
|
||
|
||
bool bSwitch_KDDC = false;
|
||
bool bSwitch_KFFT = false;
|
||
double gain = 0;
|
||
UHD_ZDParam ZDParam[ZDChMax];
|
||
int ExtraPer;
|
||
bool Snapshot_Switch=false;
|
||
int Snapshot_tm_s = 0;
|
||
|
||
unsigned long long old_sf;
|
||
unsigned long long old_cf;
|
||
unsigned long long old_bw;
|
||
|
||
};
|
||
#pragma region 枚举/结构体
|
||
|
||
/** @brief TODO: 时码类型枚举
|
||
* @enum LibWZ57_Enum_TimeType
|
||
*/
|
||
enum Enum_TimeType : uint8_t
|
||
{
|
||
Enum_TimeType_Invlid = 0, /**< 无效的*/
|
||
Enum_TimeType_IRIG_B = 1, /**< IRIG-B*/
|
||
Enum_TimeType_RMC = 2, /**< RMC*/
|
||
Enum_TimeType_ABSCNTTM = 3, /**< 绝对计数时间*/
|
||
Enum_TimeType_REFCNTTM = 4, /**< 相对计数时间*/
|
||
};
|
||
typedef struct struct_DateTime
|
||
{
|
||
|
||
Enum_TimeType TimeType; /**< 10 时码类型*/
|
||
|
||
/** @brief 10个字节的时码信息
|
||
* @details
|
||
* 根据 @ref LibWZ57_Enum_TimeType TimeType,对应不同的 联合体
|
||
*/
|
||
union TimeInfo
|
||
{
|
||
///@brief IRIG-B
|
||
///@struct IRIGB_Head
|
||
struct IRIGB_Head
|
||
{
|
||
uint8_t Year; /**< 年 字节1*/
|
||
uint16_t Day; /**< 日 字节2*/
|
||
uint8_t Hour; /**< 时 字节1*/
|
||
uint8_t Minute; /**< 分 字节1*/
|
||
uint8_t Second; /**< 秒 字节1*/
|
||
uint32_t NanoSec; /**< 纳 字节4*/
|
||
} IRIGB_Head;
|
||
|
||
///@brief RMC
|
||
///@struct RMC_Head
|
||
struct RMC_Head
|
||
{
|
||
uint8_t Year; /**< 年 字节1*/
|
||
uint8_t Month; /**< 月 字节1*/
|
||
uint8_t Day; /**< 日 字节1*/
|
||
uint8_t Hour; /**< 时 字节1*/
|
||
uint8_t Minute; /**< 分 字节1*/
|
||
uint8_t Second; /**< 秒 字节1*/
|
||
uint32_t NanoSec; /**< 纳 字节4*/
|
||
} RMC_Head;
|
||
|
||
///@brief 绝对计数时间
|
||
///@struct ABSCNTTM_Head
|
||
struct ABSCNTTM_Head
|
||
{
|
||
///@brief 秒 字节6; 基准秒计数时间+相对秒计数时间 单位:秒
|
||
uint8_t Second[6];
|
||
///@brief 纳秒 字节4;
|
||
uint32_t NanoSec;
|
||
} ABSCNTTM_Head;
|
||
|
||
///@brief 相对计数时间
|
||
///@struct REFCNTTM_Head
|
||
struct REFCNTTM_Head
|
||
{
|
||
///@brief 秒 字节6; 相对秒计数时间单位:秒
|
||
uint8_t Second[6];
|
||
///@brief 纳秒 字节4;
|
||
uint32_t NanoSec;
|
||
} REFCNTTM_Head;
|
||
} TimeInfo;
|
||
|
||
} struct_DataTime;
|
||
|
||
|
||
|
||
#pragma region 枚举
|
||
/*****************************
|
||
*数据类型
|
||
*****************************/
|
||
enum UHD_Enum_DataType : unsigned char
|
||
{
|
||
zd_ddc = 1,
|
||
kd_ddc = 2,
|
||
kd_fft = 3,
|
||
GPS_Info = 16,
|
||
// 窄带DDC = 0x01,
|
||
// 宽带DDC = 0x02,
|
||
// 宽带FFT = 0x03,
|
||
};
|
||
#pragma endregion
|
||
#pragma region 结构体
|
||
#pragma region UHD_Struct_KFFT UHD_Struct_KDDC UHD_Struct_ZDDC
|
||
/// <summary>
|
||
/// 宽带FFT头
|
||
/// </summary>
|
||
typedef struct
|
||
{
|
||
/// <summary>
|
||
/// 帧标识 6 0x2828F628F6F6 固定值
|
||
/// </summary>
|
||
unsigned int Head;
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
unsigned short Head2;
|
||
/// <summary>
|
||
/// 协议版本 1 0x80
|
||
/// </summary>
|
||
unsigned char DealVersion;
|
||
/// <summary>
|
||
/// 帧头长度 1 64
|
||
/// </summary>
|
||
unsigned char FrameHeadLen;
|
||
/// <summary>
|
||
/// 数据长度 2 2048
|
||
/// </summary>
|
||
unsigned short DataLen;
|
||
/// <summary>
|
||
/// 有效数据长度 2 2048
|
||
/// </summary>
|
||
unsigned short UsefullLen;
|
||
/// <summary>
|
||
/// 数据类型 1
|
||
/// </summary>
|
||
UHD_Enum_DataType DataType;
|
||
unsigned char Other1;
|
||
/// <summary>
|
||
/// 通道号
|
||
/// </summary>
|
||
unsigned char Channel;
|
||
unsigned char Other2;
|
||
unsigned short ZDChannel;
|
||
/// <summary>
|
||
/// 帧计数 2 0 ~ 65535 循环递增
|
||
/// </summary>
|
||
unsigned short FrameIndex;
|
||
/// <summary>
|
||
/// 帧起止标识 1 0x0
|
||
/// </summary>
|
||
unsigned char FrameBeginFlag;
|
||
struct_DateTime DateTm;
|
||
/// <summary>
|
||
/// 采样率 4 单位Hz
|
||
/// </summary>
|
||
unsigned int SampleFreq_Hz;
|
||
/// <summary>
|
||
/// 带宽 4 单位Hz
|
||
/// </summary>
|
||
unsigned int BandWidth_Hz;
|
||
/// <summary>
|
||
/// 中心频点 4 单位Hz,低位
|
||
/// </summary>
|
||
unsigned int CenterFreq_Hz_Low;
|
||
/// <summary>
|
||
/// 中心频点 2 单位Hz,高位
|
||
/// </summary>
|
||
unsigned short CenterFreq_Hz_High;
|
||
union
|
||
{
|
||
unsigned char other5[18];
|
||
struct
|
||
{
|
||
unsigned char other4[6];
|
||
/// <summary>
|
||
/// FFT长度 65536
|
||
/// </summary>
|
||
int FFTPoint;
|
||
unsigned char other5[2];
|
||
float other6;
|
||
/// <summary>
|
||
/// 段内帧号
|
||
/// </summary>
|
||
unsigned short SubFrame;
|
||
} FFT;
|
||
} Param;
|
||
//数据 2048 共1024个数据,1个数据2字节。
|
||
} UHD_Struct_KFFT, UHD_Struct_KDDC, UHD_Struct_ZDDC;
|
||
#pragma endregion
|
||
#pragma endregion
|
||
#pragma pack(pop)
|
||
#pragma endregion
|
||
#endif
|