****dllexport、dllimport、__stdcall的宏定義

#ifndef _GP_NET_SDK_DEFINE_H_
#define _GP_NET_SDK_DEFINE_H_

#if defined _WIN32 || defined _WIN64
	#define CALLBACK	__stdcall
	#define CALL_METHOD __stdcall

#elif defined __linux__
	#define CALLBACK  
	#define CALL_METHOD
#endif


#if defined(WIN32) || defined(WIN64)		//windows include
//#include <windows.h>
#ifndef INT8
typedef signed char INT8;
#endif
#ifndef UINT8
typedef unsigned char UINT8;
#endif
#ifndef UINT16
typedef unsigned short UINT16;
#endif
#ifndef INT16
typedef short INT16;
#endif
#ifndef UINT32
typedef unsigned int UINT32;
#endif
#ifndef INT32
typedef signed int INT32;
#endif
#ifndef UINT64
typedef unsigned __int64 UINT64;
#endif
#ifndef INT64
typedef signed __int64 INT64;
#endif
#ifndef FLOAT32
typedef float FLOAT32;
#endif
#ifndef FLOAT64
typedef double FLOAT64;
#endif



#ifdef GPNETSDK_EXPORTS
# define CLIENT_NET_API __declspec(dllexport)
#else
# define CLIENT_NET_API __declspec(dllimport)
#endif

#elif defined __linux__

#ifndef UINT8
typedef unsigned char UINT8;
#endif
#ifndef UINT16
typedef unsigned short UINT16;
#endif
#ifndef INT16
typedef short INT16;
#endif
#ifndef UINT32
typedef unsigned int UINT32;
#endif
#ifndef INT32
typedef signed int INT32;
#endif
#ifndef UINT64
typedef unsigned __int64 UINT64;
#endif
#ifndef INT64
typedef signed __int64 INT64;
#endif
#ifndef FLOAT32
typedef float FLOAT32;
#endif
#ifndef FLOAT64
typedef double FLOAT64;
#endif

#define CLIENT_NET_API  extern "C"

#endif

#define GP_DEV_RET_OK				 0              
#define GP_DEV_RET_TIMEOUT			-1
#define GP_DEV_RET_INVALID_PARAM	-2 
#define GP_DEV_RET_THREAD_FAILED    -3
#define GP_DEV_RET_DISABLE_ID		-4

#define GP_DEV_MAX_DEV_NUM			16   //支持最大設備數量

///<  設備信息結構
typedef struct _GP_DEV_INFO_
{
	unsigned char	szIpaddr[16];	    
	unsigned char	szNetmask[16];
	unsigned char	szGateway[16];
	unsigned char	szMac[24];
	unsigned char	szDevName[32];
	unsigned int    nPort;				// bu add in 20190522
	unsigned int    nDeviceType;        // 相機類型
	unsigned char	byRes[1024];
}GP_DEV_INFO, *PGP_DEV_INFO;


///< 設備網絡信息
typedef struct _GP_DEV_NET_INFO_
{
	unsigned char	szIpaddr[16];
	unsigned char	szNetmask[16];
	unsigned char	szGateway[16];
	unsigned char	szMac[24];
	unsigned char	szRes[1024];
}GP_DEV_NET_INFO, *PGP_DEV_NET_INFO;


///< 設備幀數據
typedef struct _GP_DEV_FRAME_INFO_
{
	unsigned int nFrameID;
	unsigned int nFrameWidth;
	unsigned int nFrameHeight;
	unsigned int nFrameType;
	char*		 pFrameData;
	unsigned int nDataLen;
	unsigned int nReserved[10];   ///< 對於消費bu的深度數據而言,前4個是溫度
}GP_DEV_FRAME_INFO, *PGP_DEV_FRAME_INFO;


///< 輸出的幀類型
typedef enum  _GP_DEV_FRAME_TYPE_
{
	FRAME_DEEP = 0,   // 深度
	FRAME_GRAY = 1,   // 灰度
	FRAME_H264 = 2,   // h264
	FRAME_RGB32 = 3,  // rgb32
	FRAME_RGB24 = 4,  // rgb24
}GP_DEV_FRAME_TYPE;


