Files
2026-02-01 22:23:06 +08:00

344 lines
13 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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
//---- 1SDK初始化相关 ----
//*********************************************************
// 功能说明: 初始化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_