GrabBag/SDK/Device/VzNLSDK/Inc/VZNL_Common.h

438 lines
16 KiB
C
Raw Normal View History

2026-03-17 22:27:58 +08:00
/*
* Header: VzNL_Common.h
* Description:(Vizum)EyeCB板提供公用函数接口使SDK时必须调用VzNL_Init接口
* VzNL_Destroy接口进行销毁
* Sample:
* VzNL_Init();
* xxxxxxxxxxx
* VzNL_Destroy();
* Author: Mjw
* Date: 2018/08/28
*/
#ifndef __VIZUM_COMMON_HEADER__
#define __VIZUM_COMMON_HEADER__
#include "VZNL_Export.h"
#include "VZNL_Types.h"
/**
* @brief
* @param [out] pLeftImage
* @param [out] pRightImage
* @param [out] pFrameProps
* @param [in] pParam
* @return 0
*/
typedef void(*VzNL_OutputImageCB)(SVzNLImageData* pLeftImage, SVzNLImageData* pRightImage, SVzNLImageData* pCenterImage, const SVzOutputFrameProps* pFrameProps, void* pParam);
/**
* @brief CallBack函数
* @param eStatus [out]
* @param pInfoParam [out]
*/
typedef void(*VzNL_OnMulDevNotifyStatusCB)(EVzMulDevWorkStatus eStatus, void* pInfoParam);
/**
* @brief CallBack函数
* @param eStatus [out]
* @param pInfoParam [out]
*/
typedef void(*VzNL_OnNotifyStatusCB)(EVzDeviceWorkStatus eStatus, void* pInfoParam);
typedef void(*VzNL_OnNotifyStatusCBEx)(EVzDeviceWorkStatus eStatus, void* pExtData, unsigned int nDataLength, void* pInfoParam);
/**
* @brief SDK
* @param [in] pConfigParam
* @return 0
*/
VZNLAPI int VzNL_Init(const SVzNLConfigParam* pConfigParam);
/**
* @brief IP列表
* @param [in] IP列表
* @param [in]
* @return 0
*/
VZNLAPI int VzNL_SetDeviceIpList(SVzNLDeviceIp* pDeviceList,unsigned int nCount);
/**
* @brief
* @param [in] nFindDevFlag
* keSearchDeviceFlag_EyeCB
* keSearchDeviceFlag_USBLargeEye USB极光眼
* keSearchDeviceFlag_EthLargeEye :
* keSearchDeviceFlag_EthSmallEye :
* keSearchDeviceFlag_EthLaserRobotEye :
* keSearchDeviceFlagAll
* @return 0
*/
VZNLAPI int VzNL_ResearchDevice(EVzSearchDeviceFlag nFindDevFlag);
/**
* @brief
* @param [in] Buffer需要用户根据Count值来自己malloc一个大小NULL
* @param [in/out] in:info结构的个数out:
* @return 0
*/
VZNLAPI int VzNL_GetEyeCBDeviceInfo(SVzNLEyeCBInfo* pInfo, int* pnCount);
/**
* @brief
* @param [in] pInfo
* @param [in/out] in:info的个数out:
* @return 0
*/
VZNLAPI int VzNL_GetAllOpenDevice(SVzNLEyeCBInfo* pInfo, int* pnCount);
/**
* @brief
* @param [in]
* @param [out] pErrorCode , NULL时
* @return VzTrue
*/
VZNLAPI VzBool VzNL_IsDeviceInUse(const SVzNLEyeCBInfo* pInfo, int* pnErrorCode);
/**
* @brief
* @param [in] hDevice
* @param [out] pOpenDeviceParam
* @param [out] pErrorCode , NULL时
* @return 0
*/
VZNLAPI VZNLHANDLE VzNL_OpenDevice(const SVzNLEyeCBInfo* pInfo, const SVzNLOpenDeviceParam* pOpenDeviceParam, int* pErrorCode);
/**
* @brief SDK版本信息
* @param [in] hDevice
* @param [out] pVersionInfo
* @return 0
*/
VZNLAPI int VzNL_GetVersion(VZNLHANDLE hDevice, SVzNLVersionInfo* pVersionInfo);
/**
* @brief
* @param [in] hDevice
* @param [in] pInfo
* @return 0
*/
VZNLAPI int VzNL_GetDeviceInfo(VZNLHANDLE hDevice, SVzNLEyeCBInfo* pInfo);
/**
* @brief
* @param [in] eOutputImageType keVzNLImageType_None时
*/
VZNLAPI void VzNL_SetOutputImageFormat(EVzNLImageType eOutputImageType);
/**
* @brief
* null
* @param [in] hDevice
* @param [out] ppLeftEye
* @param [out] ppRightEye
* @param [in] nTimeOut
* @return 0
*/
VZNLAPI int VzNL_GetEyeImage(VZNLHANDLE hDevice, SVzNLImageData** ppLeftEye, SVzNLImageData** ppRightEye, unsigned int nTimeOut);
/**
* @brief
* @param [in] ppImageData
* @return 0
*/
VZNLAPI int VzNL_ReleaseImage(SVzNLImageData** ppImageData);
/**
* @brief
* @param [in] hDevice Handle
* @param [in] pImageCB
* @param [in] pCBParam
* @return 0
*/
VZNLAPI int VzNL_StartCapture(VZNLHANDLE hDevice, VzNL_OutputImageCB pImageCB, void* pCBParam);
/**
* @brief
* @param [in] hDevice Handle
* @return 0
*/
VZNLAPI int VzNL_StopCapture(VZNLHANDLE hDevice);
/**
* @brief
* @param [in] hDevice Handle
* @param [out] pnErrorCode pnErrorCode不为nullptr时,
* @return VzTrue,,VzFalse表示不在取图
*/
VZNLAPI VzBool VzNL_IsCapturing(VZNLHANDLE hDevice, int* pnErrorCode);
/**
* @brief
* @param [in] hDevice Handle
* @return 0
*/
VZNLAPI int VzNL_CloseDevice(VZNLHANDLE hDevice);
/**
* @brief Idle时执行此函数
* @return 0
*/
VZNLAPI int VzNL_SysIdleProc();
/**
* @brief Log等级
* @param eLevel [in] Log等级
* @param eLogType [in] Log类型
* @return 0
*/
VZNLAPI void VzNL_SetLogLevel(EVzNLLogLevel eLevel, EVzNLLogType eLogType);
/**
* @brief
* @param [in] nErrorCode
* @param [out] szError
* @return 0
*/
VZNLAPI int VzNL_GetErrorInfo(int nErrorCode, char szError[256]);
/**
* @brief
* @param [in] hDevice Handle
* @param [in] pNotifyCB
* @param [in] pCBParam
* @return 0
*/
VZNLAPI int VzNL_SetDeviceStatusNotify(VZNLHANDLE hDevice, VzNL_OnNotifyStatusCB pNotifyCB, void* pCBParam);
VZNLAPI int VzNL_SetDeviceStatusNotifyEx(VZNLHANDLE hDevice, VzNL_OnNotifyStatusCBEx pNotifyCB, void* pCBParam);
/**
* @brief
* @param [in] hDevice Handle
* @return 0
*/
VZNLAPI int VzNL_ReConnectDevice(VZNLHANDLE hDevice);
/** @brief 重启相机
* @param[in] hDevice Handle
*/
VZNLAPI int VzNL_RebootDevice(VZNLHANDLE hDevice);
/** @brief 获取图像标定矩阵
* @param[in] hDevice Handle
* @param[out] dQMatrixData
*/
VZNLAPI int VzNL_GetImageCalibMatrix(VZNLHANDLE hDevice, double dQMatrixData[16]);
/** @brief 获取双目固定视差
* @param[in] hDevice Handle
* @param[out] pFixDisparity
*/
VZNLAPI int VzNL_GetFixDisparity(VZNLHANDLE hDevice, int* pFixDisparity);
/** @brief 获取SDK内存占用大小
* @param [out] pnErrorCode pnErrorCode不为nullptr时,
*/
VZNLAPI unsigned int VzNL_GetUsingMemorySize(int* pnErrorCode);
/**
* @brief
* @param hDevice
* @param [out] pnErrorCode pnErrorCode不为nullptr时,
* @return
*/
VZNLAPI unsigned int VzNL_GetPupilDistance(VZNLHANDLE hDevice, int* pnErrorCode);
/**
* @brief /
* @param hDevice
* @param [in] bEnableQuickMode
* @return 0
*/
VZNLAPI int VzNL_EnableQuickMode(VZNLHANDLE hDevice, VzBool bEnableQuickMode);
VZNLAPI VzBool VzNL_IsEnableQuickMode(VZNLHANDLE hDevice, int* pnErrorCode);
/**
* @brief
* @param hDevice [in] Handle
* @param psVideoRes [in]
* @return 0
*/
VZNLAPI int VzNL_GetResolution(VZNLHANDLE hDevice, SVzVideoResolution* psVideoRes);
/**
* @brief /
* @param hDevice
* @param [in] bEnable
* @return 0
*/
VZNLAPI int VzNL_EnableLeftEyeOrigin(VZNLHANDLE hDevice, VzBool bEnable);
VZNLAPI VzBool VzNL_IsEnableLeftEyeOrigin(VZNLHANDLE hDevice, int* pnErrorCode);
/**
* @brief
* @param hDevice
* @param [in] dMatrix 3*3 + 5*1
* @return 0
*/
VZNLAPI int VzNL_QueryLeftEyeCalibData(VZNLHANDLE hDevice, double dMatrix[14]);
/**
* @brief 3D点云的转换矩阵
* @param hDevice
* @param [in] dMatrix 3D的转换矩阵 4*4
* @return 0
*/
VZNLAPI int VzNL_QueryLeftEye2StereoMatrix(VZNLHANDLE hDevice, double dMatrix[16]);
/**
* @brief 3D点云到左目的转换矩阵
* @param hDevice
* @param [in] dMatrix 3D到左目的转换矩阵 4*4
* @return 0
*/
VZNLAPI int VzNL_QueryStereo2LeftEyeMatrix(VZNLHANDLE hDevice, double dMatrix[16]);
/**
* @brief
* @param hDevice
* @param eEnvType
* @param nLevel
* @return 0
*/
VZNLAPI int VzNL_ConfigDetectEnvLevel(VZNLHANDLE hDevice, EVzEnvType eEnvType,unsigned int nLevel);
VZNLAPI SVzEnvLevel VzNL_GetConfigDetectEnvLevel(VZNLHANDLE hDevice, int* pnErrorCode);
/**
* @brief
* @param hDevice
* @param eEnvType
* @param [out] pnErrorCode pnErrorCode不为nullptr时,
* @return
*/
VZNLAPI SVzNLRange VzNL_GetDetectEnvLevelRange(VZNLHANDLE hDevice, EVzEnvType eEnvType, int* pnErrorCode);
/*
* @brief
* @param hDevice [in]
* @param eChipInfo [in]
* @param pfMin [out]
* @param pfMax [out]
* @param pfCur [out]
* @return 0
*/
VZNLAPI int VzNL_QueryChipInfo(VZNLHANDLE hDevice, EVzDevChipInfo eChipInfo, float* pfMin, float* pfMax, float* pfCur);
/**
* @brief
* @param hDevice
* @param [in] bEnable
* @return 0
*/
VZNLAPI int VzNL_EnableFreeFrameRate(VZNLHANDLE hDevice, VzBool bEnable);
/**
* @brief
* @param hDevice
* @param [in] bEnable
* @return 0
*/
VZNLAPI int VzNL_EnableTransPicMode(VZNLHANDLE hDevice, VzBool bEnable);
/**
* @brief ROI图像
* @param [in] bOutputROI ROI图像
*/
VZNLAPI void VzNL_SetOutputROIImage(VzBool bOutputROI);
/**
* @brief 使/RGB Map本地缓存/
* @param hDevice
* @param [in] bEnable
* @return 0
*/
VZNLAPI int VzNL_EnableLocalMapDataLoad(VZNLHANDLE hDevice, VzBool bEnable);
VZNLAPI VzBool VzNL_IsEnableLocalMapDataLoad(VZNLHANDLE hDevice, int* pnErrorCode);
/**
* @brief
* @param hDevice
* @param eCaptureType
* @return 0
*/
VZNLAPI int VzNL_SetCaptureMode(VZNLHANDLE hDevice, EVzCaptureMode eCaptureMode);
VZNLAPI EVzCaptureMode VzNL_GetCaptureMode(VZNLHANDLE hDevice, int* pnErrorCode);
/**
* @brief
* @param hDevice
* @param [out] pnErrorCode pnErrorCode不为nullptr时,
* @return VzTrue,,VzFalse表示不支持
*/
VZNLAPI VzBool VzNL_IsSupportCaptureMode(VZNLHANDLE hDevice, int* pnErrorCode);
/**
*
* 1VzNL_SetTrackingScanPara(hDevice, nullptr):
* 2VzNL_GetTrackingScanPara(hdevice, pPara) (+)
* 3VzNL_SetToTrackingScanMode(hDevice, pPara)pPara
* 4VzNL_SetToTrackingScanMode() 使pPara
*/
/**
* @brief
* @param [in] hDevice
* @param [in] pPara (pPara== nullptr)
* @param [in] nOutputFrameRate (pPara== nullptr)使(pPara !=nullptr)使pPara
* @description: 1000ROI尺寸固定为64*256
* @return 0
*/
VZNLAPI int VzNL_SetTrackingScanPara(VZNLHANDLE hDevice, SVzTrackingScanPara* pPara, unsigned int nOutputFrameRate);
/**
* @brief
* @param [in] hDevice
* @param [out] pPara
* @return 0
*/
VZNLAPI int VzNL_GetTrackingScanPara(VZNLHANDLE hDevice, SVzTrackingScanPara* pPara);
/**
* @brief + ()
* @detail SDK内存储的配置参数使
* @param [in] hDevice
* @param [out] pPara (pPara!= nullptr)(pPara== nullptr)
* @return 0
*/
VZNLAPI int VzNL_SetToTrackingScanMode(VZNLHANDLE hDevice, SVzTrackingScanPara* pPara);
/**
* @brief
* @detail SDK内存储的备份参数使
* @param [in] hDevice
* @param [out] pPara (pPara!= nullptr)(pPara== nullptr)
* @return 0
*/
VZNLAPI int VzNL_RestoreToNonTrackingScanMode(VZNLHANDLE hDevice, SVzTrackingScanPara* pPara);
/**
* @brief ( )
* @param [in] hDevice
* @param [out] pnErrorCode pnErrorCode不为nullptr时,
* @return
*/
VZNLAPI unsigned long long VzNL_GetTimeStamp(VZNLHANDLE hDevice, int* pnErrorCode);
/**
* @brief SDK生命周期
*/
VZNLAPI void VzNL_Destroy();
#endif //__VIZUM_COMMON_HEADER__