///< 顯示句柄
typedef struct _GP_DEV_DISPLAY_HANDLE_
{
	void*					pDisplayHandle;
	GP_DEV_FRAME_TYPE      nDisplayType;
}GP_DEV_DISPLAY_HANDLE, *PGP_DEV_DISPLAY_HANDLE;


///< 寄存器信息結構
typedef struct _GP_DEV_REGISTER_INFO_
{
	UINT32  nRegisterAddress;
	UINT32  nRegisterData;
}GP_DEV_REGISTER_INFO, *PGP_DEV_REGISTER_INFO;


///< 固件版本
typedef struct _GP_DEV_FIREWARE_VERSION_
{
	UINT32  nFirewareVersion;
}GP_DEV_FIREWARE_VERSION, *PGP_DEV_FIREWARE_VERSION;


///< 硬件版本
typedef struct _GP_DEV_HARDWARE_VERSION_
{
	UINT32  nHardwareVersion[3];
}GP_DEV_HARDWARE_VERSION, *PGP_DEV_HARDWARE_VERSION;


///< 連接狀態
typedef enum _GP_DEV_CONNECT_STATUS_
{
	STATUS_DISCONNECTED = 0,
	STATUS_CONNECTED = 1,
}GP_DEV_CONNECT_STATUS;

///< H264數據的分辨率,默認是1080P
typedef enum _GP_DEV_H264_RESOLUTION_
{
	H264_960P  = 0,   // 1280 * 960
	H264_1080P = 1,   // 1920 * 1080
	H264_720P  = 2,   // 1280 * 720
	H264_480P  = 3,   // 720  * 480
	H264_VGA   = 4,   // 640  * 480
}GP_DEV_H264_RESOLUTION;

// 鏡頭內參
#pragma  pack(1)
typedef struct _GP_LENS_PARAM_
{
	int	   bUndistortFlag;
	double dFocalLengthX;
	double dFocalLengthY;
	double dPrincipalPointX;
	double dPrincipalPointY;
	double dRadialDistortionK1;
	double dRadialDistortionK2;
	double dRadialDistortionK3;
	double dTangentialDistortionP1;
	double dTangentialDistortionP2;
}GP_LENS_PARAM;

// 鏡頭配準參數
typedef struct _GP_LENS_REGISTRATION_PARAM_
{
	double dRotation[3][3];
	double dTranslation[3];
}GP_LENS_REGISTRATION_PARAM;

// 像素寬高
typedef struct _GP_SENSOR_PARAM_
{
	double dPixelWidth;
	double dPixelHeight;
}GP_SENSOR_PARAM;

// 設備鏡頭內參
typedef struct _GP_DEV_LENS_PARAM_
{
	GP_SENSOR_PARAM stSensorParam;
	GP_LENS_PARAM stDepthLensParam;
	GP_LENS_PARAM stColorLensParam;
	GP_LENS_REGISTRATION_PARAM stLensRegistrationParam;
}GP_DEV_LENS_PARAM, *PGP_DEV_LENS_PARAM;
#pragma  pack()


// 消費bu的算法
typedef struct _GP_DEV_ALGORITHM_OPEN_CLOSE_
{
	bool bTotalAlgrithm;
	bool bUndist;
	bool bViewAngle;
	bool bKalmanFilter;
	int  nKalmanType; // (0, 1) SIMAPLE_KALMAN_FILTER = 0 (default),KALMAN_FILTER = 1,
	float fKalmanFilterCoef; //0.2 (default)
	bool bMedianFilter;
	bool bGuidedFilter;
	int  nGuidedFilterIterations;
	bool bGaussianFilter; //false (default)
	int  nGaussianFilterIterations; //5 (default)
	bool bRegister;
}GP_DEV_ALGORITHM_OPEN_CLOSE, *PGP_DEV_ALGORITHM_OPEN_CLOSE;
///< 回調函數
typedef void (CALLBACK *PFN_SEARCH_DEVICE_CB)(const PGP_DEV_INFO pstDeviceInfo, void* pUserData);
typedef void(CALLBACK *PFN_GET_FRAME_CB)(const int nLoginID, const PGP_DEV_FRAME_INFO pstFrameInfo, void* pUserData);
typedef void(CALLBACK *PFN_GET_CONNECT_STATE_CB)(const int nLoginID, const char* szIP,  const  GP_DEV_CONNECT_STATUS enStatus, void* pUserData);



#endif _GP_NET_SDK_DEFINE_H_

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章