#define EXAMPLE_MACRO_NAME
#include "htra_api.h"


int Device_GetDeviceInfo(); //获取设备信息，包括：API版本、USB版本、设备型号、设备UID、MCU版本、FPGA版本和设备温度。
int Device_SysPowerState(); //设置设备待机状态的范例，可以设置为正常工作状态和射频处于下电状态（低功耗）。
int Device_AboutGNSS();     //获取GNSS模块获取的经纬度、海拔和时间等信息，获取SWP模式下MeasAuxInfo中GNSS相关的经纬度和时间信息，获取IQS模式下IQStream.DeviceState中的经纬度和时间信息。
int Device_GetAndSetIP();   //获取设备IP地址，并通过设备UID或者设备当前的IP修改IP地址。
int Device_MeasureModeSwitchTime(); //获取当前上位机切换不同模式所需要的时间。


int SWP_GetSpectrum_Standard();	  //通过调用函数接口获取频谱数据。
int SWP_MaxHold_MinHold();        //将迹线模式设置为MaxHold或MinHold，并使用SWP_ResetTraceHold重置保持。
int SWP_TraceAverage();           //对获取迹线进行平均处理。
int SWP_AutoSetMeasure();	      //根据具体SWP应用，自动配置相关参数，通过下发自动配置参数，完成测量。
int SWP_SetFreqCompensation();    //在 SWP 模式下，采用频率补偿机制对指定频段或整个频段进行功率修正。
int SWP_TimeOfSetFunction();      //获取SWP模式下不同函数的耗时。
int SWP_PickMaxPower();           //获取当前频谱的最大功率点与其对应的频率点。
int SWP_GetSpectrum_SigAndSpur(); //可以在获取频谱数据后区分信号和杂散。
int SWP_GetSpectrumAndIQS();      //同时获取频谱数据与IQ数据。
int SWP_GNSSReferenceClock();     //在SWP模式下使用高品质GNSS模块的10MHz参考时钟。
int SWP_GetSpectrum_Trigger();    //可以获取在触发源设置为外触发时的频谱数据。
int SWP_GetSpectrum_TraceAlign(); //在迹线对齐方式为对齐至起始频率或对齐至中心频率时，获取频谱数据。
int SWP_Fixedtime_GetFrames();    //循环50次获取10s频谱数据，得出在10s内能获取的平均频谱帧数。
int SWP_CalibrateRefClock();      //设备通过GNSS-1PPS或者通过Ext触发进行Clock校准。
int SWP_Meas_PhaseNoise();        //相位噪声测量。
int SWP_Meas_ChannelPower();      //信道功率测量。
int SWP_Meas_ACPR();              //邻道功率比测量。
int SWP_Meas_OBW();               //以百分比方式测量占用带宽。
int SWP_Meas_XdBBW();             //以XdB方式测量占用带宽。
int SWP_Meas_IM3();               //IM3测量。
int SWP_RBW_Spaced_Trace();       //使迹线两点之间的频率间隔接近于RBW。
int SWP_RefCLKSource_External();  //使用外部10MHz参考时钟。（以SWP模式下使用外部10MHz参考时钟为例，其他模式下使用方法相同）


int IQS_GetIQ_Standard();              //在专业配置下获取固定点数或连续流的IQ数据。
int IQS_ScaleIQDataToVolts();          //将获取的IQ数据转换为以V为单位的数据。
int IQS_ConfigandGetIQ_Time();         //获取IQS_Configuration、IQS_GetIQStream_PM1函数的调用耗时。
int IQS_ToSpectrumByLiquid();          //调用liquid库将获取到的时域IQ数据通过频谱分析方法转换为频谱数据。
int IQS_AudioAnalysis();               //对解调之后的IQ数据进行音频分析，得到音频电压、音频频率、信纳德和总谐波失真。
int IQS_GetIQToTxt();                  //将获得的IQ数据写入.txt文件中。
int IQS_Multithread_GetIQ_FFT_Write(); //多线程获取IQ数据、对IQ数据做FFT、将IQ数据写入txt文件。
int IQS_GNSS_1PPS();                   //在IQS模式下使用GNSS模块的1PPS触发。
int IQS_MultiDevSync_fixed();          //多台设备在同一时刻同时采集同一信号。     
int IQS_ExternalTrigger();             //配置触发源为外部触发
int IQS_TimerTrigger();                //配置触发源为定时器触发
int IQS_LevelTrigger_PreTrigger();     //配置触发源为电平触发,并设置预触发时间。
int IQS_LevelTrigger_TriggerDelay();   //配置触发源为电平触发，并设置延迟触发时间。
int IQS_Enable_GNSS_10MHz();           //在IQS模式下使用高品质GNSS模块的10MHz参考时钟。
int IQS_FMDataAnalysis();
int IQS_AMDataAnalysis();

