#ifndef _GPURFPC_SINGLE_H_
#define _GPURFPC_SINGLE_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_single {
	float p1;
	float p2;
	float p3;
	float p4;
	float p5;
	float p6;
};

extern  __device__ float GPU_getSigma0dB_single(const float p1, const float p2, const float p3, const float p4, const float p5, const float p6, float theta)
;

extern  __device__ float GPU_getSigma0dB_single(CUDASigmaParam_single param, float theta);

extern  __device__ CUDAVectorEllipsoidal GPU_SatelliteAntDirectNormal_single(
	float RstX, float RstY, float RstZ,
	float  AntXaxisX, float  AntXaxisY, float  AntXaxisZ,
	float  AntYaxisX, float  AntYaxisY, float  AntYaxisZ,
	float  AntZaxisX, float  AntZaxisY, float  AntZaxisZ,
	float  AntDirectX, float  AntDirectY, float  AntDirectZ
);

extern  __device__ float GPU_BillerInterpAntPattern_single(float* antpattern,
	float starttheta, float startphi, float dtheta, float dphi,
	long thetapoints, long phipoints,
	float searththeta, float searchphi);



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


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

	float* d_temp_R, float* d_temp_amp
);











#endif



 