#ifndef _GPURFPC_H_
#define _GPURFPC_H_

#include "BaseConstVariable.h"
#include "GPUTool.cuh"
#include <cuda_runtime.h>
#include <device_launch_parameters.h>
#include <cublas_v2.h>
#include <cuComplex.h>

#define RFPCPIDIVLIGHT -4*PI/(LIGHTSPEED/1e9)

 
extern "C" struct  CUDASigmaParam {
	double p1;
	double p2;
	double p3;
	double p4;
	double p5;
	double p6;
};















extern "C" void CUDA_RFPC_MainProcess(
	// 天线
	double* antX, double* antY, double* antZ, // 天线坐标
	double* antXaxisX, double* antXaxisY, double* antXaxisZ, // 天线坐标系的X轴
	double* antYaxisX, double* antYaxisY, double* antYaxisZ,// 天线坐标系的Y轴
	double* antZaxisX, double* antZaxisY, double* antZaxisZ,// 天线坐标系的Z轴
	double* antDirectX, double* antDirectY, double* antDirectZ,// 天线的指向
	long PRFCount, long FreqNum,   // 脉冲数量，频率数量
	float f0, float dfreq,// 起始频率，终止频率
	double Pt,// 发射能量
	double refPhaseRange,
	// 天线方向图
	double* TransAntpattern, double Transtarttheta, double Transstartphi, double Transdtheta, double Transdphi, int Transthetapoints, int Transphipoints, // 发射天线方向图
	double* ReceiveAntpattern, double Receivestarttheta, double Receivestartphi, double Receivedtheta, double Receivedphi, int Receivethetapoints, int Receivephipoints,//接收天线方向图
	double maxTransAntPatternValue,double maxReceiveAntPatternValue,
	double NearR, double FarR, // 距离范围


	// 地面
	double* targetX, double* targetY, double* targetZ, long* demCls, long TargetPixelNumber, // 地面坐标、地表覆盖类型，像素数
	double* demSlopeX, double* demSlopeY, double* demSlopeZ, // 地表坡度矢量
	CUDASigmaParam* sigma0Paramslist, long sigmaparamslistlen,// 插值图像
 
	float* out_echoReal, float* out_echoImag,// 输出回波

	float* d_temp_R, float* d_temp_amp
);











#endif



 