#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_