344 lines
13 KiB
C
344 lines
13 KiB
C
#ifndef _GD_SDK_H_
|
||
#define _GD_SDK_H_
|
||
|
||
#if defined(GDDEVSDKMODULE_LIBRARY)
|
||
# define GDDEVSDKMODULESHARED_EXPORT __declspec(dllexport)
|
||
#else
|
||
# define GDDEVSDKMODULESHARED_EXPORT __declspec(dllimport)
|
||
#endif
|
||
|
||
|
||
#include "systemcontrolcommondefine.h"
|
||
#include "CommDef.h"
|
||
|
||
#ifndef _WINDOWS_
|
||
#if (defined(_WIN32) || defined(_WIN64))
|
||
#include <winsock2.h>
|
||
#include <windows.h>
|
||
#endif
|
||
#endif
|
||
|
||
#ifndef __PLAYRECT_defined
|
||
#define __PLAYRECT_defined
|
||
typedef struct __PLAYRECT
|
||
{
|
||
int x;
|
||
int y;
|
||
int uWidth;
|
||
int uHeight;
|
||
}PLAYRECT;
|
||
#endif
|
||
|
||
#if (defined(_WIN32)) //windows
|
||
typedef unsigned __int64 UINT64;
|
||
typedef signed __int64 INT64;
|
||
#elif defined(__linux__) || defined(__APPLE__) //linux
|
||
#define BOOL int
|
||
typedef unsigned int DWORD;
|
||
typedef unsigned short WORD;
|
||
typedef unsigned short USHORT;
|
||
typedef short SHORT;
|
||
typedef int LONG;
|
||
typedef unsigned char BYTE;
|
||
typedef unsigned int UINT;
|
||
typedef void* LPVOID;
|
||
typedef void* HANDLE;
|
||
typedef unsigned int* LPDWORD;
|
||
typedef unsigned long long UINT64;
|
||
typedef signed long long INT64;
|
||
|
||
#ifndef TRUE
|
||
#define TRUE 1
|
||
#endif
|
||
#ifndef FALSE
|
||
#define FALSE 0
|
||
#endif
|
||
#ifndef NULL
|
||
#define NULL 0
|
||
#endif
|
||
|
||
#define GDDEVSDKMODULESHARED_EXPORT
|
||
#define CALLBACK
|
||
|
||
typedef unsigned int COLORKEY;
|
||
typedef unsigned int COLORREF;
|
||
|
||
#ifndef __HWND_defined
|
||
#define __HWND_defined
|
||
#if defined(__linux__)
|
||
typedef unsigned int HWND;
|
||
#else
|
||
typedef void* HWND;
|
||
#endif
|
||
#endif
|
||
|
||
#ifndef __HDC_defined
|
||
#define __HDC_defined
|
||
#if defined(__linux__)
|
||
typedef struct __DC
|
||
{
|
||
void* surface; //SDL Surface
|
||
HWND hWnd; //HDC window handle
|
||
}DC;
|
||
typedef DC* HDC;
|
||
#else
|
||
typedef void* HDC;
|
||
#endif
|
||
#endif
|
||
|
||
typedef struct tagInitInfo
|
||
{
|
||
int uWidth;
|
||
int uHeight;
|
||
}INITINFO;
|
||
#endif
|
||
|
||
|
||
#define INVALID_DWORD_VALUE (0xFFFFFFFF)
|
||
|
||
#define GD_SDK_INVALID_DEVICEID -1 //无效设备ID
|
||
|
||
/*******************全局错误码 begin**********************/
|
||
#define GD_SDK_ERROR_INVALID -1 //错误,值不可用
|
||
#define GD_SDK_ERROR_SUCCESS 0 //成功
|
||
|
||
/*******************01 全局错误码**********************/
|
||
#define GD_SDK_NET_DVR_PASSWORD_ERROR 1 //用户名密码错误
|
||
#define GD_SDK_NET_DVR_NOENOUGHPRI 2 //权限不足
|
||
#define GD_SDK_NET_DVR_NOINIT 3 //没有初始化
|
||
#define GD_SDK_NET_DVR_CHANNEL_ERROR 4 //通道号错误
|
||
#define GD_SDK_NET_DVR_OVER_MAXLINK 5 //连接到DVR的客户端个数超过最大
|
||
#define GD_SDK_NET_DVR_VERSIONNOMATCH 6 //版本不匹配
|
||
#define GD_SDK_NET_DVR_NETWORK_FAIL_CONNECT 7 //连接服务器失败
|
||
#define GD_SDK_NET_DVR_NETWORK_SEND_ERROR 8 //向服务器发送失败
|
||
#define GD_SDK_NET_DVR_NETWORK_RECV_ERROR 9 //从服务器接收数据失败
|
||
#define GD_SDK_NET_DVR_NETWORK_RECV_TIMEOUT 10 //从服务器接收数据超时
|
||
#define GD_SDK_NET_DVR_NETWORK_ERRORDATA 11 //传送的数据有误
|
||
#define GD_SDK_NET_DVR_ORDER_ERROR 12 //调用次序错误
|
||
#define GD_SDK_NET_DVR_OPERNOPERMIT 13 //无此权限
|
||
|
||
#define GD_SDK_RAID_ERROR_INDEX 200
|
||
#define GD_SDK_NET_DVR_ERROR_DEVICE_NOT_ACTIVATED 250//设备未激活
|
||
#define GD_SDK_NET_DVR_ERROR_RISK_PASSWORD 251 //有风险的密码
|
||
#define GD_SDK_NET_DVR_ERROR_DEVICE_HAS_ACTIVATED 252//设备已激活
|
||
|
||
#define GD_SDK_NET_CONVERT_ERROR_NOT_SUPPORT 581 //转封装库错误码
|
||
|
||
#define GD_SDK_NET_ERR_MAX_WIN_OVERLAP 951 //达到最大窗口重叠数
|
||
#define GD_SDK_NET_ERR_STREAMID_CHAN_BOTH_VALID 952 //stream ID和通道号同时有效
|
||
#define GD_SDK_NET_ERR_NO_ZERO_CHAN 953 //设备无零通道
|
||
#define NEED_RECONNECT 955 //需要重定向(转码子系统使用)
|
||
#define GD_SDK_NET_ERR_NO_STREAM_ID 956 //流ID不存在
|
||
#define GD_SDK_NET_DVR_TRANS_NOT_START 957 //转码未启动
|
||
#define GD_SDK_NET_ERR_MAXNUM_STREAM_ID 958 //流ID数达到上限
|
||
#define GD_SDK_NET_ERR_WORKMODE_MISMATCH 959 //工作模式不匹配
|
||
#define GD_SDK_NET_ERR_MODE_IS_USING 960 //已工作在当前模式
|
||
#define GD_SDK_NET_ERR_DEV_PROGRESSING 961 //设备正在处理中
|
||
#define GD_SDK_NET_ERR_PASSIVE_TRANSCODING 962 //正在被动转码
|
||
|
||
|
||
/*******************02 系统错误码**********************/
|
||
#define GD_SDK_SYS_CREATE_TRANSPARENT_CHANNEL_LOGIN 1001 //创建透明通道时,登录失败
|
||
#define GD_SDK_SYS_CREATE_TRANSPARENT_CHANNEL_GETCFG 1002 //创建透明通道时,获取串口配置信息失败
|
||
#define GD_SDK_SYS_CREATE_TRANSPARENT_CHANNEL_SETCFG 1003 //创建透明通道时,设置串口配置信息失败
|
||
#define GD_SDK_SYS_CREATE_TRANSPARENT_CHANNEL_START 1004 //创建透明通道时,开始打开透明通道失败
|
||
#define GD_SDK_SYS_CREATE_TRANSPARENT_CHANNEL_SEND 1005 //创建了透明通道后,发送数据失败
|
||
|
||
|
||
/*******************全局错误码 End**********************/
|
||
|
||
#define MAX_IP_LEN 16
|
||
#define MAX_LOGIN_LEN 256
|
||
|
||
//当前选中的视频类型,即进行目标检测、跟踪算法处理、调教变倍等操作的视频类型
|
||
typedef enum VideoStreamType
|
||
{
|
||
VideoIR = 0, //红外
|
||
VideoVL = 1, //可见光
|
||
VideoMerge = 2, //融合视频
|
||
VideoUnkown = 3, //未知类型
|
||
}VideoStreamType;
|
||
|
||
#pragma pack(1)
|
||
|
||
//设备登录信息
|
||
typedef struct tagLOGIN_INFO
|
||
{
|
||
char szDevIPAddr[MAX_IP_LEN]; //设备通信IP地址,即MQTT访问IP,默认为192.168.1.15
|
||
int nDevPort; //设备通信访问端口,即MQTT连接端口,默认为1883
|
||
|
||
char szUrlVLStream[MAX_LOGIN_LEN]; //可见光视频流地址,默认为:rtsp://192.168.1.15:8550/streamch1
|
||
char szUrlIRStream[MAX_LOGIN_LEN]; //红外视频流地址,默认为:rtsp://192.168.1.15:8550/streamch2
|
||
char szUrlMergeStream[MAX_LOGIN_LEN]; //融合视频流地址,默认为:rtsp://192.168.1.15:8550/streamch0
|
||
|
||
void* pUser; //用户指针
|
||
SystemStatusCallbackDevice pFnSystemStatusCallback; //系统状态信息回调
|
||
}LOGIN_INFO,*LPLOGIN_INFO;
|
||
|
||
|
||
typedef struct tagGD_VIDEO_PLAY_PARAM
|
||
{
|
||
HWND pHwnd; //视频显示句柄
|
||
}GD_VIDEO_PLAY_PARAM, *LPGD_VIDEO_PLAY_PARAM;
|
||
|
||
#pragma pack()
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
|
||
|
||
//---- 1,SDK初始化相关 ----
|
||
|
||
//*********************************************************
|
||
// 功能说明: 初始化SDK。
|
||
// 参数说明: 无。
|
||
// 返回值: 成功返回TRUE,失败返回FALSE。
|
||
//*********************************************************
|
||
bool GDDEVSDKMODULESHARED_EXPORT GD_SDK_Init();
|
||
|
||
//*********************************************************
|
||
// 功能说明: 清理SDK。
|
||
// 参数说明: 无。
|
||
// 返回值: 无。
|
||
//*********************************************************
|
||
bool GDDEVSDKMODULESHARED_EXPORT GD_SDK_UnInit();
|
||
|
||
//*********************************************************
|
||
// 功能说明: 获取上一个错误码。
|
||
// 参数说明: 无。
|
||
// 返回值: 全局错误码,函数调用失败后可调用此函数获取错误码。
|
||
//*********************************************************
|
||
long GDDEVSDKMODULESHARED_EXPORT GD_SDK_GetLastError();
|
||
|
||
|
||
//---- 2,设备控制相关 ----
|
||
|
||
//*********************************************************
|
||
// 功能说明: 打开设备。
|
||
// 参数说明: stInfo: 设备登录信息
|
||
// 返回值: 成功返回设备ID,大于0打开成功,小于0打开失败。
|
||
//*********************************************************
|
||
long GDDEVSDKMODULESHARED_EXPORT GD_SDK_OpenDev(LOGIN_INFO stInfo);
|
||
|
||
//*********************************************************
|
||
// 功能说明: 关闭设备。
|
||
// 参数说明: lDeviceID:设备ID。
|
||
// 返回值: 成功返回TRUE,失败返回FALSE。
|
||
//*********************************************************
|
||
bool GDDEVSDKMODULESHARED_EXPORT GD_SDK_CloseDev(long lDeviceID);
|
||
|
||
|
||
|
||
//*********************************************************
|
||
// 功能说明: 开始视频预览。
|
||
// 参数说明: lDeviceID: 设备ID
|
||
// stParamInfo: 视频预览参数
|
||
// nVideoType: 预览的视频类型,取值见枚举VideoStreamType
|
||
// 返回值: 成功返回TRUE,失败返回FALSE。
|
||
//*********************************************************
|
||
bool GDDEVSDKMODULESHARED_EXPORT GD_SDK_StartPlay(long lDeviceID, GD_VIDEO_PLAY_PARAM stParamInfo, int nVideoType);
|
||
|
||
//*********************************************************
|
||
// 功能说明: 停止视频预览。
|
||
// 参数说明: lDeviceID: 设备ID
|
||
// nVideoType: 停止预览的视频类型,取值见枚举VideoStreamType
|
||
// 返回值: 成功返回TRUE,失败返回FALSE。
|
||
//*********************************************************
|
||
bool GDDEVSDKMODULESHARED_EXPORT GD_SDK_StopPlay(long lDeviceID, int nVideoType);
|
||
|
||
|
||
//*********************************************************
|
||
// 功能说明: 获取系统状态信息。
|
||
// 参数说明: lDeviceID: 设备ID。
|
||
// stSystemStatus:获取状态信息结构体的引用
|
||
// 返回值: 成功返回TRUE,失败返回FALSE。
|
||
bool GDDEVSDKMODULESHARED_EXPORT GD_SDK_GetSystemControlStatus(long lDeviceID, SYSTEM_STATUS& stSystemStatus);
|
||
|
||
|
||
|
||
//*********************************************************
|
||
// 功能说明: 控制红外模块。
|
||
// 参数说明: lDeviceID: 设备ID。
|
||
// emCommand: 红外控制枚举
|
||
// stIRParam: 红外控制参数
|
||
// 返回值: 成功返回TRUE,失败返回FALSE。
|
||
bool GDDEVSDKMODULESHARED_EXPORT GD_SDK_ControlIRModule(long lDeviceID, IRControlCommand emCommand, const IR_PARAM stIRParam);
|
||
|
||
|
||
//*********************************************************
|
||
// 功能说明: 控制可见光模块。
|
||
// 参数说明: lDeviceID: 设备ID。
|
||
// emCommand: 可见光控制枚举
|
||
// stVLParam: 可见光控制参数
|
||
// 返回值: 成功返回TRUE,失败返回FALSE。
|
||
bool GDDEVSDKMODULESHARED_EXPORT GD_SDK_ControlVLModule(long lDeviceID, VLControlCommand emCommand, const VL_PARAM stVLParam);
|
||
|
||
|
||
//*********************************************************
|
||
// 功能说明: 控制激光模块。
|
||
// 参数说明: lDeviceID: 设备ID。
|
||
// emCommand: 激光控制枚举
|
||
// stLaserParam: 激光控制参数
|
||
// 返回值: 成功返回TRUE,失败返回FALSE。
|
||
bool GDDEVSDKMODULESHARED_EXPORT GD_SDK_ControlLaserModule(long lDeviceID, LaserCommand emCommand, const LASER_PARAM stLaserParam);
|
||
|
||
//*********************************************************
|
||
// 功能说明: 控制跟踪板模块。
|
||
// 参数说明: lDeviceID: 设备ID。
|
||
// emCommand: 跟踪板控制枚举
|
||
// stTrackParam: 跟踪板控制参数
|
||
// 返回值: 成功返回TRUE,失败返回FALSE。
|
||
bool GDDEVSDKMODULESHARED_EXPORT GD_SDK_ControlARMTrackModule(long lDeviceID, ARMTrackCommand emCommand, const TRACK_PARAM stTrackParam);
|
||
|
||
//*********************************************************
|
||
// 功能说明: 控制伺服转台模块。
|
||
// 参数说明: lDeviceID: 设备ID。
|
||
// emCommand: 伺服转台控制枚举
|
||
// stServoParam: 伺服转台控制参数
|
||
// 返回值: 成功返回TRUE,失败返回FALSE。
|
||
bool GDDEVSDKMODULESHARED_EXPORT GD_SDK_ControlServoModule(long lDeviceID, ServoCommand emCommand, const SERVO_PARAM stServoParam);
|
||
|
||
//*********************************************************
|
||
// 功能说明: 控制综控模块。
|
||
// 参数说明: lDeviceID: 设备ID。
|
||
// emCommand: 综控控制枚举
|
||
// stIntegratedParam: 综控控制参数
|
||
// 返回值: 成功返回TRUE,失败返回FALSE。
|
||
bool GDDEVSDKMODULESHARED_EXPORT GD_SDK_ControlIntegratedModule(long lDeviceID, Mudule_Type moduleType,IntegratedCommand emCommand, const INTEGRATED_PARAM stIntegratedParam);
|
||
|
||
//*********************************************************
|
||
// 功能说明: 控制系统。
|
||
// 参数说明: lDeviceID: 设备ID。
|
||
// emCommand: 系统控制枚举
|
||
// stDevParam: 系统控制参数
|
||
// 返回值: 成功返回TRUE,失败返回FALSE。
|
||
bool GDDEVSDKMODULESHARED_EXPORT GD_SDK_ControlDevSystemModule(long lDeviceID, DevSystemCommand emCommand, const DEV_SYSTEM_PARAM stDevParam);
|
||
|
||
//*********************************************************
|
||
// 功能说明: OTA升级控制。
|
||
// 参数说明: lDeviceID: 设备ID。
|
||
// emModuleType:升级模块选择
|
||
// emCommand: OTA升级控制枚举
|
||
// stOTAParam: OTA升级控制参数
|
||
// 返回值: 成功返回TRUE,失败返回FALSE。
|
||
bool GDDEVSDKMODULESHARED_EXPORT GD_SDK_ControlOTAModule(long lDeviceID, Mudule_Type emModuleType, OTACommand emCommand, const OTA_PARAM stOTAParam);
|
||
|
||
|
||
//*********************************************************
|
||
// 功能说明: 获取消息ID。
|
||
// 参数说明: lDeviceID: 设备ID。
|
||
// 返回值: int 返回消息ID。
|
||
int GDDEVSDKMODULESHARED_EXPORT GD_SDK_GetMessageID(long lDeviceID);
|
||
|
||
|
||
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
|
||
#endif // _GD_SDK_H_
|