int DSP_IQSToSpectrum(); //将获取到的时域IQ数据通过频谱分析方法转换为频谱数据。
int DSP_DDC();           //对获取的IQ数据进行重采样。
int DSP_LPF();           //对获取的IQ数据进行低通滤波。


int DETMode_Standard();   //获取固定点数或连续流的检波数据。


int RTAMode_Standard();          //获取固定点数（时长）或连续流的实时频谱数据。
int RTAMode_Standard_perframe(); //获取100帧数据，并计算每帧的平均处理时间。


int ASG_SignalOutput(); //按需输出单音/扫频/功率扫描信号。


void Device_Open_ErrorHandling(int Status, void** Device, int DevNum, BootProfile_TypeDef* BootProfile, BootInfo_TypeDef* BootInfo); //设备打开过程中的异常处理
void SWP_Configuration_ErrorHandling(int Status, void** Device, int DevNum, BootProfile_TypeDef* BootProfile, BootInfo_TypeDef* BootInfo, SWP_Profile_TypeDef* SWP_ProfileIn, SWP_Profile_TypeDef* SWP_ProfileOut, SWP_TraceInfo_TypeDef* TraceInfo);				 //SWP模式配置参数时的异常处理
void IQS_Configuration_ErrorHandling(int Status, void** Device, int DevNum, BootProfile_TypeDef* BootProfile, BootInfo_TypeDef* BootInfo, IQS_Profile_TypeDef* IQS_ProfileIn, IQS_Profile_TypeDef* IQS_ProfileOut, IQS_StreamInfo_TypeDef* StreamInfo);				 //IQS模式配置参数时的异常处理
void DET_Configuration_ErrorHandling(int Status, void** Device, int DevNum, BootProfile_TypeDef* BootProfile, BootInfo_TypeDef* BootInfo, DET_Profile_TypeDef* DET_ProfileIn, DET_Profile_TypeDef* DET_ProfileOut, DET_StreamInfo_TypeDef* StreamInfo);				 //DET模式配置参数时的异常处理
void RTA_Configuration_ErrorHandling(int Status, void** Device, int DevNum, BootProfile_TypeDef* BootProfile, BootInfo_TypeDef* BootInfo, RTA_Profile_TypeDef* RTA_ProfileIn, RTA_Profile_TypeDef* RTA_ProfileOut, RTA_FrameInfo_TypeDef* FrameInfo);				 //RTA模式配置参数时的异常处理
void SWP_ErrorHandlingExceptOpenAndConfiguration(int& Status, void** Device, int DevNum, BootProfile_TypeDef* BootProfile, BootInfo_TypeDef* BootInfo, SWP_Profile_TypeDef* SWP_ProfileIn, SWP_Profile_TypeDef* SWP_ProfileOut, SWP_TraceInfo_TypeDef* TraceInfo);	 //SWP模式除打开设备和配置参数外其他函数调用的异常处理
void IQS_ErrorHandlingExceptOpenAndConfiguration(int& Status, void** Device, int DevNum, BootProfile_TypeDef* BootProfile, BootInfo_TypeDef* BootInfo, IQS_Profile_TypeDef* IQS_ProfileIn, IQS_Profile_TypeDef* IQS_ProfileOut, IQS_StreamInfo_TypeDef* StreamInfo); //IQS模式除打开设备和配置参数外其他函数调用的异常处理
void DET_ErrorHandlingExceptOpenAndConfiguration(int& Status, void** Device, int DevNum, BootProfile_TypeDef* BootProfile, BootInfo_TypeDef* BootInfo, DET_Profile_TypeDef* DET_ProfileIn, DET_Profile_TypeDef* DET_ProfileOut, DET_StreamInfo_TypeDef* StreamInfo); //DET模式除打开设备和配置参数外其他函数调用的异常处理
void RTA_ErrorHandlingExceptOpenAndConfiguration(int& Status, void** Device, int DevNum, BootProfile_TypeDef* BootProfile, BootInfo_TypeDef* BootInfo, RTA_Profile_TypeDef* RTA_ProfileIn, RTA_Profile_TypeDef* RTA_ProfileOut, RTA_FrameInfo_TypeDef* FrameInfo);	 //RTA模式除打开设备和配置参数外其他函数调用的异常处理
