#ifndef _NETDEV_H_
#define _NETDEV_H_

#ifdef  __cplusplus
extern "C"{
#endif

#ifndef STATIC
    #define STATIC                  static NETDEV_ACCESS_PROTOCOL_E
#endif

#ifndef CONST
    #define CONST                   const
#endif

#ifndef EXTERN
    #define EXTERN                  extern
#endif

#ifndef INLINE
    #define INLINE                  __inline
#endif

#ifndef UNION
    #define UNION                   union
#endif

#ifndef IN
    #define IN
#endif

#ifndef OUT
    #define OUT
#endif

#ifndef INOUT
    #define INOUT
#endif

#ifndef NEWINTERFACE
    #define NEWINTERFACE
#endif

#if defined(WIN32)  /* windows */
#define NETDEV_API
#else
#define NETDEV_API
#endif

/* 函数标准调用约定 Standard function calling convention */
#ifdef i386
    #ifdef LINUX
        #ifndef STDCALL
        #define STDCALL                 __attribute__((stdcall))__attribute__((visibility ("default")))
        #endif
    #else
        #ifndef STDCALL
        #define STDCALL                 __attribute__((stdcall))
        #endif
    #endif
#else
    #ifdef WIN32
        #ifndef STDCALL
        #define STDCALL                 __stdcall
        #endif
    #else
        #ifdef LINUX
            #ifndef STDCALL
            #define STDCALL                 __attribute__((stdcall))__attribute__((visibility ("default")))
            #endif
        #else
            #ifndef STDCALL
            #define STDCALL
            #endif
        #endif
    #endif
#endif


#ifndef UCHAR_DEF
#define UCHAR_DEF
    typedef unsigned char           UCHAR;
#endif

#ifndef CHAR_DEF
#define CHAR_DEF
    typedef char                    CHAR;
#endif

#ifndef BYTE_DEF
#define BYTE_DEF
    typedef unsigned char           BYTE;
#endif

#ifndef UINT16_DEF
#define UINT16_DEF
    typedef unsigned short          UINT16;
#endif

#ifndef UINT_DEF
#define UINT_DEF
    typedef unsigned int            UINT32;
#endif

#ifndef INT16_DEF
#define INT16_DEF
    typedef  short                  INT16;
#endif

#ifndef INT32_DEF
#define INT32_DEF
    typedef  int                    INT32;
#endif

#ifndef LPVOID_DEF
#define LPVOID_DEF
    typedef void*                   LPVOID;
#endif

#ifndef VOID
#ifndef VOID_DEF
#define VOID_DEF
    typedef void                    VOID;
#endif
#endif

#ifndef INT64_DEF
#define INT64_DEF
    typedef long long               INT64;
#endif

#ifndef BOOL_DEF
#define BOOL_DEF
    #ifndef __OBJC__
        typedef int                 BOOL;
    #else
        #import<objc/objc.h>
    #endif
#endif

#ifndef FLOAT
#ifndef VOID_FLOAT
#define VOID_FLOAT
    typedef float                   FLOAT;
#endif
#endif

#ifndef DOUBLE
#ifndef DOUBLE_DEF
#define DOUBLE_DEF
    typedef double                   DOUBLE;
#endif
#endif

#ifndef FALSE
    #define FALSE                   0
#endif

#ifndef TRUE
    #define TRUE                    1
#endif

#ifndef WIN32
    typedef LPVOID                 HWND;
#endif


/************************************************************************/
/*                     模块宏定义                                 */
/************************************************************************/
#ifndef NETDEV_SDK_NO_MEDIA
#define NETDEV_WITH_MEDIA           1           /* 包含媒体模块 */
#endif

#define NETDEV_WITH_CLOUD           1           /* 包含云服务模块 */
#define NETDEV_WITH_XW              1           /* 包含电视墙、拼接模块 */
#define NETDEV_WITH_VMS             1           /* 包含VMS模块 */
#define NETDEV_WITH_PTZ             1           /* 包含云台模块 */
#define NETDEV_WITH_SMART           1           /* 包含智能业务模块 */
#define NETDEV_WITH_CONFIG          1           /* 包含配置业务模块 */
#define NETDEV_WITH_BASIC           1           /* 包含基础管理业务模块 */
#define NETDEV_ALARM_RECOVER_BASE   1           /* 告警恢复基数 Alarm recover base */
#define NETDEV_WITH_TRANS_CHANEL    1           /* 包含透明通道模块 */

/********************************** 常用数值宏  Commonly used numerical macros *************** */
#define NETDEV_STREAM_ID_LEN                    32          /* 流ID标识长度  Length of stream ID*/
#define NETDEV_FILE_NAME_LEN                    (256u)      /* 文件名长度  Length of filename */
#define NETDEV_USERNAME_LEN                         (128 + 4)   /* Maximum length of username */
#define NETDEV_PASSWORD_LEN                         128         /* Maximum length of password */
#define NETDEV_DESCRIBE_MAX_LEN                     (512 + 4)   /* 描述最大长度 ：128 * 4，任意字符达到长度128 */
#define NETDEV_DOMAIN_LEN                       64          /* 域名最大长度  Maximum length of domain name */
#define NETDEV_PATH_LEN                         128         /* 路径最大长度:包括文件名称  Maximum length of path, including filename */
#define NETDEV_MAX_URL_LEN                      512         /* URL 的最大长度  Maximum length of URL */

/* 通用长度  Common length */
#define NETDEV_LEN_2                            2
#define NETDEV_LEN_4                            4
#define NETDEV_LEN_6                            6
#define NETDEV_LEN_8                            8
#define NETDEV_LEN_16                           16
#define NETDEV_LEN_32                           32
#define NETDEV_LEN_40                           40
#define NETDEV_LEN_64                           64
#define NETDEV_LEN_128                          128
#define NETDEV_LEN_132                          132
#define NETDEV_LEN_256                          256
#define NETDEV_LEN_260                          260
#define NETDEV_LEN_480                          480
#define NETDEV_LEN_512                          512
#define NETDEV_LEN_1024                         1024
#define NETDEV_LEN_2000                         2000
#define NETDEV_LEN_4096                         4096
#define NETDEV_LEN_8192                         8192

#define NETDEV_IPADDR_STR_MAX_LEN              (64u)        /* IP 地址信息字符串长度  Length of IP address string */
#define NETDEV_IPV4_LEN_MAX                     16          /* IPV4地址字符串长度 Length of IPV4 address string */
#define NETDEV_IPV6_LEN_MAX                     128         /* IPV6地址字符串长度 Length of IPV6 address string */
#define NETDEV_NAME_MAX_LEN                    (256u)       /* 通用名称字符串长度  Length of common name string */

#define NETDEV_CODE_STR_MAX_LEN                (256u)       /* 通用CODE 长度  Length of common code */
#define NETDEV_MAX_DATE_STRING_LEN             (64u)        /* 最大日期字符长度 Maximum length of date string "2008-10-02 09:25:33.001 GMT" */
#define NETDEV_MAX_ALARM_IN_NUM                 64          /* 告警输入最大数量  Maximum number of alarm inputs */
#define NETDEV_MAX_ALARM_OUT_NUM                64          /* 告警输出最大数量  Maximum number of alarm outputs */
#define NETDEV_PLAN_SECTION_NUM                 8           /* 一天中的计划时间段  Number of scheduled time sections in a day */
#define NETDEV_PLAN_NUM_AWEEK                   8           /* 一周总共可配置的计划个数,包括周一至周日和假日  Total number of plans allowed in a week, including Monday to Sunday, and holidays */

#define NETDEV_MAX_PRESET_NUM                   256         /* 预置位最大数  Maximum number of presets */
#define NETDEV_MAX_CRUISEPOINT_NUM              32          /* 巡航路径中预置位点最大个数  Maximum number of presets for preset patrol */
#define NETDEV_MAX_CRUISEROUTE_NUM              16          /* 预置位巡航路径最大条数  Maximum number of routes for preset patrol */
#define NETDEV_MIN_PTZ_SPEED_LEVEL              1           /* 云台移动最小速度  Maximum PTZ rotating speed */
#define NETDEV_MAX_PTZ_SPEED_LEVEL              9           /* 云台移动最大速度  MinimumPTZ rotating speed */
#define NETDEV_MAX_VIDEO_EFFECT_VALUE           255         /* 图像参数（亮度 对比度 色度 饱和度）最大值  Maximum values for image parameters (brightness, contrast, hue, saturation) */
#define NETDEV_MIN_VIDEO_EFFECT_VALUE           0           /* 图像参数（亮度 对比度 色度 饱和度）最小值  Minimum values for image parameters (brightness, contrast, hue, saturation) */
#define NETDEV_MAX_VIDEO_EFFECT_GAMMA_VALUE     10          /* 图像参数（伽马值）最大值 Minimum values for image parameters (Gama) */

#define NETDEV_MAX_PRIVACY_MASK_AREA_NUM        8           /* 最大可配置遮盖区域个数  Maximum number of privacy mask areas allowed */
#define NETDEV_OSD_TEXTOVERLAY_NUM              6           /* 通道 OSD 字符叠加数量  Number of OSD text overlays */
#define NETDEV_OSD_TEXT_MAX_LEN                 (64 + 4)    /* 通道 OSD 字符长度  Length of OSD texts */
#define NETDEV_OSD_TYPE_MAX_NUM                 26          /* 通道 OSD 最大类型个数  Maximum number of OSD type */
#define NETDEV_OSD_FONT_SIZE_TYPE_MAX_NUM       4           /* 通道 OSD 字体最大类型个数  Maximum number of OSD font size type */
#define NETDEV_OSD_FONT_STYLE_TYPE_MAX_NUM      4           /* 通道 OSD 样式最大类型个数  Maximum number of OSD font style type */
#define NETDEV_OSD_TIME_FORMAT_MAX_NUM          7           /* 通道 OSD 最大时间格式个数  Maximum number of OSD time format type */
#define NETDEV_OSD_DATE_FORMAT_MAX_NUM          15          /* 通道 OSD 最大日期格式个数  Maximum number of OSD date format type */
#define NETDEV_PULL_ALARM_MAX_NUM               8           /* 拉告警最大告警个数  Maximum number of alarms a user can get */
#define NETDEV_TRACK_CRUISE_MAXNUM              1           /* 支持的轨迹巡航的最大条数  Maximum number of patrol routes allowed  */
#define NETDEV_AUDIO_SOUND_MIN_VALUE            0           /* 音量调节最小值  Minimum volume */
#define NETDEV_AUDIO_SOUND_MAX_VALUE            255         /* 音量调节最大值  Maximum volume */
#define NETDEV_MIC_SOUND_MIN_VALUE              0           /* 麦克风音量调节最小值  Minimum volume */
#define NETDEV_MIC_SOUND_MAX_VALUE              255         /* 麦克风音量调节最大值  Maximum volume */
#define NETDEV_SCREEN_INFO_ROW                  18          /* 屏幕信息行数  Screen Info Row */
#define NETDEV_SCREEN_INFO_COLUMN               22          /* 屏幕信息列数  Screen Info Column */
#define NETDEV_CHANNEL_MAX                      512         /* 最大通道数 Maximum number of channel */
#define NETDEV_RESOLUTION_NUM_MAX               32          /* 分辨率总个数 Maximum number of resolution */
#define NETDEV_MONTH_DAY_MAX                    31          /* 每月天数最大值 Maximum number of days in a month */
#define NETDEV_VIDEO_ENCODE_TYPE_MAX            16          /* 编码格式类型总个数 Maximum number of encode type */
#define NETDEV_PEOPLE_CNT_MAX_NUM               60          /* 客流量统计数组最大值（分报表） Maximum number of people count */
#define NETDEV_WIFISNIFFER_MAC_MAX_NUM          64          /* wifi sniffer MAC地址最大长度  Length of wifi sniffer MAC */
#define NETDEV_WIFISNIFFER_MAC_ARRY_MAX_NUM     128         /* wifi sniffer MAC地址数组最大值 Maximum number of wifi sniffer MAC array */
#define NETDEV_DISK_MAX_NUM                     256         /* 磁盘最大数量 Maximum number of Disk */
#define NETDEV_LOCAL_DISK_MAX_NUM               32          /* 本地磁盘最大数量 local Maximum number of Disk */
#define NETDEV_SD_CARD_DISK_MAX_NUM             16          /* SD卡最大数量 SD Maximum number of Disk */
#define NETDEV_ARRAY_MAX_NUM                    16          /* 阵列最大数量 array Maximum number of Disk */
#define NETDEV_EXTEND_CABINET_DISK_MAX_NUM      32          /* 扩展柜硬盘最大数量 extend cabinet Maximum number of Disk */
#define NETDEV_NAS_MAX_NUM                      16          /* NAS最大数量 NAS Maximum number of Disk */
#define NETDEV_ESATA_MAX_NUM                    4           /* ESATA最大数量 eSATA Maximum number of Disk */
#define NETDEV_DISK_SMART_MAX_NUM               128         /* 硬盘SMART信息最大数量 Maximum number of Disk Smart Info */
#define NETDEV_ENCODE_FORMAT_MAX_NUM            3           /* 最大视频编码格式数 Maximum number of video compression */
#define NETDEV_SMART_ENCODE_MODEL_MAX_NUM       3           /* 最大智能图像扩展编码模式数 Maximum number of smart image encoding mode */
#define NETDEV_GOP_TYPE_MAX_NUM                 4           /* 最大GOP类型数量 Maximum number of GOP type */
#define NETDEV_IPSAN_MAX_NUM                    4           /* IPSAN最大数量 IPSAN Maximum number of Disk */

#define NETDEV_PHOTO_SERVER_MAX_NUM             4           /* 照片服务器数量上限 Maximum number of Photo Server */

#define NETDEV_INTELLIGENT_SERVER_MAX_NUM       4           /* 智能服务器数量上限 Maximum number of Intelligent Server */

#define NETDEV_MANAGER_SERVER_MAX_NUM           4           /* 管理服务器数量上限 Maximum number of Manager Server */

#define NETDEV_DEV_OTHER_LEN_MAX                32          /* 其他字段 */
#define NETDEV_DEV_NAME_LEN_MAX                 64          /* 设备名称长度 */

#define NETDEV_DEV_PASSWORD_LEN_MAX             64          /* 设备密码长度 */
#define NETDEV_CLOUD_DEV_USER_NAME_LEN          260         /* 云端设备ID长度 */
#define NETDEV_CLOUD_USER_NAME_LEN              260         /* 云端用户名长度 */
#define NETDEV_CLOUD_DEV_USER_AUTH_LEN          260         /* 云端设备用户权限名称长度 */
#define NETDEV_CLOUD_SHARE_TARGET_NAME_LEN      64          /* 云端设备共享对象名称长度 */
#define NETDEV_CLOUD_SHARE_DESCRIBE_LEN         260         /* 云端设备共享描述长度 */
#define NETDEV_CLOUD_DEV_NAME_LEN               260         /* 云端设备名称长度 */
#define NETDEV_XW_MAX_PANE_NUM                  64          /* 窗口最大分屏数量 */
#define NETDEV_NTP_SERVER_LIST_NUM              5           /* NTP服务列表数量 */

#define NETDEV_TMS_FACE_RECORD_ID_LEN           32          /* 记录ID缓存长度 */
#define NETDEV_TMS_CAMER_ID_LEN                 32          /* 相机ID缓存长度 */
#define NETDEV_TMS_PASSTIME_LEN                 32          /* 通过时间字符串缓存长度 */
#define NETDEV_TMS_FACE_TOLLGATE_ID_LEN         32          /* 卡口编号缓存长度 */
#define NETDEV_TMS_HEAT_MAP_DEVID_LEN           32          /*热度图DevID字段长度*/
#define NETDEV_TMS_HEAT_MAP_RECORD_ID_LEN       16          /*热度图RecordID字段长度*/
#define NETDEV_TMS_HEAT_MAP_COllECT_TIME_LEN    18          /*热度图CollectTime 字段长度*/
#define NETDEV_TMS_PIC_COMMON_NUM               10          /*图片或区域上限个数*/
#define NETDEV_TMS_CAR_PLATE_CAMID_LEN          32          /*车牌识别CamID字段长度*/
#define NETDEV_TMS_CAR_PLATE_RECORDID_LEN       32          /*车牌识别RecordID字段长度*/
#define NETDEV_TMS_CAR_PLATE_TOLLGATE_LEN       32          /*车牌识别TollgateID字段长度*/
#define NETDEV_TMS_CAR_PLATE_PASSTIME_LEN       18          /*车牌识别PassTime字段长度*/
#define NETDEV_TMS_CAR_PLATE_LANEID_LEN         18           /*车牌识别LaneID字段长度*/
#define NETDEV_TMS_CAR_PLATE_CARPLATE_LEN       32          /*车牌识别CarPlate字段长度*/
#define NETDEV_USER_NAME_ENCRYPT_LEN            256         /* 加密后的用户名长度 */
#define NETDEV_PASSWORD_ENCRYPT_LEN             256         /* 加密后的密码长度 */
#define NETDEV_VIDEO_FORMAT_MAX                 32          /* 支持的视频输出制式最大数量 */
#define NETDEV_VIDEO_FORMAT_NAME_LEN            32          /* 支持的视频输出制式名称长度 */
#define NETDEV_TVWALL_NAME_LEN                  260         /* 电视墙名称长度 */
#define NETDEV_FORMAT_SPEC_MAX                  256         /* 特殊输出制式的最大个数量 */
#define NETDEV_LED_SPEC_MAX                     256         /* 特殊模组框的最大个数量 */
#define NETDEV_FORMAT_NAME_LEN                  32          /* 输出制式名称长度 */
#define NETDEV_VIDEO_OUT_MAX                    64          /* 物理输出端口的最大个数量 */
#define NETDEV_SCENE_NAME_LEN                   260         /* 场景名称长度 */
#define NETDEV_TIME_LEN                         16          /* 时间字符串长度 */
#define NETDEV_WND_NAME_LEN                     260         /* 窗口名称长度 */
#define NETDEV_SEQUENCE_SRC_MAX                 128         /* 轮巡时视频源最大个数 */
#define NETDEV_TEXT_LEN                         1024        /* 虚拟LED文字内容长度 */
#define NETDEV_BMAP_NAME_LEN                    256         /* 底图名称长度 */
#define NETDEV_SEQ_RES_WIN_MAX                  288         /* 轮巡资源中窗口的最大个数 */
#define NETDEV_MAX_DAY_NUM                      8           /* 最大天数 */
#define NETDEV_MAX_TIME_SECTION_NUM             8           /* 时间段数量 */

#define NETDEV_ALARM_SOURCE_MAX_LEN                 (64 + 4)    /* 告警资源字符描述长度 */
#define NETDEV_MAX_EVENT_RES_SIZE                   1024        /* 事件上报最大资源数 */

#define NETDEV_VIID_CODE_LEN                        48          /* 视图编码长度 */
#define NETDEV_VIDEO_FORMAT_CAP_NUM                 64          /* 编码制式能力集 */
#define NETDEV_LAYOUT_CAP_NUM                       64          /* 分屏能力集 */

#define NETDEV_DA_POINT_CODE_LEN                    48          /* 代理设备 点位 编码长度 */
#define NETDEV_DA_AREA_CODE_LEN                     48          /* 代理设备 区域 编码长度 */
#define NETDEV_VIRTUAL_MEM_TABLE_MAX                32          /* 虚拟内存表元素最大数量 */
#define NETDEV_EVENT_STORE_TYPE_NUM                 128         /* 时间存储类型数量 */
#define NETDEV_MAX_PANE_NUM                         36          /* DC业务分屏数量最大为36分屏 */
#define NETDEV_OSD_MAX_NUM_EX                       8           /* 通道 OSD 最大数量  Maximum Number of OSD */
#define NETDEV_RSA_MAX_VALUE                        3           /* 表示最多尝试密钥生成次数 */

#define NETDEV_MAX_VIDEO_BRIGHT_EFFECT_VALUE        199             /* 图像参数（亮度）最大值 */
#define NETDEV_MAX_VIDEO_CONTRAST_EFFECT_VALUE      199             /* 图像参数（对比度）最大值 */
#define NETDEV_MAX_VIDEO_SATURATION_EFFECT_VALUE    359             /* 图像参数（饱和度）最大值 */
#define NETDEV_MAX_VIDEO_HUE_EFFECT_VALUE           359             /* 图像参数（色度）最大值 */
#define NETDEV_MAX_VIDEO_GAMMA_EFFECT_VALUE         99              /* 图像参数（伽玛）最大值 */
#define NETDEV_PIXEL_CONVERT_RATIO                  5000            /* 像素转换比例 用于区域设置,如拉框放大区域 */
#define NETDEV_PANES_NUM                            16              /* 单通道最大分屏数 */

#define NETDEV_XW_AUDIO_NUM                         16              /* 音频输出通道最大个数 */
#define NETDEV_IP_ADDRESS_LEN                       64              /* IP地址长度 */

#define NETDEV_TVWALLPLAN_NUM                       4               /* 电视墙预案个数 */
#define NETDEV_PLAN_MAX_TVWALL_NUM                  4               /* 预案下电视墙最大数量 */
#define NETDEV_TVWALL_MAX_WIN_NUM                   81              /* 电视墙最大的窗口数量 */
#define NETDEV_TVWALL_MAX_LAYOUT_NUM                64              /* 电视墙最大的分屏数量,即为子窗口数量 */
#define NETDEV_ALARM_LINK_PRESET_NUM                16              /* 告警预案联动预置位数量  */
#define NETDEV_ALARM_LINK_SWITCHOUT_NUM             16              /* 告警预案联动告警输出通道数量 */
#define NETDEV_ALARM_LINK_MONITOR_NUM               16              /* 告警预案联动实况数量 */
#define NETDEV_ALARM_LINK_TVWALL_NUM                32              /* 告警预案联动电视墙最大数量*/
#define NETDEV_ALARM_LINK_SOUND_LEN                 512             /* 告警预案联动声音信息最大长度 */
#define NETDEV_ALARM_SOURCE_NUM                     1               /* 告警源数量 */
#define NETDEV_ALARM_LINK_NUM                       128             /* 告警预案数量 */

#define NETDEV_TIME_TEMPLATE_NUM                    32              /* 时间模板数量 */
#define NETDEV_DC_SCHEME_RES_CHN_MAX_NUM            256             /* DC轮巡最大资源数 */
#define NETDEV_VIEW_MAX_WIN_NUM                     100             /* 视图最大的窗口数量 */
#define NETDEV_MAX_ROLE_RIGHT_SIZE                  256             /* 用户权限菜单项数量 */
#define NETDEV_MAX_ALARM_TASK_SIZE                  128             /* 告警任务数量 */
#define NETDEV_MAX_QUERY_CHANNEL_NUM                500             /* 单次查询最大通道个数 */
#define NETDEV_MAX_QUERY_DEV_NUM                    500             /* 单次查询最大设备个数 */
#define NETDEV_GRID_AREAS_LEN                       256             /* 宏块值数组长度 */
#define NETDEV_MAX_ORG_ROOT_ID_NUM                  32              /* 组织树根节点最大个数 */
#define NETDEV_VOICE_BROADCAST_CHANNEL_NUM_MAX      128             /* 一个语音广播组支持最大通道个数 */
#define NETDEV_RECORD_LOCK_ID_LEN                   64              /* 录像锁定ID最大长度 */
#define NETDEV_RECORD_LOCK_DESC_LEN                 64              /* 锁定录像段的描述最大长度 */
#define NETDEV_NOTIME                               0               /* 时间无值 */
#define NETDEV_WHITE_BALANCE_MODE_MAX_NUM           16              /* 最多支持的白平衡模式个数 Maximum number of Image white balance mode count */
#define NETDEV_FOCUS_MODE_MAX_NUM                   16              /* 最多支持的对焦模式个数 Maximum number of Image focus mode count */
#define NETDEV_FOCUS_SCENE_MAX_NUM                  16              /* 最多支持的对焦场景个数 Maximum number of Image focus scene count */
#define NETDEV_IMAGE_ROTATION_MODE_MAX_NUM          16              /* 最多支持的图像镜像模式个数 Maximum number of Image rotation mode count */
#define NETDEV_LAMP_CTRL_TYPE_MAX_NUM               16              /* 最多支持的支持的补光灯类型个数 Maximum number of lamp ctrl type count */
#define NETDEV_LAMP_CTRL_MODE_MAX_NUM               16              /* 最多支持的补光灯空控制模式个数 Maximum number of lamp ctrl mode count */
#define NETDEV_EXPOSURE_MODE_MAX_NUM                16              /* 最多支持的曝光模式个数 Maximum number of exposure mode count */
#define NETDEV_IRIS_RANGE_MAX_NUM                   16              /* 最多支持的光圈取值个数  Maximum number of Iris Range count */
#define NETDEV_METERING_MODE_MAX_NUM                16              /* 最多支持的测光控制模式个数  Maximum number of Metering mode count */
#define NETDEV_SHUTTER_TIME_RANGE_MAX_NUM           28              /* 最多支持的快门时间的取值的个数  Maximum number of shutter Time Range count */
#define NETDEV_SLOW_SHUTTER_TIME_RANGE_MAX_NUM      16              /* 最多支持的慢快门时间的取值的个数 Maximum number of slow shutter Time Range count */
#define NETDEV_WIDE_DYNAMIC_MODE_MAX_NUM            16              /* 最多支持的宽动态模式个数 Maximum number of wide dynamic mode count */
#define NETDEV_DAY_NIGHT_MODE_MAX_NUM               16              /* 最多支持的昼夜模式类型个数 Maximum number of slow Day Night Mode count */
#define NETDEV_AUDIO_IN_MAX_NUM                     16              /* 最多支持的音频口输入个数 Maximum number of Audio input count */
#define NETDEV_AUDIO_IN_CHL_MODE_MAX_NUM            8               /* 最多支持的音频输入通道模式个数 Maximum number of Audio input mode count */
#define NETDEV_AUDIO_IN_ENCODE_FORMAT_MAX_NUM       16              /* 最多支持的音频输入编码格式个数 Maximum number of Audio input encode format count */
#define NETDEV_AUDIO_SAMPLING_RATE_MAX_NUM          8               /* 最多支持的音频采样率个数 Maximum number of Audio sampling rate count */
#define NETDEV_SERIAL_IN_MAX_NUM                    16              /* 最多支持的串口输入个数 Maximum number of serial input count */
#define NETDEV_SERIAL_IN_ENCODE_FORMAT_MAX_NUM      16              /* 最多支持的串口输入编码格式个数 Maximum number of serial input encode format count */
#define NETDEV_FACE_FEATURE_SIZE                    512             /* 人脸特征信息 512B */
#define NETDEV_FACE_FEATURE_VERSION_LEN             40              /* 人脸特征模型版本号最大长度 */
#define NETDEV_FACE_FEATURE_LIST_FILE_LEN           256             /* 人脸特征库文件名最大长度 */
#define NETDEV_FACE_FEATURE_FILE_MD5_LEN            16              /* 人脸特征库文件的MD5值长度 */
#define NETDEV_FACE_FEATURE_GALLEY_ID_LEN           20              /* 人脸半结构化特征名单库ID长度 */
#define NETDEV_FACE_FEATURE_MAX_NUM                 3               /* 人脸半结构化特征最大数目 */
#define NETDEV_OBJ_TRACK_MODE_NUM                   8               /* 设备支持的智能跟踪模式数量 */
#define NETDEV_STREAM_MAX_NUM                       3               /* 最大支持的码流数量 */
#define NETDEV_PLAN_DAY_NUM_AWEEK                   7               /* 一周总共可配置的计划天数，包含周一到周日 */
#define NETDEV_PLAN_TIME_SECTION_NUM_ADAY           4               /* 一天可配置的时间段数 Total number of plans allowed in a day*/
#define NETDEV_XW_SERIAL_NUM                        16               /* 串口数量 */
#define NETDEV_DNS_LIST_NUM                         2               /* DNS列表数量 */
#define NETDEV_NETWORK_MACNAME_LEN                  48              /* MAC地址名称长度 */
#define NETDEV_LOG_QUERY_COND_NUM                   48              /* 日志查询条件数量 */
#define NETDEV_FACE_DB_NAME_LEN                     256             /* 人脸库名称长度最大值 */
#define NETDEV_FACE_MEMBER_NAME_LEN                 256             /* 人脸库成员名称长度最大值 */
#define NETDEV_FACE_MEMBER_REGION_LEN               256             /* 人脸库成员所在地区名称最大值 */
#define NETDEV_FACE_MEMBER_CUSTOM_NUM               5               /* 自定义属性列表个数 */
#define NETDEV_FACE_MEMBER_CUSTOM_LEN               255             /* 自定义属性值长度 */
#define NETDEV_FACE_IMAGE_MAX_LEN                   (2*1024*1024)   /* 人脸图片数据的最大长度，2M   2097152字节*/
#define NETDEV_FACE_DB_TITLE_NAME_LEN               508             /* 人脸库自定义属性名称最大长度 */
#define NETDEV_FACE_MONITOR_RULE_NAME_LEN           508             /*人脸布控任务的布控名称最大值 */
#define NETDEV_FACE_MONITOR_RULE_REASON_LEN         508             /*人脸布控的布控原因最大值 */
#define NETDEV_FACE_ALARM_SRC_LEN                   256             /* 抓拍通道名称长度 */
#define NETDEV_FACE_ANALYSIS_SKILL_NUM              16              /* 设备支持的人脸分析能力数量 */
#define NETDEV_FACE_MEMBER_BIRTHDAY_LEN             31              /* 成员出生日期字符串最大长度 */
#define NETDEV_FACE_IDNUMBER_LEN                    128             /*证件号最大范围*/
#define NETDEV_LABEL_ID_MAX_LEN                     32
#define NETDEV_TIME_RANGE_NUM                       8               /* 时间模板时间范围个数(周一到周日再加假日) */
#define NETDEV_TIME_DURATION_NUM                    8               /* 时间模板中一天最多8个片段 */
#define NETDEV_HOLIDAY_INFO_NUM                     32              /* 假日配置数量 */
#define NETDEV_AUDIO_MAX_NUM                        18              /* 音频输出业务数量 */
#define NETDEV_CREATE_CONNECT_NUMBER                1               /* 创建连接数量 */
#define NETDEV_EMERGENCY_BRLL_NAME_LEN              128             /*紧急铃名称最大长度*/
#define NETDEV_EMERGENCY_BRLL_MAX_NUM               120             /*紧急铃信息最大数量*/
#define NETDEV_VEHICLE_COMP_IMAGE_MAX_LEN           2097152         /* 车辆布控比对图片的最大长度 2M*/
#define NETDEV_VEHICLE_IMAGE_MAX_LEN                4194304         /* 车辆图片数据最大字节数 4M */
#define NETDEV_PIC_DATA_MAX_LEN                     (1024*1024)     /* 图片数据信息加密后最大大小 */

#define NETDEV_RES_CHANGE_INFO_LIST_NUM             64              /* 定义LAPI事件上报信息结构体 */

#define NETDEV_OUTPUT_NI_RECV_CARD_MAX_NUM          64              /* 输出网口下的接收卡最大数量 */
#define NETDEV_IMG_IN_MODE_LIST_MAX_NUM             16              /* 图像输入模式最大数量 */
#define NETDEV_GAMMA_INFO_LIST_MAX_NUM              1024            /* 伽马表最大数量值 */

#define NETDEV_MAX_SERIAL_PROT_NUM                  1               /* 设备当前只有一个485串口 */  
#define NETDEV_MAX_TRANS_CHANEL_NUM                 1               /* 一个485串口目前只支持一个透明通道 */     

#define NETDEV_MAX_NIC_WORK_MODE_NUM                8               /* 最大网卡支持的工作模式数量 */  
#define NETDEV_MAX_PORT_WORK_MODE_NUM               24              /* 最大网口工作模式数量 */    
#define NETDEV_MAX_NET_WORK_CARD_NUM                8               /* 最大网卡数量 */
#define NETDEV_MAX_LINK_ACTION_NUM                  9               /* 最大联动动作数量 */

#define NETDEV_IVA_REPORT_COORD_NUM                 16              /* 一条规则的最大坐标点数 */

/* 停车场车牌、车辆图片大小 单位：字节*/
#define NETDEV_VEH_PLATE_IMAGE_LEN              (1024*1024)

/* 停车场车牌、车辆加密后图片大小 单位：字节*/
#define NETDEV_VEH_PLATE_ENCODE_IMAGE_LEN       1400000

#define HTTP_BUF_SUCCESS  "\
HTTP/1.1 200 OK\r\n\
Content-Length: %d\r\n\
Content-Type: application/json;charset=UTF-8\r\n\
\r\n\
%s\r\n\
\r\n"

#define HTTP_BUF_SUCCESS_LINUX  "\
\n\
HTTP/1.1 200 OK\n\
Content-Length: %d\n\
Content-Type: application/json;charset=UTF-8\n\
\n\
%s\n\
\n"

/* BIT位定义 */
#ifndef BIT0
#define BIT0  (0x1 << 0)
#define BIT1  (0x1 << 1)
#define BIT2  (0x1 << 2)
#define BIT3  (0x1 << 3)
#define BIT4  (0x1 << 4)
#define BIT5  (0x1 << 5)
#define BIT6  (0x1 << 6)
#define BIT7  (0x1 << 7)
#define BIT8  (0x1 << 8)
#define BIT9  (0x1 << 9)
#define BIT10 (0x1 << 10)
#define BIT11 (0x1 << 11)
#define BIT12 (0x1 << 12)
#define BIT13 (0x1 << 13)
#define BIT14 (0x1 << 14)
#define BIT15 (0x1 << 15)
#define BIT16 (0x1 << 16)
#define BIT17 (0x1 << 17)
#define BIT18 (0x1 << 18)
#define BIT19 (0x1 << 19)
#define BIT20 (0x1 << 20)
#define BIT21 (0x1 << 21)
#define BIT22 (0x1 << 22)
#define BIT23 (0x1 << 23)
#define BIT24 (0x1 << 24)
#define BIT25 (0x1 << 25)
#define BIT26 (0x1 << 26)
#define BIT27 (0x1 << 27)
#define BIT28 (0x1 << 28)
#define BIT29 (0x1 << 29)
#define BIT30 (0x1 << 30)
#define BIT31 (0x1 << 31)

#define BIT(nr)     (1UL << (nr))
#endif  /* BIT位定义 */

#ifndef BIT32_MAX
    #define BIT32_MAX ((UINT32)(~0UL))
#endif



/* BEGIN****************************  Enum ************************************************************/
typedef enum tagNETDEVCommonErrCode
{
    NETDEV_E_FAILED                         = -1,           /* 失败  Failed*/
    NETDEV_E_SUCCEED                        = 0,            /* 成功  Succeeded*/
    NETDEV_E_SVC_FAILED                     = 1,            /* 服务器失败错误码  Common Failed*/
    NETDEV_E_NO_USER                        = 5,            /* 用户不存在 User does not exist*/

    NETDEV_E_NO_RESULT                      = 11,           /* 查无结果 No result */
    NETDEV_E_NOENOUGH_BUF                   = 12,           /* 缓冲区太小: 接收设备数据的缓冲区  Buffer is too small for receiving device data */
    NETDEV_E_SDK_SOCKET_LSN_FAIL            = 13,           /* 创建socket listen失败  Failed to create socket listen */
    NETDEV_E_INIT_MUTEX_FAIL                = 14,           /* 初始化锁失败  Failed to initialize lock */
    NETDEV_E_INIT_SEMA_FAIL                 = 15,           /* 初始化信号量失败  Failed to initialize semaphore */
    NETDEV_E_ALLOC_RESOURCE_ERROR           = 16,           /* SDK资源分配错误  Error occurred during SDK resource allocation */
    NETDEV_E_HAVEDATA                       = 17,           /* 还有数据   Data not all sent */
    NETDEV_E_NEEDMOREDATA                   = 18,           /* 需要更多数据  More data required  */
    NETDEV_E_TRANSFILE_FAIL                 = 19,           /* 文件传输失败  File transmission failed */
    NETDEV_E_DEVICE_TYPE_ERR                = 20,           /* 不支持的设备类型 Device type that are not supported */
    NETDEV_E_NONCE_TIMEOUT                  = 21,           /* nonce过期 Nonce expired */
    NETDEV_E_INNER_ERR                      = 22,           /* 系统内部错误 System internal error */
    NETDEV_E_BINDNOTIFY_FAIL                = 24,           /* 绑定告警失败  Failed to bind alarms*/

    NETDEV_E_SYSCALL_FALIED                 = 100,          /* 系统函数调用失败，请查看errno  Failed to call system function. See errno */
    NETDEV_E_NULL_POINT                     = 101,          /* 空指针  Null pointer */
    NETDEV_E_INVALID_PARAM                  = 102,          /* 无效参数  Invalid parameter */
    NETDEV_E_INVALID_MODULEID               = 103,          /* 无效模块ID  Invalid module ID */
    NETDEV_E_INVALID_HANDLE                 = 104,          /* 无效的句柄 Invalid handle */
    NETDEV_E_NO_MEMORY                      = 105,          /* 内存分配失败 Memory allocation failed */
    NETDEV_E_FILE_NO_EXIST                  = 106,          /* 文件等不存在 File does not exist */
    NETDEV_E_NO_DEV                         = 107,          /* 设备不存在 Device does not exist*/
    NETDEV_E_NO_FIT_LOG                     = 108,          /* 符合条件的日志不存在 Qualified logs do not exist*/
    NETDEV_E_BUSY                           = 109,          /* busy状态 busy status */
    NETDEV_E_TIMER_REG_FAILED               = 110,          /* 注册定时器失败 Register timer failed */
    NETDEV_E_COMMON_FAILED                  = 111,          /* 通用错误 General error */
    NETDEV_E_CMD_NOT_SUPPORT                = 112,          /* 命令不支持 Command does not support */
    NETDEV_E_NOT_SUPPORT                    = 113,          /* 设备不支持该功能 The device does not support this function */
    NETDEV_E_TIMEOUT                        = 114,          /* 超时 Overtime */
    NETDEV_E_MSG_ERR                        = 115,          /* 消息不匹配 Message mismatch */
    NETDEV_E_MODULE_INEXIST                 = 116,          /* 模块不存在 Module does not exist */
    NETDEV_E_SOCKET_RECV_ERR                = 117,          /* 消息接收失败 Message acceptance failure */
    NETDEV_E_DECODE_IE_FAILED               = 118,          /* 获取消息IE失败 Failure to get message IE */
    NETDEV_E_ENCODE_IE_FAILED               = 119,          /* 添加消息IE失败 Failed to add message IE */
    NETDEV_E_SDK_NOINTE_ERROR               = 120,          /* SDK未初始化 SDK uninitialized */
    NETDEV_E_ALREDY_INIT_ERROR              = 121,          /* SDK已经初始化 SDK has been initialized */
    NETDEV_E_DEVICE_FACTURER_ERR            = 122,          /* 不支持的设备厂商 Unsupported equipment manufacturer */
    NETDEV_E_NAME_EXIST                     = 123,          /* 名称已存在 Name already exists */
    NETDEV_E_GET_CFG_FAILED                 = 124,          /* 获取配置信息出错 Error acquiring configuration information */
    NETDEV_E_SET_CFG_FAILED                 = 125,          /* 设置配置信息出错 Error setting configuration information */
    NETDEV_E_CHANNEL_OVER_SPEC              = 126,          /* 通道数超规格 Channel number exceeding specification */
    NETDEV_E_CALL_DRV_COMMON                = 127,          /* 调用驱动通用失败 Call driver universal failure */
    NETDEV_E_TOTAL_QUOTA_FULL               = 128,          /* 可分配的配额空间不足 Insufficient allocatable quota space */
    NETDEV_E_CALL_DB_COMMON                 = 129,          /* 调用数据库通用失败 Failure to invoke database universality */
    NETDEV_E_NEED_MORE_MEMORY               = 130,          /* 内存分配不足 Insufficient memory allocation */
    NETDEV_E_T2U_CONNECT_FAILED             = 131,          /* T2U连接失败 Failure of T2U connection */
    NETDEV_E_FUNC_IS_INITIALIZING           = 132,          /* 功能正在初始化中 Functions are being initialized */

    NETDEV_E_CONNECT_ERROR                  = 200,          /* 创建连接失败  Failed to create connection */
    NETDEV_E_SEND_MSG_ERROR                 = 201,          /* 发送消息失败 Failed to send message */
    NETDEV_E_DECODE_RSP_ERROR               = 202,          /* 解析响应消息失败  Failed to decode response message */
    NETDEV_E_NONSUPPORT                     = 203,          /* 该功能函数未实现  Function not supported */
    NETDEV_E_JSON_ERROR                     = 204,          /* Json 通用错误  Json common error */
    NETDEV_E_NORESULT                       = 205,          /* 查询结果为空 The query result is empty */
    NETDEV_E_SOCKET_RECV_ERROR              = 206,          /* Socket接收消息失败  Socket failed to receive message */
    NETDEV_E_CREATE_THREAD_FAIL             = 207,          /* 创建线程失败  Failed to create thread */
    NETDEV_E_RESCODE_NO_EXIST               = 208,          /* 资源编码不存在  Resource code not exist */
    NETDEV_E_MSG_DATA_INVALID               = 209,          /* 消息内容错误  Incorrect message content */
    NETDEV_E_JSON_NO_IMAGE                  = 210,          /* 图片数据为空 Picture data is empty */

    NETDEV_E_PUBLICKEYFAIL                  = 60068        /* 公钥匹配失败 Failed to match publickey*/

}NETDEV_COMMON_ECODE_E;

/* 媒体相关错误码 */
typedef enum tagNETDEVMediaErrCode
{
    NETDEV_E_PLAYER_FAIL                        = 1001,     /* 执行失败 Execution failure */
    NETDEV_E_PLAYER_INVALID_PARAM               = 1002,     /* 输入参数非法 Illegal input parameters */
    NETDEV_E_PLAYER_NO_MEMORY                   = 1003,     /* 系统内存不足 Insufficient system memory */
    NETDEV_E_PLAYER_SOCKET_FAIL                 = 1004,     /* 创建SOCKET失败 Failure to create SOCKET */
    NETDEV_E_PLAYER_RECV_FAIL                   = 1005,     /* 接收失败 Failure to receive */
    NETDEV_E_PLAYER_RECV_ZERO                   = 1006,     /* 接收为零 Receive zero */
    NETDEV_E_PLAYER_NOT_SUPPORT                 = 1007,     /* 功能暂不支持 Function not supported for the time being */
    NETDEV_E_PLAYER_CREATETHREAD_FAILED         = 1008,     /* 创建线程失败 Failed to create thread */
    NETDEV_E_PLAYER_OPENDL_FAILED               = 1009,     /* 加载动态库失败 Failure to load dynamic library */
    NETDEV_E_PLAYER_SYMDL_FAILED                = 1010,     /* 获取动态方法失败 Failure to obtain dynamic methods */
    NETDEV_E_PLAYER_SEND_FAILED                 = 1011,     /* 发送失败 Fail in send */
    NETDEV_E_PLAYER_EACCES                      = 1012,     /* 创建文件权限不足 Insufficient permission to create files */
    NETDEV_E_PLAYER_FILE_NOT_FIND               = 1013,     /* 读文件未找到 Reading file not found */
    NETDEV_E_PLAYER_LOG_CLOSE                   = 1014,     /* 日志关闭 Log closes */
    NETDEV_E_PLAYER_MEDIA_EXCEPTION             = 1017,     /* 内部处理异常 Media exception  */

    /*********************** Player 资源相关********************************/
    NETDEV_E_FAIL_TO_INIT_EZPLAYER              = 1257,     /* 初始化播放器失败 Initialization player failed */
    NETDEV_E_FAIL_TO_ALLOC_PORT_RES             = 1258,     /* 分配播放通道资源失败 Failed to allocate playback channel resources */
    NETDEV_E_FAIL_TO_GET_PORT_RES               = 1259,     /* 获得播放通道资源失败 Failed to obtain playback channel resources*/
    NETDEV_E_BUFFER_QUEUE_FULL                  = 1260,     /* 缓存队列已满 Cache queue full */
    NETDEV_E_BUFFER_QUEUE_EMPTY                 = 1261,     /* 缓存队列空 Cache queue empty */
    NETDEV_E_OPEN_FILE_FAILED                   = 1262,     /* 打开文件失败 Fail to open file */
    NETDEV_E_FILE_READ_END                      = 1263,     /* 文件已经读取完毕 The file has been read out */
    NETDEV_E_FILE_DISKSPACE_FULL                = 1264,     /* 磁盘空间满 Disk space is full */
    NETDEV_E_FILE_READ_FAIL                     = 1265,     /* 读取失败 Read failure */
    NETDEV_E_MCM_MIC_NOT_EXIST                  = 1266,     /* 麦克风不存在 Microphone does not exist */
    NETDEV_E_TS_PACKET_IN_THE_ROUGH             = 1267,     /* TS打包未完成 TS packaging not completed */
    NETDEV_E_FILE_RECORD_FINISH                 = 1268,     /* 录像保存完毕 The video has been saved.*/
    NETDEV_E_VIDEO_RESOLUTION_CHANGE            = 1269,     /* 分辨率发生变化 Resolution changed */

    NETDEV_E_FAIL_TO_OPEN_STREAM                = 1513,     /* 启动媒体流播放失败 Failed to start media stream playback */
    NETDEV_E_FAIL_TO_CLOSE_STREAM               = 1514,     /* 关闭媒体流播放失败 Failed to shut down media stream playback */
    NETDEV_E_FAIL_TO_RECV_DATA                  = 1515,     /* 网络故障导致接收数据失败 Failure of receiving data due to network failure */
    NETDEV_E_FAIL_TO_PROCESS_MEDIA_DATA         = 1516,     /* 媒体数据处理失败 Media data processing failure */
    NETDEV_E_NOT_START_PLAY                     = 1517,     /* 播放通道未开始播放操作 Play channel did not start playback operation */
    NETDEV_E_FAIL_TO_INPUT_DATA                 = 1518,     /* 输入媒体流数据失败 Input media streaming data failed */
    NETDEV_E_INPUTDATA_BUFFER_FULL              = 1519,     /* 输入数据缓存满 Input data cached full */
    NETDEV_E_FAIL_TO_SET_PROCESS_DATA_CB        = 1520,     /* 设置媒体流数据回调函数失败 Failed to set media stream data callback function */
    NETDEV_E_VOICE_RUNNING                      = 1521,     /* 语音业务运行过程中出错 Errors in Voice Service Operation */
    NETDEV_E_FAIL_TO_OPEN_VOICE_SVC             = 1522,     /* 启动语音业务失败 Failure to start voice service */
    NETDEV_E_FAIL_TO_CLOSE_VOICE_SVC            = 1523,     /* 关闭语音业务失败 Failed to shut down voice service */
    NETDEV_E_UNKNOWN_STREAM_TYPE                = 1524,     /* 未知媒体流 Unknown media stream */
    NETDEV_E_PACKET_LOSE                        = 1525,     /* 丢包 Packet loss */
    NETDEV_E_NEED_MORE_PACKET                   = 1526,     /* 拼包未完成，需要更多包 Packing is not completed, more packages are needed */
    NETDEV_E_FAIL_TO_CREATE_DECODE              = 1527,     /* 创建解码器失败 Failed to create decoder */
    NETDEV_E_FAIL_TO_DECODE                     = 1528,     /* 解码失败 Decoding failure */
    NETDEV_E_RECV_DATA_NOTENOUGH                = 1529,     /* 接收数据不足 Insufficient data received */
    NETDEV_E_RENDER_RES_FULL                    = 1530,     /* 显示资源满 Display full resources */
    NETDEV_E_RENDER_RES_NOT_EXIST               = 1531,     /* 显示资源不存在 Show that resources do not exist */
    NETDEV_E_CREATE_DEV_FAILED                  = 1532,     /* 资源创建失败 Resource creation failed */
    NETDEV_E_AUDIO_RES_NOT_EXIST                = 1533,     /* 音频资源不存在 Audio resources do not exist */
    NETDEV_E_IHW265D_NEED_MORE_BITS             = 1534,     /* 解码器需要更多数据 Decoder needs more data */
    NETDEV_E_FAIL_TO_CREATE_ENCODE              = 1535,     /* 创建编码器失败 Failure to create encoder */
    NETDEV_E_CAPTURE_RES_EXIST                  = 1536,     /* 采集资源不存在 Collection resources do not exist */
    NETDEV_E_RECORD_STARTED                     = 1537,     /* 录像已打开 The video has been turned on */
    NETDEV_E_NEED_WAIT_DECODEC                  = 1538,     /* 未解码完成，需要等待 Undecoded, need to wait */
    NETDEV_E_MORE_DATA_NEED_PACKET              = 1539,     /* 数据过多，还需要继续打包 There's too much data to pack. */
    NETDEV_E_AAC_LC_DECODE_FAIL                 = 1540,     /* AAC_LC解码失败 AAC_LC decode failure*/
    NETDEV_E_RENDER_SURFACELOST                 = 1541,     /* 显示表面丢失 */
    NETDEV_E_FILE_ENCRYPED                      = 1543,     /* 文件已加密 */
    NETDEV_E_SCRAMBLING_INFO_FAILED             = 1544,     /* 加扰信息异常 */

    /* 媒体会话业务异常上报错误码 */
    NETDEV_E_LIVE_EXISTED                       = 2000,     /* 实况业务已经建立 Live business has been established */
    NETDEV_E_LIVE_INPUT_NOT_READY               = 2001,     /* 媒体流未准备就绪 Media streaming is not ready */
    NETDEV_E_LIVE_OUTPUT_BUSY                   = 2002,     /* 实况业务显示资源忙 Live business display resources busy */
    NETDEV_E_LIVE_CB_NOTEXIST                   = 2003,     /* 实况控制块不存在 Real-time control block does not exist */
    NETDEV_E_LIVE_STREAM_FULL                   = 2004,     /* 实况流资源已满 Real-time flow resources are full */

    NETDEV_E_AUDIO_EXISTED                      = 2100,     /* 语音对讲已存在 Speech intercom already exists */
    NETDEV_E_AUDIO_NO_EXISTED                   = 2101,     /* 语音业务不存在 Voice service does not exist */
    NETDEV_E_AUDIO_RESCODE_INVALID              = 2102,     /* 语音对讲资源编码无效 Invalid encoding of voice intercom resources */
    NETDEV_E_AUDIO_RES_USED_BY_TALK             = 2103,     /* 语音资源已被对讲使用  Audio resource is being used by two-way audio */
    NETDEV_E_AUDIO_FAILED                       = 2104,     /* 语音对讲失败 Speech intercom failure */
    NETDEV_E_AUDIO_AUDIOBCAST_FULL              = 2205,     /* 语音业务已满  No more audio service allowed */

    NETDEV_E_CAPTURE_NO_SUPPORT_FORMAT          = 2200,     /* 抓拍格式不支持 Snapshot format does not support  */
    NETDEV_E_CAPTURE_NO_ENOUGH_CAPACITY         = 2201,     /* 硬盘空间不足 Insufficient hard disk space */
    NETDEV_E_CAPTURE_NO_DECODED_PICTURE         = 2202,     /* 没有解码过的图片可供抓拍 Undecoded pictures can be captured */
    NETDEV_E_CAPTURE_SINGLE_FAILED              = 2203,     /* 单次抓拍操作失败 Single snap operation failed */

    NETDEV_E_OVER_ABILITY                       = 2301,     /* 码流超出能力集 Bit stream excess capability set */

    /* 云媒体业务异常上报  Cloud media view exception report 2793~2809 */
    NETDEV_E_CLOUD_DOWNLOAD_FINISH              = 2793,     /* 下载完成 */
    NETDEV_E_CLOUD_PARSE_DOMAIN_FAIL            = 2794,     /* 解析域名失败 */
    NETDEV_E_CLOUD_CONNECT_FAIL                 = 2795,     /* 连接失败 */
    NETDEV_E_CLOUD_CONNECT_TIMEOUT              = 2796,     /* 连接超时 */
    NETDEV_E_CLOUD_DOWNLOAD_TIMEOUT             = 2797,     /* 下载超时 */
    NETDEV_E_CLOUD_DOWNLOAD_FAIL                = 2798,     /* 下载失败 */
    NETDEV_E_CLOUD_NETWORK_POOR                 = 2799,     /* 网络较差 */
    NETDEV_E_CLOUD_PLAY_FINISH                  = 2800,     /* 播放完成 */
    NETDEV_E_CLOUD_DISK_FULL                    = 2801,     /* 磁盘空间满 */
    NETDEV_E_CLOUD_AUTH_FAIL                    = 2802,     /* 鉴权失败 */
    NETDEV_E_CLOUD_CURRENT_TIME                 = 2803,     /* 当前播放时间，仅用于上报 */
    NETDEV_E_CLOUD_PRIOR_DISK_FULL              = 2804,     /* 磁盘预值满 */
    NETDEV_E_CLOUD_NODE_NOT_EXIST               = 2805,     /* 时间节点不存在 */
    NETDEV_E_CLOUD_NO_CACHE_PATH                = 2806,     /* 未设置缓存路径 */
    NETDEV_E_CLOUD_MSG_SEND_FAIL                = 2807,     /* 消息发送失败 */
    NETDEV_E_CLOUD_TASK_CANCELLED               = 2808,     /* 任务已取消 */
    NETDEV_E_CLOUD_TASK_STREAM_CONTINUE         = 2809,     /* 流继续播放 */

    NETDEV_E_MEDIA_INPUT_NOT_READY              = 10000,    /* 媒体流未准备就绪 Media streaming is not ready */
    NETDEV_E_CCB_STATR_INVALID                  = 10001,    /* 控制块状态不可用 Control block state unavailable */
    NETDEV_E_MEDIA_OUTPUT_BUSY                  = 10002,    /* 实况业务显示资源繁忙 Live business display resource busy */
    NETDEV_E_MEDIA_START_LOCAL_LIVE_ERR         = 10003,    /* 实况媒体流未准备就绪 Live media streams are not ready */
    NETDEV_E_MEDIA_START_LOCAL_REPLAY_ERR       = 10004,    /* 回放媒体流未准备就绪 Playback media streams are not ready */

    NETDEV_E_MEDIA_BW_RECV_NOT_ENOUGH           = 10007,    /* 网络接收带宽不足 Insufficient network reception bandwidth */
    NETDEV_E_MEDIA_BW_SEND_NOT_ENOUGH           = 10008,    /* 网络发送带宽不足 Insufficient network transmission bandwidth */
    NETDEV_E_MEDIA_AUDIO_BROADCAST_TO_LIMIT     = 10009,    /* 语音广播业务已达上限 Voice broadcasting service has reached the upper limit */
    NETDEV_E_MEDIA_AUDIO_CHL_BING_USED          = 10010,    /* 音频通道已被占用 Audio channel has been occupied */
    
    NETDEV_E_MEDIA_NOT_SUPPORT_ENCODETYPE       = 10012,    /* 码流格式不支持 Encode type Not supported */

    NETDEV_E_MEDIA_MAX                          = 10399     /* 媒体相关错误码最大值 Maximum Media Related Error Code */
}NETDEV_MEDIA_ECODE_E;

/* 云台模块错误码 */
typedef enum tagNETDEVPtzErrCode
{
    NETDEV_E_SET_PRESET_FAILED                  = 10400,    /* 预置位设置失败 Failure of preset setting */
    NETDEV_E_QUERY_PRESET_FAILED                = 10401,    /* 预置位查询失败 Failure of preset query */
    NETDEV_E_QUERY_TRACK_FAILED                 = 10402,    /* 轨迹查询失败 Trajectory Query Failure */
    NETDEV_E_START_RECORD_TRACK_FAILED          = 10403,    /* 开始录制轨迹失败 Failure to start recording trajectory */
    NETDEV_E_STOP_RECORD_TRACK_FAILED           = 10404,    /* 结束录制轨迹失败 Failure to end recording trajectory */
    NETDEV_E_QUERY_CRUISE_FAILED                = 10405,    /* 巡航线路查询失败 Cruise line query failed */
    NETDEV_E_SET_CRUISE_FAILED                  = 10406,    /* 巡航线路设置失败 Failure to set up cruise routes */
    NETDEV_E_PTZ_COMMAND_FAILED                 = 10407,    /* 云台操作失败 PTZ operation failed */
    NETDEV_E_PRESET_IN_CRUISE                   = 10408,    /* 预置位在巡航线路中使用, 无法删除 Pre-positioning is used in cruise routes and cannot be deleted */
    NETDEV_E_CRUISEPOINT_ER                     = 10409,    /* 设置巡航点不连续 Setting Cruise Points Discontinuous */
    NETDEV_E_TRACK_ISUSED                       = 10410,    /* 轨迹已使用，无法删除 Track is in use and cannot be deleted */
    NETDEV_E_SERIALMODE_MISMATCH                = 10411,    /* 串口模式不匹配 Serial port mode mismatch */
    NETDEV_E_TRACK_NOT_EXIST                    = 10412,    /* 轨迹不存在 Trajectory does not exist */
    NETDEV_E_MODE_CRUISE_FULL                   = 10413,    /* 模式路径轨迹点个数已满 Number of path trajectory points of patterns is full*/
    NETDEV_E_PTZ_ISUSED                         = 10414,    /* 云台使用中 PTZ in use */
    NETDEV_E_PRESET_IN_GUARD                    = 10415,    /* 预置位在守望中使用 Prepositioning in Watch */
    NETDEV_E_CRUISE_PATH_IN_GUARD               = 10416,    /* 巡航路径在守望中使用 Cruise Path Used in Watch */

    NETDEV_E_PTZ_MAX                            = 10799     /* 云台模块错误码最大值 Maximum error code of PTZ module */
}NETDEV_PTZ_ECODE_E;


/* 回放模块错误码 */
typedef enum tagNETDEVVodErrCode
{
    NETDEV_E_VOD_ABEND                          = 10800,    /* 回放异常结束 Playback abnormal end */
    NETDEV_E_VOD_END                            = 10801,    /* 回放结束 Playback end */
    NETDEV_E_VOD_CALL_DRV                       = 10802,    /* 调用驱动接口失败 Failed to call driver interface */
    NETDEV_E_VOD_CB_NOT_FIND                    = 10803,    /* 控制块未找到 Control block not found */
    NETDEV_E_VOD_OVER_ABILITY                   = 10804,    /* 超过回放能力 Exceeding playback capability */
    NETDEV_E_VOD_TAG_OVER_LIMIT                 = 10805,    /* 标签数量超过限制 The number of labels exceeds the limit */
    NETDEV_E_VOD_NO_RECORDING                   = 10806,    /* 无录像内容   No recording */
    NETDEV_E_VOD_SMART_NOT_SUPPORT              = 10807,    /* 国标设备不支持智能回放 GB device does not support smart playback*/
    NETDEV_E_VOD_NO_REPLAYURL                   = 10808,    /* 无法获取回放的url   Cannot get the URL for playback*/

    NETDEV_E_VOD_MAX                            = 10999     /* 回放模块错误码最大值 Maximum error code of playback module */
}NETDEV_VOD_ECODE_E;

/* 存储模块错误码 */
typedef enum tagNETDEVStorErrCode
{
    NETDEV_E_STOR_ABEND                         = 101000,   /* 存储异常结束 Storage exception termination */
    NETDEV_E_ARRAY_NAME_EXITS                   = 11001,    /* 阵列已存在 Array already exists */
    NETDEV_E_NOT_RAID_MODE                      = 11002,    /* 非阵列模式 Non-array mode */
    NETDEV_E_NO_STORE_PLAN                      = 11003,    /* 该通道没有配置过录像计划 The channel is not equipped with a video plan. */
    NETDEV_E_DISK_ZERO_OR_ABNORMAL              = 11022,    /* 无硬盘或硬盘异常 No hard disk or hard disk abnormalities */
    NETDEV_E_SLOT_NOT_NORMAL                    = 11023,    /* 槽位1磁盘状态不正常 Slot 1 disk is out of order*/
    NETDEV_E_SLOT_RECONNECT                     = 11024,    /* 开启人脸后槽位1拔掉又插上，需要重启 After opening the face, slot 1 is pulled out and inserted. It needs to be restarted. */
    NETDEV_E_BATTERY_STATUS_FAULT               = 11034,    /* 设备电池状态异常 Abnormal battery status of equipment */
    NETDEV_E_CHL_QUOTA_EXIST                    = 11035,    /* 通道容量配置已存在 */
    NETDEV_E_RAIDLUN_ABNORMAL                   = 11036,    /* vms-ipsan无可用阵列 */
    NETDEV_E_DATABASE_STATUS_ABNORMAL           = 11037,    /* 数据库状态异常 Database status abnormal */

    NETDEV_E_STOR_MAX                           = 11199     /* 存储模块错误码最大值 Maximum error code of storage module */
}NETDEV_STOR_ECODE_E;

/* 用户模块错误码 */
typedef enum tagNETDEVUserErrCode
{
    NETDEV_E_USER_NOT_ONLINE                    = 101200,   /* 用户不在线 Users are not online */
    NETDEV_E_USER_WRONG_PASSWD                  = 11201,    /* 用户密码错误 User password error */
    NETDEV_E_USER_NO_SUCH_USER                  = 11202,    /* 没有该用户 No user */
    NETDEV_E_USER_NO_AUTH                       = 11203,    /* 用户无权限 User has no privilege */
    NETDEV_E_USER_MAX_NUM                       = 11204,    /* 用户上限-不能再被添加 User cap - cannot be added */
    NETDEV_E_USER_EXIST                         = 11205,    /* 用户已存在 User already exists */
    NETDEV_E_USER_LOGIN_MAX_NUM                 = 11206,    /* 用户登录数已达上限 The number of users logged in has reached the upper limit. */
    NETDEV_E_USER_LOCKED                        = 11207,    /* 用户已被锁定 The user has been locked */
    NETDEV_E_USER_IS_ADMIN                      = 11208,    /* 不允许此操作，用户是系统管理员 This operation is not allowed. The user is the system administrator. */
    NETDEV_E_USER_NOT_VALID_PERIOD              = 11209,    /* 不在有效期内 Not within the validity period */
    NETDEV_E_USER_ROLE_BEYOND_RANGE             = 11210,    /* 用户角色个数超过上限 The number of user roles exceeds the upper limit */
    NETDEV_E_USER_SELOG_IP_LOCKED               = 11211,    /* 用户安全登录锁定 User security logon lock*/
    NETDEV_E_ROLE_EXIST                         = 11212,    /* 角色已存在 Roles already exist */
    NETDEV_E_USER_NOT_VALID_TIME                = 11213,    /* 不在有效时段内 Not in the valid period */
    NETDEV_E_USER_WEAK_PASSWD_LOGIN_FAIL        = 11214,    /* 登录失败,请在本地网络修改成强密码后再次尝试远程登录 Logon failed. Please try remote login again after changing the local network to a strong password. */
    NETDEV_E_USER_IS_TEMPPASSWD                 = 11217,    /* 用户使用临时密码登录 Users log in with temporary passwords */
    NETDEV_E_USER_TEMPPASSWD_LOGIN_FAIL         = 11218,    /* 公网临时密码禁止登陆 Temporary password of public network prohibits landing */
    NETDEV_E_USER_WEAK_PASSWD_MODIFY            = 11219,    /* 强制修改密码 Force password modification */
    NETDEV_E_USER_IP_NO_AUTH                    = 11221,    /* 登录IP无权限 Login IP has no permission */

    NETDEV_E_USER_MAX                           = 11599     /* 用户模块错误码最大值 Maximum error code of user module*/
}NETDEV_USER_ECODE_E;


/* 设备管理模块错误码 */
typedef enum tagNETDEVDevErrCode
{
    NETDEV_E_DEV_NOT_ONLINE                     = 11600,    /* 设备不在线 The device is not online */
    NETDEV_E_DEV_WRONG_PASSWD                   = 11601,    /* 设备密码错误 Device password error */
    NETDEV_E_DEV_REPEAT_DEV                     = 11602,    /* 重复设备 Repetitive equipment */
    NETDEV_E_DEV_NO_SUCH_DEV                    = 11603,    /* 没有该设备 No equipment */
    NETDEV_E_DEV_NO_SUCH_CHL                    = 11604,    /* 没有该通道 No channel */
    NETDEV_E_DEV_MAX_NUM                        = 11605,    /* 一体机设备上限-不能再被添加 VMS equipment upper limit - Can't be added anymore*/
    NETDEV_E_DEV_LOGIN_MAX_NUM                  = 11606,    /* 设备登录数上限 Upper limit of device logon number */
    NETDEV_E_DEV_COMMON_FAILED                  = 11607,    /* 由设备返回的通用错误 Common errors returned by devices */
    NETDEV_E_DEV_NO_SUCH_DEV_OID                = 11608,    /* 不存在设备历史ID No device history ID exists */
    NETDEV_E_DEV_DEL_FORBID                     = 11609,    /* 设备不允许删除 Devices are not allowed to be deleted */
    NETDEV_E_CHL_OFFLINE                        = 11610,    /* 通道不在线 Channel not online */
    NETDEV_E_DEV_TYPE_UNMATCHED                 = 11611,    /* 所添加设备类型不匹配 Mismatch of device type added */
    NETDEV_E_DEV_REPEAT_DEV_NAME                = 11612,    /* 设备名称重复 Duplicate device name */
    NETDEV_E_DEV_CFG_FAILED                     = 11613,    /* 设备配置失败 Device configuration failure */
    NETDEV_E_DEV_NO_RESULT                      = 11614,    /* 查询无结果 Inquiries without results */
    NETDEV_E_DEV_DEC_OFFLINE                    = 11617,    /* 解码设备离线  11615、11616错误码一体机内部已使用，所以新增为11617 Decoding equipment offline 11615, 11616 error code integration machine has been used, so the new 11617 */

    NETDEV_E_DEV_VCA_ALARM_NO_PIC               = 11661,    /* 未获取到VCA告警图片 Failed to get VCA alarm picture */

    /* 升级相关错误码 */
    NETDEV_E_COMMON_FAIL_STAT                   = 11801,    /* 读取文件（目录）状态失败 Failed to read file (directory) status */
    NETDEV_E_COMMON_FILE_NONEXIST               = 11802,    /* 文件不存在 File does not exist */
    NETDEV_E_COMMON_MKDIR_ERR                   = 11803,    /* 创建目录失败 Failed to create directory */
    NETDEV_E_SUBSCRIBE_FULL                     = 11804,    /* 本用户订阅已满, 设备侧用户订阅已满的错误码不能返回 This user's subscription is full and the error code of the device side user's subscription is full cannot be returned. */
    NETDEV_E_UPGRADE_NOTADMIN                   = 11805,    /* 非admin用户无法升级 Non-admin users cannot upgrade */
    NETDEV_E_UPGRADE_INVALID                    = 11806,    /* 升级 未开始 Upgrade not started */
    NETDEV_E_UPGRADE_INPROCESS                  = 11807,    /* 升级 处理中 Upgrade processing */
    NETDEV_E_UPGRADE_NOMEMORY                   = 11808,    /* 升级 内存空间不够 Insufficient upgrade memory space */
    NETDEV_E_UPGRADE_FILE_OPEN_ERR              = 11809,    /* 升级 打开镜像文件出错 Upgrade error opening mirror file */
    NETDEV_E_UPGRADE_DEVICE_ERR                 = 11810,    /* 升级 FLASH出错 Error upgrading FLASH */
    NETDEV_E_UPGRADE_BUSY                       = 11811,    /* 不能同时加载多个升级进程 Multiple upgrade processes cannot be loaded at the same time */
    NETDEV_E_UPGRADE_FAIL_TIMEOUT               = 11812,    /* 升级超时 Upgrade timeout */
    NETDEV_E_INVALID_CONFIGFILE                 = 11813,    /* 配置文件无效 Invalid configuration file */
    NETDEV_E_STOR_RESOURCE_NOTINIT              = 11814,    /* 存储资源未分配 Unallocated storage resources */

    NETDEV_E_DEV_MAX                            = 11999     /* 设备模块错误码最大值 Maximum error code of equipment module */

}NETDEV_DEV_ECODE_E;

/* 组织管理模块错误码 */
typedef enum tagNETDEVOrgErrCode
{
    NETDEV_E_ORG_MAX_NUM                        = 12000,    /* 组织上限-不能再被添加 Organizational cap - cannot be added */
    NETDEV_E_ORG_MAX_LEVEL                      = 12001,    /* 组织层级上限 Upper limit of organizational hierarchy */
    NETDEV_E_ORG_RESOURCE_EXIST                 = 12002,    /* 组织下有资源-不能被删除 Organizational resources - cannot be deleted */
    NETDEV_E_ORG_EXIST                          = 12003,    /* 同分支下组织已存在 Organizations already exist under the same branch*/
    NETDEV_E_ORG_NO_SUCH_ORG                    = 12004,    /* 组织不存在 Organization does not exist */
    NETDEV_E_ORG_IS_ROOT                        = 12005,    /* 不允许此操作，组织是根组织 This operation is not allowed. The organization is the root organization.*/
    NETDEV_E_ORG_NO_SUCH_PORG                   = 12006,    /* 父组织不存在 Paternal organization does not exist */
    NETDEV_E_ORG_SUB_EXIST                      = 12007,    /* 组织下有组织,不能被删除 Organized, not deleted */

    NETDEV_E_ORG_MAX                            = 12399     /* 组织模块最大错误码值 Maximum error code value of organization module*/
}NETDEV_ORG_ECODE_E;


/* 电视墙管理模块错误码 */
typedef enum tagNETDEVTvwallErrCode
{
    NETDEV_E_TVWALL_WND_NUMLIMITED              = 12400,    /* 窗口数量超过限制 The number of windows exceeds the limit */
    NETDEV_E_TVWALL_NUMLIMTED                   = 12401,    /* 电视墙数量超过限制 The number of TV walls exceeds the limit */
    NETDEV_E_TVWALL_LED_NUMLIMTED               = 12402,    /* 虚拟LED数量超过限制 The number of virtual LEDs exceeds the limit */
    NETDEV_E_TVWALL_LED_LINELIMTED              = 12403,    /* 单个虚拟LED行数超出限制 Single virtual LED line number exceeding limit */
    NETDEV_E_TVWALL_SCENE_OVER_LIMIT            = 12404,    /* 单电视墙场景个数超出限制 The number of scenes of single TV Wall exceeds the limit */
    NETDEV_E_TVWALL_BASEPIC_NUMLIMITED          = 12405,    /* 设备能存储的底图数量超出限制 The number of base diagrams that the device can store exceeds the limit */
    NETDEV_E_TVWALL_BASEPIC_SCENELIMITED        = 12406,    /* 单场景能绑定的底图数量超出限制 The number of backgrounds that a single scene can bind exceeds the limit */
    NETDEV_E_TVWALL_DECODE_OUTRANGE             = 12407,    /* 目的位置已超解码能力 Destination position super-decoding capability */
    NETDEV_E_TVWALL_WND_OUTRANGE                = 12408,    /* 开窗面积已超过三倍面积 The area of window opening has exceeded three times the area of window opening.*/
    NETDEV_E_TVWALL_WND_RANGELIMITED            = 12409,    /* 开窗位置/漫游位置超出范围 Window position/roaming position out of range */
    NETDEV_E_TVWALL_SCROLL_LED_NUMLIMITED       = 12410,    /* 滚动虚拟LED超出限制 The number of Rolling virtual LEDs exceeds the limit */

    NETDEV_E_TVWALL_WND_LOCKED                  = 12430,    /* 当前窗口已被锁定 The current window has been locked */
    NETDEV_E_TVWALL_LED_NOTEXIST                = 12431,    /* 虚拟LED不存在 Virtual LED does not exist */
    NETDEV_E_TVWALL_SEQ_EXISTD                  = 12432,    /* 轮切已经存在 Rotary cutting already exists */
    NETDEV_E_TVWALL_WND_NOTEXIST                = 12433,    /* 窗口不存在 Window does not exist */
    NETDEV_E_TVWALL_WND_EXIST                   = 12434,    /* 窗口已经存在 The window already exists */
    NETDEV_E_TVWALL_SPILT_NOTEXIST              = 12435,    /* 窗口中的分屏不存在 The split screen in the window does not exist */
    NETDEV_E_TVWALL_WND_NOSPILT                 = 12436,    /* 窗口不能分屏 Windows cannot be split */
    NETDEV_E_TVWALL_CHANNEL_UESED               = 12437,    /* 解码通道被其他电视墙占用 Decoding channel occupied by other TV wall */
    NETDEV_E_TVWALL_WINDEXIST                   = 12438,    /* 电视墙存在窗口 TV Wall Existence Window */
    NETDEV_E_TVWALL_NOTEXIST                    = 12439,    /* 电视墙信息不存在 TV wall information does not exist */
    NETDEV_E_TVWALL_SPLIT_INFOERR               = 12440,    /* 错误的分屏类型 Error splitting type */
    NETDEV_E_TVWALL_CHANNEL_NUMERR              = 12411,    /* 通道数量错误 Error in channel number */
    NETDEV_E_TVWALL_ENC_ERR                     = 12442,    /* 媒体流未准备就绪 Media streaming is not ready */
    NETDEV_E_TVWALL_PERSCREEN_NUMLIMITED        = 12443,    /* 屏幕（单VO口）窗口数量超过限制 The number of windows exceeds the limit*/
    NETDEV_E_TVWALL_FILE_PROCESSING             = 12444,    /* 文件还在传送中 */
    NETDEV_E_TVWALL_STREAM_CANNOT_REPEAT        = 12445,    /* 不能重复起流 */
    NETDEV_E_TVWALL_EXCESS_AREA                 = 12446,    /* 超过设备带载的宽高或面积,或者超过网口的带载（65万） */
    NETDEV_E_TVWALL_DISPLAY_MODE_CONFLICT       = 12447,    /* 显示模式冲突 */
    NETDEV_E_TVWALL_SERIAL_MOD_ERR              = 12448,    /* 串口模式错误，请到设备web界面修改串口配置 */
    NETDEV_E_TVWALL_MAX                         = 12799     /* 电视墙模块最大错误码值 Maximum error code value of tv wall module*/
}NETDEV_TVWALL_ECODE_E;


/* 网络相关错误码 */
typedef enum tagNETDEVNetErrCode
{
    NETDEV_E_IPADDR_CONFLICT                    = 12800,    /* IP地址冲突 IP Address Conflict */
    NETDEV_E_UPNP_PORT_DISCARD                  = 12801,    /* 映射的端口已废弃 The mapped port is discarded */
    NETDEV_E_UPNP_PORT_EMPLOY                   = 12802,    /* 端口已占用 Port occupied */
    NETDEV_E_SET_VMP_PORT_FAILED                = 12803,    /* 设置VMP端口失败 Failed to set VMP port */
    NETDEV_E_SET_MEDIA_PORT_FAILED              = 12804,    /* 设置媒体流端口失败 Failed to set media stream port */
    NETDEV_E_SET_RTSP_PORT_FAILED               = 12805,    /* 设置RTSP端口失败 Failed to set RTSP port */
    NETDEV_E_SET_ONVIF_PORT_FAILED              = 12806,    /* 设置ONVIF端口失败 Failed to set ONVIF port */
    NETDEV_E_SET_HTTPS_PORT_FAILED              = 12807,    /* 设置HTTPS端口失败 Failed to set HTTPS port */
    NETDEV_E_SET_HTTP_PORT_FAILED               = 12808,    /* 设置HTTP端口失败 Failed to set HTTP port */
    NETDEV_E_TEST_EMAIL                         = 12809,    /* 发送测试邮件失败 Failed to send test mail */
    NETDEV_E_DDNS_INIT                          = 12810,    /* 初始化默认值 Initialize default values */
    NETDEV_E_DDNS_GOOD                          = 12811,    /* 更新完成 Update completed*/
    NETDEV_E_DDNS_NOCHG                         = 12812,    /* 更新完成,但是ip地址没有变化 The update is complete, but the IP address remains unchanged */
    NETDEV_E_DDNS_BADAUTH                       = 12813,    /* 错误的用户名密码 Error username password */
    NETDEV_E_DDNS_DONATOR                       = 12814,    /* 专用的选项要求类似offline URL的服务费 Special options require service fees similar to offline URLs */
    NETDEV_E_DDNS_NOTFQ                         = 12815,    /* 主机名格式不合格 Host name format is not qualified */
    NETDEV_E_DDNS_NOHOST                        = 12816,    /* 不存在该主机名账户 The hostname account does not exist */
    NETDEV_E_DDNS_NUMHOST                       = 12817,    /* 请求立即更新多于20个主机 More than 20 hosts are requested to update immediately */
    NETDEV_E_DDNS_ABUSE                         = 12818,    /* 主机名由于滥用而被禁用 Host name is disabled due to abuse */
    NETDEV_E_DDNS_BADAGENT                      = 12819,    /* 代理发送错误的HTTP请求格式 The proxy sends the wrong HTTP request format */
    NETDEV_E_DDNS_GOOD_127                      = 12820,    /* 除非客户端想要更新127.0.0.1，否则该信息表明在http请求规格中发生错误 Unless the client wants to update 127.0.0.1, this information indicates an error in the HTTP request specification */
    NETDEV_E_DDNS_DNSERR                        = 12821,    /* DNS错误，请联系Support DNS error, please contact Support*/
    NETDEV_E_DDNS_911                           = 12822,    /* 服务维护正在处理 Service maintenance is being processed */
    NETDEV_E_DDNS_REQ                           = 12823,    /* DDNS请求发送失败 DDNS request failed to send */
    NETDEV_E_DDNS_CHECK_KEY                     = 12824,    /* 校验码错误 Check code error */
    NETDEV_E_DDNS_BAD_NAME_FORMAT               = 12825,    /* 域名格式不合格 Domain name format is not qualified */
    NETDEV_E_DDNS_DOMAIN_CONFLICT               = 12826,    /* 域名冲突 Domain name conflict */
    NETDEV_E_DDNS_CLOSE                         = 12827,    /* 非ddns服务器返回，只用于关闭ddns记录状态 Non-ddns server returns, only for closing DDNS record status */
    NETDEV_E_CREATE_CERT_FAILD                  = 12828,    /* 证书文件生成失败 Certificate file generation failed */
    NETDEV_E_GET_CERT_FAILD                     = 12829,    /* 上传证书文件不合法 It is illegal to upload certificate files */
    NETDEV_E_TEST_EMAIL_CHECKSERVER_INFO        = 12830,    /* 认证服务器用户名或密码错误 Error in username or password of authentication server */
    NETDEV_E_TEST_EMAIL_COMM                    = 12831,    /* 邮件发送失败,请检查网络和邮件配置 Mail delivery failed. Check network and mail configuration */
    NETDEV_E_TEST_EMAIL_TIMEOUT                 = 12832,    /* 邮件发送超时 Mail Delivery Timeout */
    NETDEV_E_CLOUD_REPEAT_USER                  = 12833,    /* 该云端账号已登录 The cloud account is logged in */
    NETDEV_E_CLOUD_DEV_ADD_FAIL                 = 12834,    /* 添加云端设备信息失败 Failed to add cloud device information */
    NETDEV_E_CLOUD_ORG_NULL                     = 12835,    /* 云端组织信息为空 Cloud organizational information is empty */
    NETDEV_E_GET_CLOUD_ORG                      = 12836,    /* 无法获取云端信息，请检查网络配置 Cloud information cannot be obtained. Check network configuration */
    NETDEV_E_NO_SUCH_CLOUD_USER                 = 12837,    /* 云端账号不存在 Cloud account does not exist */

    NETDEV_E_NET_MAX                            = 13199     /* 网络模块最大错误码值 Maximum Error Code Value of Network Module */

}NETDEV_NET_ECODE_E;


/* CFG模块 - XML错误码 */
typedef enum tagNETDEVXMLCfgErrCode
{
    NETDEV_E_CONF_FILE_INVALID                  = 13200,    /* 配置文件不合法 Illegal configuration file */
    NETDEV_E_LOAD_XML_FAIL                      = 13201,    /* 导出XML文件失败 Failed to export XML file */
    NETDEV_E_SAVE_XML_FAIL                      = 13202,    /* 生成XML文件失败 Failed to generate XML file */
    NETDEV_E_XML_ATTR_INEXIST                   = 13203,    /* XML属性信息不存在 XML attribute information does not exist */
    NETDEV_E_XML_SYNC_CFG_FAILED                = 13204,    /* 配置区同步出错,用于系统重启时，同步保存配置 Configuration area synchronization error to save configuration synchronously when system restart */
    NETDEV_E_SIMPLE_RECOVER_CFG_FAILED          = 13205,    /* 简单恢复配置出错 Simple Recovery Configuration Error */
    NETDEV_E_RECOVER_CFG_FAILED                 = 13206,    /* 完全恢复配置出错 Complete Recovery Configuration Error */
    NETDEV_E_CONF_FORBID_WRITE                  = 13207,    /* 禁止写入配置 Disable Writing Configuration */

    NETDEV_E_XML_MAX                            = 13599     /* XML模块最大错误码值 Maximum Error Code Value of XML Module */

}NETDEV_XML_ECODE_E;


/* plan模块错误码 */
typedef enum tagNETDEVPlanErrCode
{
    NETDEV_E_PLAN_TEMPLATE_BUSY                 = 13600,    /* 时间模板正在被使用 Template is being used */
    NETDEV_E_PLAN_TEMPLATE_NOT_EXIST            = 13601,    /* 时间模板节点不存在 Time template node does not exist */
    NETDEV_E_PLAN_INVALID_HOLIDAY_TIME          = 13602,    /* 非法假日时间 Illegal Holiday Time */
    NETDEV_E_PLAN_NO_PLAN                       = 13603,    /* 没有计划 No plan */
    NETDEV_E_PLAN_NOT_IN_PLAN                   = 13604,    /* 不在计划内 Not planned */
    NETDEV_E_PLAN_IN_PLAN                       = 13605,    /* 在计划内 Within the plan */

    NETDEV_E_PLAN_MAX                           = 13699     /* Plan模块最大错误码值 Maximum Error Code Value of Plan Module */

}NETDEV_PLAN_ECODE_E;


/* MT 模块 - 错误码 */
typedef enum tagNETDEVMTErrCode
{
    NETDEV_E_UPDATE_VERSION_FAIL                = 13700,    /* 设备升级，版本号不匹配 Equipment upgrade, version number mismatch */
    NETDEV_E_UPDATE_BOARDTYPE_NOT_MATCH         = 13701,    /* 设备升级，设备类型不匹配 Equipment upgrade, equipment type mismatch */
    NETDEV_E_FILE_CHECK_FAILED                  = 13702,    /* 文件校验出错 Document Check Error */
    NETDEV_E_EXPORT_CFG_FAILED                  = 13703,    /* 导出配置出错 Export configuration error */
    NETDEV_E_IMPORT_CFG_FAILED                  = 13704,    /* 导入配置出错 Import configuration error */
    NETDEV_E_UPDATE_OTHER_REASON                = 13705,    /* 设备升级，可能申请内存或者其他原因失败 Device upgrade, memory application or other reasons may fail */
    NETDEV_E_MAINTAIN_EXPORT_RUNNING            = 13706,    /* 维护信息正在导出 Maintenance information is being exported */

    NETDEV_E_MT_MAX                             = 13799     /* MT模块最大错误码值 Maximum error code value of MT module */

}NETDEV_MT_ECODE_E;

/* LINKAGE 模块 - 错误码 */
typedef enum tagNETDEVLinkageErrCode
{
    NETDEV_E_LINKAGE_GUARD_PRO_ALREADY_EXIT     = 13800,    /* 布防预案已存在 Preventive clothing plan already exists */
    NETDEV_E_LINKAGE_GUARD_PRO_NOT_EXIST        = 13801,    /* 指定的布防预案不存在 The designated deployment plan does not exist */
    NETDEV_E_LINKAGE_LINK_RULE_NOT_EXIST        = 13802,    /* 指定的联动规则不存在 The specified linkage rule does not exist */

    NETDEV_E_LINKAGE_MAX                        = 13899    /* Linkage模块最大错误码值 Maximum Error Code Value of Linkage Module */
}NETDEV_LINKAGE_ECODE_E;

/* alarm模块错误码 */
typedef enum tagNETDEVAlarmErrCode
{
    NETDEV_E_ALARM_RESTRAIN                     = 13900     /* 告警抑制 Alarm suppression */

}NETDEV_ALARM_ECODE_E;

/* 电子地图模块错误码 */
typedef enum tagNETDEVEMaprrCode
{
    NETDEV_E_EMAP_PIC_MAX_NUM                   = 15000,    /* 图片数量达到上限，无法添加 The number of pictures reached the upper limit and could not be added. */
    NETDEV_E_EMAP_DIR_EXIST                     = 15001,    /* 电子地图中根目录已存在 The root directory already exists in the electronic map */

    NETDEV_E_EMAP_MAX                           = 15099     /* 电子地图模块最大错误码值 Maximum Error Code Value of Electronic Map Module */
}NETDEV_EMAP_ECODE_E;

/* 门禁人员模块错误码 */
typedef enum tagNETDEVPASCErrCode
{
    NETDEV_E_PACS_PERSON_NO_EXIST               = 17000,    /* 门禁人员不存在 No entrance guards exist */
    NETDEV_E_PACS_PERSON_EXIST                  = 17001,    /* 门禁人员已存在 Access guards already exist */
    NETDEV_E_PACS_PERSON_CARD_EXIST             = 17002,    /* 门禁卡已存在 Access card already exists */
    NETDEV_E_PACS_PERSON_CARD_NO_EXIST          = 17003,    /* 门禁卡不存在 No access card exists*/
    NETDEV_E_PACS_PERSON_CARD_REACH_LIMIT       = 17004,    /* 门禁卡个数已达上限 The number of access cards has reached the upper limit. */
    NETDEV_E_PACS_ACCESS_RECORD_NO_EXIST        = 17005,    /* 人员出入记录不存在 Personnel access records do not exist*/
    NETDEV_E_PACS_CHL_NO_EXIST                  = 17006,    /* 门禁通道不存在 Access control channel does not exist*/
    NETDEV_E_PACS_PRMISS_ID_EXIST               = 17007,    /* 门禁权限人员不存在  Personnel with access control authority do not exist*/
    NETDEV_E_PACS_PERSON_DEPT_ID_NO_EXIST       = 17008,    /* 门禁人员的人员部门ID不存在 Personnel Departmental ID of Access Control Personnel does not exist*/
    NETDEV_E_PACS_PERSON_RECORD_ID_NO_EXIST     = 17009,    /* 人员出入记录ID不存在 Personnel access record ID does not exist*/
    NETDEV_E_PACS_DEPT_ID_PREMISSIONED          = 17010,    /* 部门权限已存在  Departmental authority already exists*/
    NETDEV_E_PACS_PERMISSION_EXIT_PERSON        = 17011,    /* 权限组存在人员，不能删除 The permission group has Person and cannot be deleted. */
    NETDEV_E_PACS_BLACKLIST_PERSON_EXIST        = 17012,    /* 已存在黑名单访客 Existing blacklist Persons . */
    NETDEV_E_PACS_BLACKLIST_NOT_ADD             = 17013,    /* 黑名单访客不能添加 Blacklist visitors cannot be added. */
    NETDEV_E_PACS_MAX                           = 17999     /* PACS模块错误码最大值 Maximum Error Code of PACS Module */
}NETDEV_PACS_ECODE_E;

/* 人脸识别模块错误码 */
typedef enum tagFaceSmartModeErrCode
{
    NETDEV_E_FACE_BD_NO_MEMBER                  = 19000,    /* 人脸库中无成员 No member in face database */
    NETDEV_E_FACE_GUARD_NO_EXIST                = 19001,    /* 布控任务不存在 Control task does not exist */
    NETDEV_E_FACE_ALARM_LOG_NO_EXIST            = 19002,    /* 人脸识别告警记录不存在 There is no alarm record for face recognition */
    NETDEV_E_SMART_GET_FACE_IMAGE_FAIL          = 19003,    /* 获取人脸抓拍图片失败 Failure in capturing face images */
    NETDEV_E_NO_UID_AVAILABLE                   = 19004,    /* 没有可用的Uid No Uid is available */

    NETDEV_E_FACE_LIB_COUNT_MAX                 = 19005,    /* 人脸库数量达到最大值 Maximum number of face databases */
    NETDEV_E_FACE_GUARD_COUNT_MAX               = 19006,    /* 该人脸库布控任务数已达到最大值 The number of control tasks in the face database has reached the maximum. */
    NETDEV_E_FACE_MEMBER_COUNT_MAX              = 19007,    /* 该人脸库人脸成员数已达到最大值 The maximum number of face members has been achieved in this face database. */
    NETDEV_E_FACE_IDENTI_NUM_EXIST              = 19008,    /* 证件号码已存在 Document number already exists */
    NETDEV_E_FACE_FEAT_VERTION_UNMATCH          = 19009,    /* 设备人脸识别算法版本不匹配 Version mismatch of device face recognition algorithm */
    NETDEV_E_VEHICLE_GUARD_NO_EXIST             = 19010,    /* 车辆布控任务不存在 Vehicle control tasks do not exist */
    NETDEV_E_SLAVE_PLATE_IMAGE_GET_FAIL         = 19011,    /* 从机车牌图片获取失败 Failure to obtain license plate image */
    NETDEV_E_VEHICLE_LOG_NO_EXIST               = 19012,    /* 车辆记录不存在 Vehicle records do not exist */
    NETDEV_E_GET_SLAVE_PIC_FAIL                 = 19013,    /* 获取从机图片失败 Failed to get slave picture */
    NETDEV_E_GUARD_DEV_VIID_OFFLINE             = 19014,    /* 布控设备视图库状态离线 Out-of-line status of view Library of distribution control equipment */
    NETDEV_E_GUARD_GUARD_DEV_NOW                = 19015,    /* 布控设备中 In Distribution Control Equipment */
    NETDEV_E_GUARD_GUARD_NOT_ENABLE             = 19020,    /* 该布控任务不使能 This control task is not enabled */
    NETDEV_E_GUARD_GUARD_NOW                    = 19021,    /* 布控中 In charge control */
    NETDEV_E_GUARD_DIFFERENT_IMAGE_PROTOCOL     = 19022,    /* 每个布控任务只能选择相同图片接入协议的设备进行布控 */
    NETDEV_E_ROOT_LIB_HAS_MONITORED_MEMBER      = 19023,    /* 底库下存在布控成员 */

    NETDEV_E_SMART_MAX                          = 19999     /* 智能模块错误码最大值 Maximum Error Code of Intelligent Module */
}NETDEV_FACE_SMART_ERR_CODE_E;

/* 视图库布控错误码 */
typedef enum tagMonitorErrCode
{
    NETDEV_E_VIID_DISPOSE_DEV_BUSY                  = 25006,  /* 视图库布控错误，设备忙 View library layout control error, equipment busy */
    NETDEV_E_VIID_DISPOSE_DATABASE_FULL             = 25007,  /* 视图库布控错误,人脸库已达上限 View database layout control error, face database has reached the upper limit */
    NETDEV_E_VIID_DISPOSE_MEMBER_FULL               = 25008,  /* 视图库布控错误,人脸成员已达上限 View database layout control error, face members have reached the upper limit */
    NETDEV_E_VIID_DISPOSE_NO_SMARTBAR               = 25009,  /* 视图库布控错误,设备智能棒不存在 View Library Layout Control Error, Device Smart Bar does not exist */
    NETDEV_E_VIID_DISPOSE_VIID_OFFLINE              = 25010   /* 视图库布控错误,设备视图库未连接 View Library Layout Error, Device View Library Not Connected */
}NETDEV_MONITOR_ERR_CODE_E;

/* 云端业务相关错误码 */
typedef enum tagCloudRemoteErrCode
{
    NETDEV_E_CLOUD_REGISTER_BY_OTHER                = 20000,  /* 不是你的设备 Not your device */

    NETDEV_E_CLOUD_CHL_NOT_EXIST                    = 20001,  /* 通道不存在 Channel does not exist */
    NETDEV_E_CLOUD_SREAMID_NOT_EXIST                = 20002,  /* 流ID不存在 Flow ID does not exist */
    NETDEV_E_CLOUD_BITRATE_UNEXPECTED               = 20003,  /* 请求码率过大 Excessive request rate */
    NETDEV_E_CLOUD_LIVEID_NOT_EXIST                 = 20004,  /* 直播ID不存在 Live ID does not exist */
    NETDEV_E_CLOUD_PROTO_TYPE_ILLEGAL               = 20005,  /* 请求流协议不支持 Request Flow Protocol does not support */
    NETDEV_E_CLOUD_CLIENTID_NOT_EXIST               = 20006,  /* 客户端ID不存在 Client ID does not exist */
    NETDEV_E_CLOUD_REQUESTID_NOT_EXIST              = 20007,  /* RequestID不存在 RequestID does not exist */
    NETDEV_E_CLOUD_VISITOR_TOTAL_UNEXPECTED         = 20008,  /* 当前在线用户过多 Too many current online users */
    NETDEV_E_GET_RTMP_URL_FAIL                      = 20009,  /* 获取RTMP拉流URL失败 Failed to obtain RTMP pull URL */
    NETDEV_E_GET_PUSH_STREAM_STATE_FAIL             = 20010,  /* 获取推流状态失败 Failure to acquire push-flow status*/
    NETDEV_E_START_PULL_STREAM_FAIL                 = 20011,  /* 启动拉流失败 Start-up pull-out failure */
    NETDEV_E_GET_CLOUD_DEV_LIST_FAIL                = 20012,  /* 获取云端设备列表失败 Failed to get the list of cloud devices */
    NETDEV_E_GET_DEV_INFO_FAILED                    = 20013,  /* 获取云端设备信息失败 Failed to obtain cloud device information */
    NETDEV_E_GET_NAT_TYPE_FAIL                      = 20014,  /* 获取NAT类型失败 Failed to get NAT type */
    NETDEV_E_MODIFT_CLOUD_DEV_NAME_FAIL             = 20015,  /* 更新云端设备名失败 Failed to update cloud device name */
    NETDEV_E_DELETE_CLOUD_DEVICE_FAIL               = 20016,  /* 删除云端设备失败 Failed to delete cloud devices */
    NETDEV_E_STOP_PULL_STREAM_FAIL                  = 20017,  /* 停止拉流失败 Stop pulling and lose */
    NETDEV_E_KEEP_ALIVE_PULL_STREAM_FAIL            = 20018,  /* 推流保活失败 Failure of Pushing Flow to Preserve Life */
    NETDEV_E_KEEP_ALIVE_LIST_EMPTY                  = 20019,  /* 保活列表为空 The live list is empty */
    NETDEV_E_GET_LIVE_ID_FAIL                       = 20020,  /* 获取直播ID失败 Failed to get live ID */
    NETDEV_E_CLOUD_INVALID_FORMAT                   = 20021,  /* 格式非法 Illegal format */
    NETDEV_E_CLOUD_NOT_REGISTER                     = 20022,  /* 该设备未注册 The device is not registered */
    NETDEV_E_CLOUD_INVALID_REG_CODE                 = 20023,  /* 注册码不存在 Registration code does not exist */
    NETDEV_E_CLOUD_NOT_SHARE_TO_SELF                = 20024,  /* 不能共享给自己 Can't share with oneself */
    NETDEV_E_ADD_CLOUD_DEVICE_FAIL                  = 20025,  /* 添加云端设备失败 Failed to add cloud devices */

    NETDEV_E_GET_CLOUD_DDNS_FAIL                    = 20026,    /* 获取DDNS信息失败 Failed to obtain DDNS information */
    NETDEV_E_GET_CLOUD_ORG_LIST_FAIL                = 20027,    /* 获取云端组织列表失败 Failed to retrieve cloud organization list */
    NETDEV_E_FIND_SHARE_DEVLIST_ERROR               = 20028,    /* 获取共享设备列表失败 Failed to get shared device list */
    NETDEV_E_START_DEVICE_SHARE_FAIL                = 20029,    /* 启动设备共享失败 Failure to start device sharing */
    NETDEV_E_STOP_DEVICE_SHARE_FAIL                 = 20030,    /* 停止云端设备共享失败 Failure to Stop Cloud Device Sharing */
    NETDEV_E_GET_SHARE_RECORD_INFO_FAIL             = 20031,    /* 获取云端共享记录信息失败 Failed to obtain cloud shared record information */
    NETDEV_E_GET_CLOUD_DEV_POPULATION               = 20032,    /* 获取云账户设备统计信息失败 Failed to obtain cloud account device statistics */
    NETDEV_E_ADD_CLOUD_ORG_FAIL                     = 20033,    /* 增加云端组织失败 Increasing cloud Organizational Failure */
    NETDEV_E_MODIFY_CLOUD_ORG_FAIL                  = 20034,    /* 修改云端组织失败 Failure to modify cloud organization */
    NETDEV_E_DELETE_CLOUD_ORG_FAIL                  = 20035,    /* 删除云端组织失败 Failed to delete cloud organizations */
    NETDEV_E_ADD_DEV_TO_CLOUD_ORG_FAIL              = 20036,    /* 增加设备到云端组织失败 Failure to add devices to cloud organizations */
    NETDEV_E_GET_CLOUD_DEV_CHANNEL_LIST_FAIL        = 20037,     /* 获取云设备通道失败 Failure to access cloud device channel */
    NETDEV_E_GET_CLOUD_VIDEO_TIME_FAIL              = 20038,    /* 获取云端视频时间信息失败 Failed to get cloud video time information */
    NETDEV_E_GET_CLOUD_VIDEO_M3U8_FAIL              = 20039     /* 获取云端视频M3u8信息失败 Failed to get cloud video M3u8 information */

}NETDEV_CLOUD_REMOTE_ERR_CODE_E;

/* 抓图模块错误码 */
typedef enum tagNETDEVSnapshotErrCode
{
    NETDEV_E_SNAPSHOT_PIC_FAILED                    = 27000,     /* 图片存储异常 */
    NETDEV_E_SNAPSHOT_QRY_PIC_FAILED                = 27001,     /* 查询图片异常 */

    NETDEV_E_SNAPSHOT_MAX                           = 27999      /* 抓图模块错误码最大值 */
}NETDEV_SNAPSHOT_ERR_CODE_E;

/* 智能锁相关错误码 */
typedef enum tagNETDEVSmartLockErrCode
{
    NETDEV_SLOCK_ROOM_DUPLICATE                     = 29006,    /* 房间绑定锁重复 */
    NETDEV_ROOM_PERSON_DUPLICATE                    = 29007,    /* 房间人员添加重复 */
    NETDEV_SLOCK_DEV_BINDED                         = 29008,    /* 该锁已被绑定 */
    NETDEV_SLOCK_MAX                                = 29999     /* 智能锁模块错误码最大值 */
}NETDEV_SMARTLOCK_ERR_CODE_E;

/* END********************* 错误码  Error codes *********************************************************** */

/* BEGIN:****************** 枚举值  Enumeration value ***************************************************** */
/**
 * @brief 通道状态 枚举定义 Channel status Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVChannelStatus
{
    NETDEV_CHL_STATUS_OFFLINE   = 0,            /* 通道离线  Channel offline */
    NETDEV_CHL_STATUS_ONLINE    = 1,             /* 通道在线  Channel online */
    NETDEV_CHL_STATUS_UNBIND    = 2,             /* 通道空闲  Channel unbind */
    NETDEV_CHL_STATUS_INVALID
}NETDEV_CHANNEL_STATUS_E;

/**
 * @brief 通道类型 枚举定义 Channel type Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVChannelType
{
    NETDEV_CHL_TYPE_DIGITAL = 0,            /* 数字通道  Digital Channel */
    NETDEV_CHL_TYPE_ANALOG = 1,             /* 模拟通道  analog Channel */
    NETDEV_CHL_TYPE_INVALID
}NETDEV_CHANNEL_TYPE_E;

/**
 * @brief 通道下接入的设备类型(2018-07-26 目前仅NVR使用) 枚举定义 Channel device type Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVChannelCameraType
{
    NETDEV_CHL_CAMERA_TYPE_FIXED        = 0,        /* 固定摄像机  fixed camera */
    NETDEV_CHL_CAMERA_TYPE_PTZ          = 1,        /* 云台摄像机  PTZ camera */
    NETDEV_CHL_CAMERA_TYPE_FISH_EYE     = 2,        /* 鱼眼相机（鱼眼镜头+自身矫正功能）fish-eye camera */
    NETDEV_CHL_CAMERA_TYPE_WIDE_ANGLE   = 3,        /* 超广角相机（包含鱼眼镜头、大视角的镜头的相机  但是不具备自身矫正功能）wide-Angle camera*/
    
    NETDEV_CHL_CAMERA_TYPE_INVALID      = 0xff
}NETDEV_CHANNEL_CAMERA_TYPE_E;

/**
 * @brief 视频制式 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVVideoStandard
{
    NETDEV_VIDEO_STANDARD_PAL       = 0,        /* PAL */
    NETDEV_VIDEO_STANDARD_NTSC      = 1,        /* NTSC */
    NETDEV_VIDEO_STANDARD_INVALID   = 0xFF      /* 无效值  Invalid value */
}NETDEV_VIDEO_STANDARD_E;

/**
 * @brief 摄像机类型 枚举定义 Camera type Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVCameraType
{
    NETDEV_CAMERA_TYPE_FIX         = 0,            /* 固定摄像机  Fixed camera */
    NETDEV_CAMERA_TYPE_PTZ         = 1,            /* 云台摄像机  PTZ camera */

    NETDEV_CAMERA_TYPE_INVALID     = 0xFF          /* 无效值  Invalid value */
}NETDEV_CAMERA_TYPE_E;

/**
 * @brief 实况业务流索引 枚举定 义 Live stream index Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVLiveStreamIndex
{
    NETDEV_LIVE_STREAM_INDEX_MAIN       = 0,    /* 主流  Main stream */
    NETDEV_LIVE_STREAM_INDEX_AUX        = 1,    /* 辅流  Sub stream */
    NETDEV_LIVE_STREAM_INDEX_THIRD      = 2,    /* 第三流  Third stream */
	NETDEV_LIVE_STREAM_INDEX_FOUTH      = 3,    /* 照片流*

    NETDEV_LIVE_STREAM_INDEX_INVALID    = 0xFF  /* 无效值  Invalid value */
}NETDEV_LIVE_STREAM_INDEX_E;

/**
 * @brief IP协议类型 枚举定义  Protocol type Enumeration definition
 * @attention 无 None
 */
typedef enum tagHOSTType
{
    NETDEV_NETWORK_HOSTTYPE_IPV4    = 0,        /* IPv4 */
    NETDEV_NETWORK_HOSTTYPE_IPV6    = 1,        /* IPv6 */
    NETDEV_NETWORK_HOSTTYPE_DNS     = 2,         /* 域名 */

    NETDEV_NETWORK_HOSTTYPE_INVALID     = 0xFF      /* 无效值  Invalid value */
}NETDEV_HOSTTYPE_E;


/**
 * @brief 媒体传输协议 枚举定义  Media transport protocol Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVProtocal
{
    NETDEV_TRANSPROTOCAL_RTPUDP     = 0,    /* UDP */
    NETDEV_TRANSPROTOCAL_RTPTCP     = 1,     /* TCP */
	NETDEV_TRANSPROTOCAL_UNIVIEW1_TCP = 2   /* TCP＋Uniview1 报文模式 */
}NETDEV_PROTOCAL_E;

/**
 * @brief 启流模式 枚举定义  start stream mode Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVStreamMode
{
    NETDEV_STREAM_MODE_ALL      = 0x0000,   /* 音频 + 视频 audio & Video */
    NETDEV_STREAM_MODE_VIDEO    = 0x8000    /* 仅视频 only video */
}NETDEV_STREAM_MODE_E;

/**
 * @brief 媒体文件格式 枚举定义  Media file format Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVMediaFileFormat
{
    NETDEV_MEDIA_FILE_MP4                   = 0,    /* MP4格式的媒体文件(音频+视频)  mp4 media file (Audio + Video) */
    NETDEV_MEDIA_FILE_TS                    = 1,    /* TS格式的媒体文件(音频+视频)   TS media file (Audio + Video) */
    NETDEV_MEDIA_FILE_MP4_ADD_TIME          = 2,    /* MP4格式的媒体文件(音频+视频) ,文件名包含时间戳  MP4 media file with time in file name (Audio + Video) */
    NETDEV_MEDIA_FILE_TS_ADD_TIME           = 3,    /* TS格式的媒体文件(音频+视频) ,文件名包含时间戳  TS media file with time in file name (Audio + Video) */
    NETDEV_MEDIA_FILE_AUDIO_TS              = 4,    /* TS格式的音频文件(仅音频)   TS audio file (Only audio) */
    NETDEV_MEDIA_FILE_AUDIO_MP4             = 5,    /* MP4格式的音频文件(仅音频)   MP4 audio file (Only audio) */
    NETDEV_MEDIA_FILE_AUDIO_TS_ADD_TIME     = 6,    /* TS格式的音频文件(仅音频),文件名包含时间戳  TS audio file with time in file name (Only audio) */
    NETDEV_MEDIA_FILE_AUDIO_MP4_ADD_TIME    = 7,    /* MP4格式的音频文件(仅音频),文件名包含时间戳  MP4 audio file with time in file name (Only audio) */
    NETDEV_MEDIA_FILE_MP4_ADD_RCD_TIME      = 8,    /* MP4格式的媒体文件(音频+视频)，文件名包含开始结束时间  MP4 media file with start and end times in file name (Audio + Video)*/
    NETDEV_MEDIA_FILE_TS_ADD_RCD_TIME       = 9,    /* TS格式的媒体文件(音频+视频)，文件名包含开始结束时间  TS media file with start and end times in file name (Audio + Video)*/
    NETDEV_MEDIA_FILE_AUDIO_MP4_ADD_RCD_TIME= 10,   /* MP4格式的音频文件(仅音频)，文件名包含开始结束时间  MP4 audio file with start and end times in file name (Only audio)*/
    NETDEV_MEDIA_FILE_AUDIO_TS_ADD_RCD_TIME = 11,   /* TS格式的音频文件(仅音频)，文件名包含开始结束时间  TS audio file with start and end times in file name (Only audio)*/
    NETDEV_MEDIA_FILE_VIDEO_MP4_ADD_RCD_TIME= 12,   /* MP4格式的媒体文件(仅视频)  mp4 media file (Only video) */
    NETDEV_MEDIA_FILE_VIDEO_TS_ADD_RCD_TIME = 13,   /* TS格式的媒体文件(仅视频)  ts media file (Only video) */

    NETDEV_MEDIA_FILE_AVI                   = 14,   /* AVI格式的媒体文件(音频+视频)   AVI media file (Audio + Video) */
    NETDEV_MEDIA_FILE_AVI_ADD_TIME          = 15,   /* AVI格式的媒体文件(音频+视频)，文件名包含开始结束时间  AVI media file with start and end times in file name (Audio + Video)*/
    NETDEV_MEDIA_FILE_AUDIO_AVI             = 16,   /* AVI格式的音频文件(仅音频)   AVI audio file (Only audio) */
    NETDEV_MEDIA_FILE_AUDIO_AVI_ADD_TIME    = 17,   /* AVI(仅音频),文件名包含时间戳  AVI audio file with time in file name (Only audio)*/
    NETDEV_MEDIA_FILE_AVI_ADD_RCD_TIME      = 18,   /* AVI格式的音频文件(音频+视频)，文件名包含开始结束时间  AVI audio file with start and end times in file name (Audio + Video)*/
    NETDEV_MEDIA_FILE_AUDIO_AVI_ADD_RCD_TIME= 19,   /* AVI格式的音频文件(仅音频)，文件名包含开始结束时间  AVI audio file with start and end times in file name (Only audio)*/
    NETDEV_MEDIA_FILE_VIDEO_AVI_ADD_RCD_TIME= 20,   /* AVI格式的媒体文件(仅视频)  AVI media file (Only video) */

    NETDEV_MEDIA_FILE_INVALID
}NETDEV_MEDIA_FILE_FORMAT_E;

/**
 * @brief 解码视频编码格式 枚举定义  Player Video encoding format Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVPlayerVideoCodeType
{
    NETDEV_PLAYER_VIDEO_CODE_MPEG2     = 0,          /* MPEG-2 */
    NETDEV_PLAYER_VIDEO_CODE_MPEG4     = 1,          /* MPEG-4 */
    NETDEV_PLAYER_VIDEO_CODE_H264      = 2,          /* H.264 */
    NETDEV_PLAYER_VIDEO_CODE_MJPEG     = 3,          /* MJPEG */
    NETDEV_PLAYER_VIDEO_CODE_H265      = 4,          /* H.265 */

    NETDEV_PLAYER_VIDEO_CODE_INVALID
}NETDEV_PLAYER_VIDEO_CODE_TYPE_E;

/**
 * @brief 视频编码格式 枚举定义  Video encoding format Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVVideoCodeType
{
    NETDEV_VIDEO_CODE_MJPEG     = 0,          /* MJPEG */
    NETDEV_VIDEO_CODE_H264      = 1,          /* H.264 */
    NETDEV_VIDEO_CODE_H265      = 2,          /* H.265 */
    NETDEV_VIDEO_CODE_INVALID
}NETDEV_VIDEO_CODE_TYPE_E;

/**
 * @brief 视频帧类型 枚举定义  Video frame type Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVVideoFrameType
{
    NETDEV_VIDEO_FRAME_I    = 0,               /* I-frame */
    NETDEV_VIDEO_FRAME_P    = 1,               /* P-frame */
    NETDEV_VIDEO_FRAME_B    = 2                /* B-frame */
}NETDEV_VIDEO_FRAME_TYPE_E;

/**
* @brief 音频编码格式 Audio encode type
* @attention 无 None
*/
typedef enum tagNetDEVAudioEncodeType
{
    NETDEV_AUDIO_ENCODE_G711U   = 0,          /* 音频符合G.711U律标准 Audio up to G.711U-law standard*/
    NETDEV_AUDIO_ENCODE_MP2     = 1,          /* 音频符合MP2编码标准 Audio up to MP2 standard */
    NETDEV_AUDIO_ENCODE_AAC     = 2,          /* 音频符合AAC编码标准 Audio up to AAC standard*/
    NETDEV_AUDIO_ENCODE_G711A   = 3,          /* 音频符合G.711A律标准 Audio up to G.711A-law standard*/
    NETDEV_AUDIO_ENCODE_PCM     = 4,          /* 音频符合PCM律标准 Audio up to PCM law standard*/
    NETDEV_AUDIO_ENCODE_NULL    = 5           /* 无音频 No audio */
}NETDEV_AUDIO_ENCODE_TYPE_E;

/**
* @brief 解码后音频格式 Wave format info
* @attention 无  None
*/
typedef enum tagNetDEVWaveFormatInfo
{
    NETDEV_WAVE_FORMAT_PCM8M16        = 0,        /* PCM,8K采样率,单声道,16位采样 PCM,8k sampling rate,16 bit sampling*/
    NETDEV_WAVE_FORMAT_PCM16M16       = 1,        /* PCM,16K采样率,单声道,16位采样 PCM,16k sampling rate,16 bit sampling*/
    NETDEV_WAVE_FORMAT_PCM441M16      = 2,        /* PCM,44.1K采样率,单声道,16位采样 PCM,44.1k sampling rate,16 bit sampling*/
    NETDEV_WAVE_FORMAT_PCM11025M16    = 3,        /* PCM,11.025K采样率,单声道,16位采样 PCM,11.025k sampling rate,16 bit sampling*/
    NETDEV_WAVE_FORMAT_PCM8_RIGHT     = 4,        /* PCM，8K采样率，右声道 PCM,8k sampling rate,right channel*/
    NETDEV_WAVE_FORMAT_PCM_NORMAL     = 5,        /* PCM，通用模式 PCM,general mode*/
    NETDEV_WAVE_FORMAT_PCM48000M16    = 6,        /* PCM，48.0K采样率，单声道（M），16位采样 PCM,48.0k sampling rate,single track,16 bit sampling*/
    NETDEV_WAVE_FORMAT_UNKNOWN
}NETDEV_WAVE_FORMAT_INFO_E;

/**
 * @brief 视频显示比例 枚举定义  Video display ratio Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVRenderScale
{
    NETDEV_RENDER_SCALE_FULL        = 0,                  /* 图像填充整个播放窗格  Stretch */
    NETDEV_RENDER_SCALE_PROPORTION  = 1,                  /* 图像按比例显示  Scale */

    NETDEV_RENDER_SCALE_INVALID     = 0xFF
}NETDEV_RENDER_SCALE_E;

/**
 * @brief 图片格式 枚举定义 Picture type Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVPictureFormat
{
    NETDEV_PICTURE_BMP = 0,                  /* 图片格式为bmp格式  Picture format is bmp */
    NETDEV_PICTURE_JPG = 1,                  /* 图片格式为jpg格式  Picture format is jpg */

    NETDEV_PICTURE_INVALID
}NETDEV_PICTURE_FORMAT_E;

/**
 * @brief 视频图像质量 枚举定义  Video image quality Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVVideoQuality
{
    NETDEV_VQ_L0 = 0,                    /* 最高  Highest */
    NETDEV_VQ_L1 = 1,
    NETDEV_VQ_L2 = 4,                    /* 较高  Higher */
    NETDEV_VQ_L3 = 8,
    NETDEV_VQ_L4 = 12,                   /* 中  Medium */
    NETDEV_VQ_L5 = 16,
    NETDEV_VQ_L6 = 20,                   /* 低  Low */
    NETDEV_VQ_L7 = 24,
    NETDEV_VQ_L8 = 28,                   /* 较低  Lower */
    NETDEV_VQ_L9 = 31,                   /* 最低  Lowest */

    NETDEV_VQ_LEVEL_INVALID = -1         /* 无效  Valid */
}NETDEV_VIDEO_QUALITY_E;

/**
 * @brief 图像分辨率 枚举定义 Image resolution Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVPictureSize
{
    NETDEV_PICTURE_SIZE_D1     = 0,           /* D1 */
    NETDEV_PICTURE_SIZE_4CIF   = 1,           /* 4CIF */
    NETDEV_PICTURE_SIZE_2CIF   = 2,           /* 2CIF */
    NETDEV_PICTURE_SIZE_CIF    = 3,           /* CIF */
    NETDEV_PICTURE_SIZE_960H   = 4,           /* 960H */
    NETDEV_PICTURE_SIZE_QCIF   = 5,           /* QCIF */
    NETDEV_PICTURE_SIZE_HALFD1 = 6,           /* HALFD1 */
    NETDEV_PICTURE_SIZE_720    = 7,           /* 720 */
    NETDEV_PICTURE_SIZE_1080   = 8,           /* 1080 */
    NETDEV_PICTURE_SIZE_XGA    = 9,           /* 1024*768 */
    NETDEV_PICTURE_SIZE_SXGA   = 10,          /* 1280*1024 */

    NETDEV_PICTURE_SIZE_INVALID               /* 无效值  Invalid value */
}NETDEV_PICTURE_SIZE_E;

/**
 * @brief 云台命令 枚举定义 PTZ commands Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVPtzCmdEnum
{
    NETDEV_PTZ_IRISCLOSE_STOP       =0x0101,       /* 光圈关停止  Iris close stop */
    NETDEV_PTZ_IRISCLOSE            =0x0102,       /* 光圈关  Iris close */
    NETDEV_PTZ_IRISOPEN_STOP        =0x0103,       /* 光圈开停止  Iris open stop */
    NETDEV_PTZ_IRISOPEN             =0x0104,       /* 光圈开  Iris open */

    NETDEV_PTZ_FOCUSNEAR_STOP       =0x0201,       /* 近聚集停止  Focus near stop */
    NETDEV_PTZ_FOCUSNEAR            =0x0202,       /* 近聚集  Focus near */
    NETDEV_PTZ_FOCUSFAR_STOP        =0x0203,       /* 远聚集停止  Focus far stop */
    NETDEV_PTZ_FOCUSFAR             =0x0204,       /* 远聚集  Focus far */

    NETDEV_PTZ_ZOOMTELE_STOP        = 0x0301,       /* 放大停止  Zoom in stop */
    NETDEV_PTZ_ZOOMTELE             = 0x0302,       /* 放大  Zoom in */
    NETDEV_PTZ_ZOOMWIDE_STOP        = 0x0303,       /* 缩小停止  Zoom out stop */
    NETDEV_PTZ_ZOOMWIDE             = 0x0304,       /* 缩小  Zoom out */
    NETDEV_PTZ_TILTUP               = 0x0402,       /* 向上  Tilt up */
    NETDEV_PTZ_TILTDOWN             = 0x0404,       /* 向下  Tilt down */
    NETDEV_PTZ_PANRIGHT             = 0x0502,       /* 向右  Pan right */
    NETDEV_PTZ_PANLEFT              = 0x0504,       /* 向左  Pan left */
    NETDEV_PTZ_LEFTUP               = 0x0702,       /* 左上  Move up left */
    NETDEV_PTZ_LEFTDOWN             = 0x0704,       /* 左下  Move down left */
    NETDEV_PTZ_RIGHTUP              = 0x0802,       /* 右上  Move up right */
    NETDEV_PTZ_RIGHTDOWN            = 0x0804,       /* 右下  Move down right */

#if 0
    NETDEV_PTZ_PRESAVE              = 0x0601,       /* 预置位保存  Save preset */
    NETDEV_PTZ_PRECALL              = 0x0602,       /* 预置位调用  Call preset */
    NETDEV_PTZ_PREDEL               = 0x0603,       /* 预置位删除  Delete preset */
#endif

    NETDEV_PTZ_ALLSTOP              = 0x0901,       /* 全停命令字  All-stop command word */
    NETDEV_PTZ_FOCUS_AND_IRIS_STOP  = 0x0907,       /* 聚焦.光圈停止  Focus & Iris-stop command word */
    NETDEV_PTZ_MOVE_STOP            = 0x0908,       /* 移动停止命令字  move stop command word */
    NETDEV_PTZ_ZOOM_STOP            = 0x0909,       /* 变倍停止命令字  zoom stop command word */

    NETDEV_PTZ_TRACKCRUISE          = 0x1001,       /* 开始轨迹巡航  Start route patrol*/
    NETDEV_PTZ_TRACKCRUISESTOP      = 0x1002,       /* 停止轨迹巡航  Stop route patrol*/
    NETDEV_PTZ_TRACKCRUISEREC       = 0x1003,       /* 开始录制轨迹  Start recording route */
    NETDEV_PTZ_TRACKCRUISERECSTOP   = 0x1004,       /* 停止录制轨迹  Stop recording route */
    NETDEV_PTZ_TRACKCRUISEADD       = 0x1005,       /* 添加巡航轨迹  Add patrol route */
    NETDEV_PTZ_TRACKCRUISEDEL       = 0x1006,       /* 删除轨迹巡航  Delete patrol route */

    NETDEV_PTZ_AREAZOOMIN           = 0x1101,       /* 拉框放大  Zoom in area */
    NETDEV_PTZ_AREAZOOMOUT          = 0x1102,       /* 拉框缩小  Zoom out area */
    NETDEV_PTZ_AREAZOOM3D           = 0x1103,       /* 3D定位  3D positioning */

    NETDEV_PTZ_BRUSHON              = 0x0A01,       /* 雨刷开  Wiper on */
    NETDEV_PTZ_BRUSHOFF             = 0x0A02,       /* 雨刷关  Wiper off */

    NETDEV_PTZ_LIGHTON              = 0x0B01,       /* 灯开  Lamp on */
    NETDEV_PTZ_LIGHTOFF             = 0x0B02,       /* 灯关  Lamp off */

    NETDEV_PTZ_HEATON               = 0x0C01,       /* 加热开  Heater on */
    NETDEV_PTZ_HEATOFF              = 0x0C02,       /* 加热关  Heater off */

    NETDEV_PTZ_SNOWREMOINGON        = 0x0E01,       /* 除雪开  Snowremoval on */
    NETDEV_PTZ_SNOWREMOINGOFF       = 0x0E02,       /* 除雪关  Snowremoval off  */

    NETDEV_PTZ_INFRAREDON           = 0x0D01,       /* 红外开  IR on */
    NETDEV_PTZ_INFRAREDOFF          = 0x0D02,       /* 红外关  IR off */

    NETDEV_PTZ_SELF_CHECKING        = 0x1801,       /* 自检:当参数dwSpeed为1时,执行云台自检;当为0时,执行恢复球机云台默认物理参数,此时会重启 */

#if 0
    NETDEV_PTZ_ABSPOSITION          = 0x0902,       /* 设置摄像机绝对角度  Set absolute position of camera */
    NETDEV_PTZ_GUARD                = 0x0903,       /* 回看守位,该命令不在云台模板体现  Return to home position (this command is not implemented on the PTZ template) */
    NETDEV_PTZ_SPEEDSET             = 0x0904,       /* 设置速度  Set speed */

    NETDEV_PTZ_PRESETCRUISE         = 0x1001,       /* 云台按预置位巡航 ,该命令字不在云台模板体现  Preset-based PTZ patrol (the command word is not implemented on the PTZ template) */
    NETDEV_PTZ_PRESETCRUISESTOP     = 0x1002,       /* 云台按预置位巡航停止,该命令字不在云台模板体现  Preset-based PTZ patrol stop (the command word is not implemented on the PTZ template) */
    NETDEV_PTZ_CRUISEDEL            = 0X1003,       /* 删除线路  Delete route */
    NETDEV_PTZ_CRUISEADDPRESET      = 0x1004,       /* 往线路中添加预置位  Add preset to route */
    NETDEV_PTZ_CRUISEADDSTART       = 0x1005,       /* 开始往线路中添加预置位  Start adding preset to route */
    NETDEV_PTZ_CRUISEADDSTOP        = 0x1006,       /* 结束往线路中添加预置位  Stop adding preset to route */
#endif

    NETDEV_PTZ_INVALID

} NETDEV_PTZ_E;

/**
 * @brief 云台预置位操作命令 枚举定义 PTZ preset operation commands Enumeration Definition
 * @attention 无 None
 */
typedef enum tagNETDEVPtzPresetCmd
{
    NETDEV_PTZ_SET_PRESET   = 0,            /* 设置预置位  Set preset */
    NETDEV_PTZ_CLE_PRESET   = 1,            /* 清除预置位  Clear preset */
    NETDEV_PTZ_GOTO_PRESET  = 2             /* 转到预置位  Go to preset */
}NETDEV_PTZ_PRESETCMD_E;

/**
 * @brief 云台巡航操作命令 枚举定义 PTZ patrol operation commands Enumeration Definition
 * @attention 无 None
 */
typedef enum tagNETDEVPTZCruiseCmd
{
    NETDEV_PTZ_ADD_CRUISE      = 0,         /* 添加巡航路径   Add patrol route */
    NETDEV_PTZ_MODIFY_CRUISE   = 1,         /* 编辑巡航路径  Edit patrol route */
    NETDEV_PTZ_DEL_CRUISE      = 2,         /* 删除巡航路径  Delete patrol route */
    NETDEV_PTZ_RUN_CRUISE      = 3,         /* 开始巡航  Start patrol */
    NETDEV_PTZ_STOP_CRUISE     = 4,          /* 停止巡航  Stop patrol */
    NETDEV_PTZ_GET_CRUISE      = 5         /* 获取巡航路径  */    /* Get patrol route */
}NETDEV_PTZ_CRUISECMD_E;

/**
 * @brief 回放控制命令 枚举定义 Playback control commands Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVPlayControl
{
    NETDEV_PLAY_CTRL_PLAY                       = 0,        /* 开始播放  Play */
    NETDEV_PLAY_CTRL_PAUSE                      = 1,        /* 暂停播放  Pause */
    NETDEV_PLAY_CTRL_RESUME                     = 2,        /* 恢复播放  Resume */
    NETDEV_PLAY_CTRL_GETPLAYTIME                = 3,        /* 获取播放进度  Obtain playing time */
    NETDEV_PLAY_CTRL_SETPLAYTIME                = 4,        /* 设置播放进度  Configure playing time */
    NETDEV_PLAY_CTRL_GETPLAYSPEED               = 5,        /* 获取播放速度  Obtain playing speed */
    NETDEV_PLAY_CTRL_SETPLAYSPEED               = 6,        /* 设置播放速度  Configure playing speed */
    NETDEV_PLAY_CTRL_SET_SINGLE_FRAME_SPEED     = 7,        /* 设置单帧播放  Configure single frame playing speed */
    NETDEV_PLAY_CTRL_UPDATE_M3U8URL             = 8         /* 更新M3u8URL  urlUpdate M3u8 url */
}NETDEV_VOD_PLAY_CTRL_E;

/**
 * @brief 回放.下载状态 枚举定义 Playback and download status Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVVodPlayStatus
{
    /** 播放状态  Play status */
    NETDEV_PLAY_STATUS_16_BACKWARD          = 0,            /* 16倍速后退播放  Backward at 16x speed */
    NETDEV_PLAY_STATUS_8_BACKWARD           = 1,            /* 8倍速后退播放  Backward at 8x speed */
    NETDEV_PLAY_STATUS_4_BACKWARD           = 2,            /* 4倍速后退播放  Backward at 4x speed */
    NETDEV_PLAY_STATUS_2_BACKWARD           = 3,            /* 2倍速后退播放  Backward at 2x speed */
    NETDEV_PLAY_STATUS_1_BACKWARD           = 4,            /* 正常速度后退播放  Backward at normal speed */
    NETDEV_PLAY_STATUS_HALF_BACKWARD        = 5,            /* 1/2倍速后退播放  Backward at 1/2 speed */
    NETDEV_PLAY_STATUS_QUARTER_BACKWARD     = 6,            /* 1/4倍速后退播放  Backward at 1/4 speed */
    NETDEV_PLAY_STATUS_QUARTER_FORWARD      = 7,            /* 1/4倍速播放  Play at 1/4 speed */
    NETDEV_PLAY_STATUS_HALF_FORWARD         = 8,            /* 1/2倍速播放  Play at 1/2 speed */
    NETDEV_PLAY_STATUS_1_FORWARD            = 9,            /* 正常速度前进播放  Forward at normal speed */
    NETDEV_PLAY_STATUS_2_FORWARD            = 10,           /* 2倍速前进播放  Forward at 2x speed */
    NETDEV_PLAY_STATUS_4_FORWARD            = 11,           /* 4倍速前进播放  Forward at 4x speed */
    NETDEV_PLAY_STATUS_8_FORWARD            = 12,           /* 8倍速前进播放  Forward at 8x speed */
    NETDEV_PLAY_STATUS_16_FORWARD           = 13,           /* 16倍速前进播放  Forward at 16x speed */
    NETDEV_PLAY_STATUS_2_FORWARD_IFRAME     = 14,           /* 2倍速前进播放(I帧) Forward at 2x speed(I frame) */
    NETDEV_PLAY_STATUS_4_FORWARD_IFRAME     = 15,           /* 4倍速前进播放(I帧) Forward at 4x speed(I frame) */
    NETDEV_PLAY_STATUS_8_FORWARD_IFRAME     = 16,           /* 8倍速前进播放(I帧) Forward at 8x speed(I frame) */
    NETDEV_PLAY_STATUS_16_FORWARD_IFRAME    = 17,           /* 16倍速前进播放(I帧) Forward at 16x speed(I frame) */
    NETDEV_PLAY_STATUS_2_BACKWARD_IFRAME    = 18,           /* 2倍速后退播放(I帧) Backward at 2x speed(I frame) */
    NETDEV_PLAY_STATUS_4_BACKWARD_IFRAME    = 19,           /* 4倍速后退播放(I帧) Backward at 4x speed(I frame) */
    NETDEV_PLAY_STATUS_8_BACKWARD_IFRAME    = 20,           /* 8倍速后退播放(I帧) Backward at 8x speed(I frame) */
    NETDEV_PLAY_STATUS_16_BACKWARD_IFRAME   = 21,           /* 16倍速后退播放(I帧) Backward at 16x speed(I frame) */
    NETDEV_PLAY_STATUS_INTELLIGENT_FORWARD  = 22,           /* 智能播放 Intelligent forward */
    NETDEV_PLAY_STATUS_1_FRAME_FORWD        = 23,           /* 单帧前进播放  Forward at 1 frame speed */
    NETDEV_PLAY_STATUS_1_FRAME_BACK         = 24,           /* 单帧后退播放 Backward at 1 frame speed */

    NETDEV_PLAY_STATUS_40_FORWARD           = 25,           /* 40倍速前进播放 Forward at 40x speed*/

    NETDEV_PLAY_STATUS_32_FORWARD_IFRAME    = 26,           /* 32倍速抽帧前进播放 Forward at 32x speed(I frame)*/
    NETDEV_PLAY_STATUS_32_BACKWARD_IFRAME   = 27,           /* 32倍速抽帧后退播放 Backward at 32x speed(I frame)*/
    NETDEV_PLAY_STATUS_64_FORWARD_IFRAME    = 28,           /* 64倍速抽帧前进播放 Forward at 64x speed(I frame)*/
    NETDEV_PLAY_STATUS_64_BACKWARD_IFRAME   = 29,           /* 64倍速抽帧后退播放 Backward at 64x speed(I frame)*/
    NETDEV_PLAY_STATUS_128_FORWARD_IFRAME   = 30,           /* 128倍速抽帧前进播放 Forward at 128x speed(I frame)*/
    NETDEV_PLAY_STATUS_128_BACKWARD_IFRAME  = 31,           /* 128倍速抽帧后退播放 Backward at 128x speed(I frame)*/
    NETDEV_PLAY_STATUS_256_FORWARD_IFRAME   = 32,           /* 256倍速抽帧前进播放 Forward at 256x speed(I frame)*/
    NETDEV_PLAY_STATUS_256_BACKWARD_IFRAME  = 33,           /* 256倍速抽帧后退播放 Backward at 256x speed(I frame)*/

    NETDEV_PLAY_STATUS_32_FORWARD           = 34,           /* 32倍速前进播放 */
    NETDEV_PLAY_STATUS_32_BACKWARD          = 35,           /* 32倍速后退播放 */

    NETDEV_PLAY_STATUS_INVALID
}NETDEV_VOD_PLAY_STATUS_E;

/**
 * @brief 录像下载速度  Recording download speed
 * @attention 无 None
 */
typedef enum tagNETDEVDownloadSpeed
{
    NETDEV_DOWNLOAD_SPEED_ONE           = 0,            /* 一倍速 */
    NETDEV_DOWNLOAD_SPEED_TWO           = 1,            /* 二倍速 */
    NETDEV_DOWNLOAD_SPEED_FOUR          = 2,            /* 四倍速 */
    NETDEV_DOWNLOAD_SPEED_EIGHT         = 3,            /* 八倍速 */
    NETDEV_DOWNLOAD_SPEED_TWO_IFRAME    = 4,            /* 二倍速I帧 */
    NETDEV_DOWNLOAD_SPEED_FOUR_IFRAME   = 5,            /* 四倍速I帧 */
    NETDEV_DOWNLOAD_SPEED_EIGHT_IFRAME  = 6,            /* 八倍速I帧 */
    NETDEV_DOWNLOAD_SPEED_HALF          = 7,            /* 1/2倍速  1/2x */
    NETDEV_DOWNLOAD_SPEED_FORTY         = 8,            /* 40倍速 40x */

    NETDEV_DOWNLOAD_SPEED_INVALID       = 0xFF          /* 无效值 */
}NETDEV_E_DOWNLOAD_SPEED_E;

/**
 * @brief 录像存储类型 枚举定义 Recording storage type Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVStoreType
{
    NETDEV_TYPE_STORE_TYPE_ALL                  = 0,            /* 常规存储  All */

    NETDEV_EVENT_STORE_TYPE_NORMAL              = 1,            /* 常规存储，携带文件大小,  All */
    NETDEV_EVENT_STORE_TYPE_MOTIONDETECTION     = 4,            /* 运动检测事件存储，携带文件大小  Motion detection */
    NETDEV_EVENT_STORE_TYPE_DIGITALINPUT        = 5,            /* 数字输入事件存储，携带文件大小  Digital input */
    NETDEV_EVENT_STORE_TYPE_VIDEOLOSS           = 7,            /* 视频丢失事件存储，携带文件大小  Video loss */

    NETDEV_TYPE_STORE_TYPE_INVALID              = 0xFF          /* 无效值  Invalid value */
}NETDEV_PLAN_STORE_TYPE_E;

/**
* @brief 音频位宽
* @attention 无
*/
typedef enum tagNetDevAudioSampleFormatType
{
    NETDEV_AUDIO_SAMPLE_FMT_NONE = -1,
    NETDEV_AUDIO_SAMPLE_FMT_U8      = 0,            /* 无符号8位整型 */
    NETDEV_AUDIO_SAMPLE_FMT_S16     = 1,            /* 有符号16位整型 */
    NETDEV_AUDIO_SAMPLE_FMT_S32     = 2,            /* 有符号32位整型 */
    NETDEV_AUDIO_SAMPLE_FMT_FLT     = 3,            /* 浮点型 */
    NETDEV_AUDIO_SAMPLE_FMT_DBL     = 4             /* double型 */
}NETDEV_AUDIO_SAMPLE_FORMAT_E;

/**
 * @brief 异常回调的消息类型 枚举定义 Exception callback message types Enumeration definition 
 * @attention 无 None
 */
typedef enum tagNETDEVException
{
    /* 回放业务异常上报  Playback exceptions report 300~399 */
    NETDEV_EXCEPTION_REPORT_VOD_END             = 300,          /* 回放结束  Playback ended*/
    NETDEV_EXCEPTION_REPORT_VOD_ABEND           = 301,          /* 回放异常  Playback exception occured */
    NETDEV_EXCEPTION_REPORT_BACKUP_END          = 302,          /* 备份结束  Backup ended */
    NETDEV_EXCEPTION_REPORT_BACKUP_DISC_OUT     = 303,          /* 磁盘被拔出  Disk removed */
    NETDEV_EXCEPTION_REPORT_BACKUP_DISC_FULL    = 304,          /* 磁盘已满  Disk full */
    NETDEV_EXCEPTION_REPORT_BACKUP_ABEND        = 305,          /* 其他原因导致备份失败   Backup failure caused by other reasons */

    NETDEV_EXCEPTION_EXCHANGE                   = 0x8000,       /* 用户交互时异常（用户保活超时）  Exception occurred during user interaction (keep-alive timeout) */
    NETDEV_EXCEPTION_REPORT_ALARM_INTERRUPT     = 0x8001,       /* 告警上报异常结束 保活失败或者长连接断开 Failure to report abnormal termination of life preservation or disconnection of long connection */

    NETDEV_EXCEPTION_REPORT_MAX,                                /* 最大值  Maximum value */
    NETDEV_EXCEPTION_REPORT_NOT_VALID_PERIOD,                   /* 不在有效期内 Not Valid period */
    NETDEV_EXCEPTION_REPORT_NOT_VALID_TIME,                     /* 不在有效时段内 Not Valid Time */

    NETDEV_EXCEPTION_REPORT_INVALID             = 0xFFFF        /* 无效值  Invalid value */
}NETDEV_EXCEPTION_TYPE_E;

/**
 * @brief 告警配置操作 枚举定义  Alarm configuration operation Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVAlarmTypeEn
{
    NETDEV_ALARM_MOVE_DETECT                = 1,        /* 运动检测告警  Motion detection alarm */
    NETDEV_ALARM_MOVE_DETECT_RECOVER        = 2,        /* 运动检测告警恢复  Motion detection alarm recover */
    NETDEV_ALARM_VIDEO_LOST                 = 3,        /* 视频丢失告警  Video loss alarm */
    NETDEV_ALARM_VIDEO_LOST_RECOVER         = 4,        /* 视频丢失告警恢复  Video loss alarm recover */
    NETDEV_ALARM_VIDEO_TAMPER_DETECT        = 5,        /* 遮挡侦测告警  Tampering detection alarm */
    NETDEV_ALARM_VIDEO_TAMPER_RECOVER       = 6,        /* 遮挡侦测告警恢复  Tampering detection alarm recover */
    NETDEV_ALARM_INPUT_SWITCH               = 7,        /* 输入开关量告警  boolean input alarm */
    NETDEV_ALARM_INPUT_SWITCH_RECOVER       = 8,        /* 输入开关量告警恢复  Boolean input alarm recover */
    NETDEV_ALARM_TEMPERATURE_HIGH           = 9,        /* 高温告警  High temperature alarm */
    NETDEV_ALARM_TEMPERATURE_LOW            = 10,       /* 低温告警  Low temperature alarm */
    NETDEV_ALARM_TEMPERATURE_RECOVER        = 11,       /* 温度告警恢复  Temperature alarm recover */
    NETDEV_ALARM_AUDIO_DETECT               = 12,       /* 音频异常检测告警  Audio detection alarm */
    NETDEV_ALARM_AUDIO_DETECT_RECOVER       = 13,       /* 音频异常检测告警恢复  Audio detection alarm recover */
    NETDEV_ALARM_SERVER_FAULT               = 18,       /* 服务器故障 */
    NETDEV_ALARM_SERVER_NORMAL              = 19,       /* 服务器故障恢复 */
    

    NETDEV_ALARM_REPORT_DEV_ONLINE          = 201,       /* 设备上线告警 */
    NETDEV_ALARM_REPORT_DEV_OFFLINE         = 202,       /* 设备下线告警 */
    NETDEV_ALARM_REPORT_DEV_REBOOT          = 203,       /* 设备重启  Device restart */
    NETDEV_ALARM_REPORT_DEV_SERVICE_REBOOT  = 204,       /* 服务重启  Service restart */
    NETDEV_ALARM_REPORT_DEV_CHL_ONLINE      = 205,       /* 视频通道: 上线 */
    NETDEV_ALARM_REPORT_DEV_CHL_OFFLINE     = 206,       /* 视频通道: 下线 */
    NETDEV_ALARM_REPORT_DEV_DELETE_CHL      = 207,       /* 视频通道: 删除 */

    NETDEV_ALARM_DEVICE_HIGHTEMP            = 246,       /* 异常类：设备高温 */
    NETDEV_ALARM_DEVICE_LOWTEMP             = 247,       /* 异常类：设备低温 */
    NETDEV_ALARM_FAN_FAULT                  = 248,       /* 异常类：风扇故障 */
    NETDEV_ALARM_LEDBOX_HIGHTEMP            = 249,       /* 异常类：电箱高温 */
    NETDEV_ALARM_LEDBOX_SMOKE               = 250,       /* 异常类：电箱烟雾告警 */
    NETDEV_ALARM_DEVICE_HIGHTEMP_RECOVER    = 251,       /* 异常类:设备温度恢复 */
    NETDEV_ALARM_DEVICE_LOWTEMP_RECOVER     = 252,       /* 异常类:设备温度恢复 */
    NETDEV_ALARM_FAN_FAULT_RECOVER          = 253,       /* 异常类:风扇故障恢复 */
    NETDEV_ALARM_LEDBOX_HIGHTEMP_RECOVER    = 254,       /* 异常类:电箱高温恢复 */
    NETDEV_ALARM_LEDBOX_SMOKE_RECOVER       = 255,       /* 异常类:电箱烟雾告警恢复 */

    /* ND 上报告警模块 */
    NETDEV_ALARM_NET_FAILED                 = 401,      /* 会话网络错误 Network error */
    NETDEV_ALARM_NET_TIMEOUT                = 402,      /* 会话网络超时 Network timeout */
    NETDEV_ALARM_SHAKE_FAILED               = 403,      /* 会话交互错误 Interaction error */
    NETDEV_ALARM_STREAMNUM_FULL             = 404,      /* 流数已经满 Stream full */
    NETDEV_ALARM_STREAM_THIRDSTOP           = 405,      /* 第三方停止流 Third party stream stopped */
    NETDEV_ALARM_FILE_END                   = 406,      /* 文件结束 File ended */
    NETDEV_ALARM_RTMP_CONNECT_FAIL          = 407,      /* RTMP连接失败 */
    NETDEV_ALARM_RTMP_INIT_FAIL             = 408,      /* RTMP初始化失败*/
    NETDEV_ALARM_STREAM_DOWNLOAD_OVER       = 409,      /* 一体机国标流下载完成 */
    NETDEV_ALARM_PLAYBACK_FINISH            = 410,      /* 回放结束 */
    NETDEV_ALARM_VIDEO_RECORD_PART          = 411,      /* 录像分段 */
    NETDEV_ALARM_FISHEYE_STREAM_EXIST       = 412,      /* 鱼眼流存在,仅用于上报 */
    NETDEV_ALARM_FISHEYE_STREAM_NOT_EXIST   = 413,      /* 鱼眼流不存在,仅用于上报 */
    NETDEV_ALARM_PTZ_RESOUCE_FAIL           = 414,      /* 四目全景ptz资源错误 */
    NETDEV_ALARM_PTZ_STREAM_EXIST           = 415,      /* 四目全景ptz流存在，仅用于上报 */
    NETDEV_ALARM_STREAM_NOT_EXIST           = 416,      /* 四目全景ptz流不存在，仅用于上报 */
    NETDEV_ALARM_INNER_TIMEOUT              = 417,      /* 内部处理超时 */
    NETDEV_ALARM_STREAM_NOT_READY           = 418,      /* 流未就绪 */
    NETDEV_ALARM_KEEP_ALIVE_FAILED          = 419,      /* 保活失败 */
    NETDEV_ALARM_OVER_ABILITY               = 420,      /* 回放能力不足 */
    NETDEV_ALARM_UNAUTHORIZED               = 421,      /* 未通过认证 */
    NETDEV_ALARM_FORIBIDDEN                 = 422,      /* 禁止 */
    NETDEV_ALARM_METHOD_NOT_ALLOWED         = 423,      /* 不允许该方法 */
    NETDEV_ALARM_PRECONDITION_FAILED        = 424,      /* 预处理失败 */
    NETDEV_ALARM_SESSION_NOT_FOUND          = 425,      /* 找不到会话 */
    NETDEV_ALARM_NOT_ENOUGH_BANDWIDTH2      = 426,      /* 带宽不足(RTSP) */
    NETDEV_ALARM_REALPLAY_ESTABLISHED       = 427,      /* 实况业务已经建立 */
    NETDEV_ALARM_REALPLAY_RES_BUSY          = 428,      /* 实况业务显示资源忙 */
    NETDEV_ALARM_MULTICAST_DISABLED         = 429,      /* 组播使能关闭 */
    NETDEV_ALARM_MULTICAST_PORT_OCCUPIED    = 430,      /* 组播端口已被占用 */
    NETDEV_ALARM_MULTICAST_PORT_EXHAUSTED   = 431,      /* 组播端口已耗尽 */
    NETDEV_ALARM_MULTICAST_USER_NOT_EXIST   = 432,      /* 组播用户不存在 */
    NETDEV_ALARM_CHANNEL_NOT_ONLINE         = 433,      /* 通道不在线 */
    NETDEV_ALARM_TALKBACK_ENCODED_INVALID   = 434,      /* 语音对讲资源编码无效 */
    NETDEV_ALARM_VOICE_RES_USED_BY_TALKBACK = 435,      /* 语音资源已被对讲使用 */
    NETDEV_ALARM_TALKBACK_EXISTS            = 436,      /* 语音对讲已存在 */
    NETDEV_ALARM_VOICE_WORK_NOT_EXIST       = 437,      /* 语音业务不存在 */
    NETDEV_ALARM_TALKBACK_TIMEOUT           = 438,      /* 建立语音对讲业务超时 */
    NETDEV_ALARM_TALKBACK_ERROR             = 439,      /* 语音对讲失败 */

    NETDEV_ALARM_DISK_ERROR                         = 601,      /* 设备磁盘错误  Disk error */
    NETDEV_ALARM_SYS_DISK_ERROR                     = 602,      /* 系统磁盘错误  Disk error */
    NETDEV_ALARM_DISK_ONLINE                        = 603,      /* 设备磁盘上线 Disk online */
    NETDEV_ALARM_SYS_DISK_ONLINE                    = 604,      /* 系统磁盘上线 Disk online */
    NETDEV_ALARM_DISK_OFFLINE                       = 605,      /* 设备磁盘离线 */
    NETDEV_ALARM_SYS_DISK_OFFLINE                   = 606,      /* 系统磁盘离线 */
    NETDEV_ALARM_DISK_ABNORMAL                      = 607,      /* 磁盘异常 Disk abnormal */
    NETDEV_ALARM_DISK_ABNORMAL_RECOVER              = 608,      /* 磁盘异常恢复 Disk abnormal recover */
    NETDEV_ALARM_DISK_STORAGE_WILL_FULL             = 609,      /* 磁盘存储空间即将满 Disk StorageGoingfull */
    NETDEV_ALARM_DISK_STORAGE_WILL_FULL_RECOVER     = 610,      /* 磁盘存储空间即将满恢复 Disk StorageGoingfull recover */
    NETDEV_ALARM_DISK_STORAGE_IS_FULL               = 611,      /* 设备存储空间满 StorageIsfull */
    NETDEV_ALARM_SYS_DISK_STORAGE_IS_FULL           = 612,      /* 系统存储空间满 StorageIsfull */
    NETDEV_ALARM_DISK_STORAGE_IS_FULL_RECOVER       = 613,      /* 存储空间满恢复 StorageIsfull recover */
    NETDEV_ALARM_DISK_RAID_DISABLED_RECOVER         = 614,      /* 阵列损坏恢复 RAIDDisabled recover */
    NETDEV_ALARM_DISK_RAID_DEGRADED                 = 615,      /* 设备阵列衰退 RAIDDegraded */
    NETDEV_ALARM_SYS_DISK_RAID_DEGRADED             = 616,      /* 系统阵列衰退 RAIDDegraded */
    NETDEV_ALARM_DISK_RAID_DISABLED                 = 617,      /* 设备阵列损坏 RAIDDisabled */
    NETDEV_ALARM_SYS_DISK_RAID_DISABLED             = 618,      /* 系统阵列损坏 RAIDDisabled */
    NETDEV_ALARM_DISK_RAID_DEGRADED_RECOVER         = 619,      /* 阵列衰退恢复 RAIDDegraded recover */
    NETDEV_ALARM_STOR_GO_FULL                       = 620,      /* 设备存储即将满告警 */
    NETDEV_ALARM_SYS_STOR_GO_FULL                   = 621,      /* 系统存储即将满告警 */
    NETDEV_ALARM_ARRAY_NORMAL                       = 622,      /* 设备阵列正常 */
    NETDEV_ALARM_SYS_ARRAY_NORMAL                   = 623,      /* 系统阵列正常 */
    NETDEV_ALARM_DISK_RAID_RECOVERED                = 624,      /* 阵列恢复正常 RAIDDegraded */
    NETDEV_ALARM_STOR_ERR                           = 625,      /* 设备存储错误  Storage error */
    NETDEV_ALARM_SYS_STOR_ERR                       = 626,      /* 系统存储错误  Storage error */
    NETDEV_ALARM_STOR_ERR_RECOVER                   = 627,      /* 存储错误恢复  Storage error recover */
    NETDEV_ALARM_STOR_DISOBEY_PLAN                  = 628,      /* 未按计划存储  Not stored as planned */
    NETDEV_ALARM_STOR_DISOBEY_PLAN_RECOVER          = 629,      /* 未按计划存储恢复  Not stored as planned recover */

    NETDEV_ALARM_BANDWITH_CHANGE                    = 801,      /* 设备出口带宽变更 */
    NETDEV_ALARM_VIDEOENCODER_CHANGE                = 802,      /* 设备码流配置变更告警 */
    NETDEV_ALARM_IP_CONFLICT                        = 803,      /* IP冲突异常告警 IP conflict exception alarm*/
    NETDEV_ALARM_IP_CONFLICT_CLEARED                = 804,      /* IP冲突异常告警恢复IP conflict exception alarm recovery */
    NETDEV_ALARM_NET_OFF                            = 805,      /* 网络断开异常告警 */
    NETDEV_ALARM_NET_RESUME_ON                      = 806,      /* 网络断开恢复告警 */

    NETDEV_ALRAM_CONFLAG_DETECT                     = 920,      /* 火点告警 Conflagration detection alarm */

    NETDEV_ALARM_ILLEGAL_ACCESS                     = 1001,          /* 设备非法访问  Illegal access */
    NETDEV_ALARM_SYS_ILLEGAL_ACCESS                 = 1002,          /* 系统非法访问  Illegal access */
    NETDEV_ALARM_LINE_CROSS                         = 1003,          /* 越界告警  Line cross */
    NETDEV_ALARM_OBJECTS_INSIDE                     = 1004,          /* 区域入侵  Objects inside */
    NETDEV_ALARM_FACE_RECOGNIZE                     = 1005,          /* 人脸识别  Face recognize */
    NETDEV_ALARM_IMAGE_BLURRY                       = 1006,          /* 图像虚焦  Image blurry */
    NETDEV_ALARM_SCENE_CHANGE                       = 1007,          /* 场景变更  Scene change */
    NETDEV_ALARM_SMART_TRACK                        = 1008,          /* 智能跟踪  Smart track */
    NETDEV_ALARM_LOITERING_DETECTOR                 = 1009,          /* 徘徊检测  Loitering Detector */
    NETDEV_ALARM_BANDWIDTH_CHANGE                   = 1010,          /* 带宽变更  Bandwidth change */
    NETDEV_ALARM_ALLTIME_FLAG_END                   = 1011,          /* 无布防告警结束标记  End marker of alarm without arming schedule */
    NETDEV_ALARM_MEDIA_CONFIG_CHANGE                = 1012,          /* 编码参数变更 media configurationchanged */
    NETDEV_ALARM_REMAIN_ARTICLE                     = 1013,          /*物品遗留告警  Remain article*/
    NETDEV_ALARM_PEOPLE_GATHER                      = 1014,          /* 人员聚集告警 People gather alarm*/
    NETDEV_ALARM_ENTER_AREA                         = 1015,          /* 进入区域 Enter area*/
    NETDEV_ALARM_LEAVE_AREA                         = 1016,          /* 离开区域 Leave area*/
    NETDEV_ALARM_ARTICLE_MOVE                       = 1017,          /* 物品搬移 Article move*/
    NETDEV_ALARM_SMART_FACE_MATCH_LIST                  = 1018,       /* 人脸识别黑名单报警 */
    NETDEV_ALARM_SMART_FACE_MATCH_LIST_RECOVER          = 1019,       /* 人脸识别黑名单报警恢复 */
    NETDEV_ALARM_SMART_FACE_MISMATCH_LIST               = 1020,       /* 人脸识别不匹配报警 */
    NETDEV_ALARM_SMART_FACE_MISMATCH_LIST_RECOVER       = 1021,       /* 人脸识别不匹配报警恢复 */
    NETDEV_ALARM_SMART_VEHICLE_MATCH_LIST               = 1022,       /* 车辆识别匹配报警 */
    NETDEV_ALARM_SMART_VEHICLE_MATCH_LIST_RECOVER       = 1023,       /* 车辆识别匹配报警恢复 */
    NETDEV_ALARM_SMART_VEHICLE_MISMATCH_LIST            = 1024,       /* 车辆识别不匹配报警 */
    NETDEV_ALARM_SMART_VEHICLE_MISMATCH_LIST_RECOVER    = 1025,       /* 车辆识别不匹配报警回复 */
    NETDEV_ALARM_IMAGE_BLURRY_RECOVER               = 1026,         /* 图像虚焦告警恢复  Image blurry recover */
    NETDEV_ALARM_SMART_TRACK_RECOVER                = 1027,         /* 智能跟踪告警恢复  Smart track recover */
    NETDEV_ALARM_SMART_READ_ERROR_RATE              = 1028,         /* 底层数据读取错误率Error reding the underlying data */
    NETDEV_ALARM_SMART_SPIN_UP_TIME                 = 1029,         /* 主轴起旋时间  Rotation time of spindle */
    NETDEV_ALARM_SMART_START_STOP_COUNT             = 1030,         /* 启停计数 Rev. Stop counting*/
    NETDEV_ALARM_SMART_REALLOCATED_SECTOR_COUNT     = 1031,         /* 重映射扇区计数  Remap sector count*/
    NETDEV_ALARM_SMART_SEEK_ERROR_RATE              = 1032,         /* 寻道错误率 Trace error rate*/
    NETDEV_ALARM_SMART_POWER_ON_HOURS               = 1033,         /* 通电时间累计，出厂后通电的总时间，一般磁盘寿命三万小时 */
    NETDEV_ALARM_SMART_SPIN_RETRY_COUNT             = 1034,         /* 主轴起旋重试次数 */
    NETDEV_ALARM_SMART_CALIBRATION_RETRY_COUNT      = 1035,         /* 磁头校准重试计数 */
    NETDEV_ALARM_SMART_POWER_CYCLE_COUNT            = 1036,         /* 通电周期计数 */
    NETDEV_ALARM_SMART_POWEROFF_RETRACT_COUNT       = 1037,         /* 断电返回计数 */
    NETDEV_ALARM_SMART_LOAD_CYCLE_COUNT             = 1038,         /* 磁头加载计数 */
    NETDEV_ALARM_SMART_TEMPERATURE_CELSIUS          = 1039,         /* 温度 */
    NETDEV_ALARM_SMART_REALLOCATED_EVENT_COUNT      = 1040,         /* 重映射事件计数 */
    NETDEV_ALARM_SMART_CURRENT_PENDING_SECTOR       = 1041,         /* 当前待映射扇区计数 */
    NETDEV_ALARM_SMART_OFFLINE_UNCORRECTABLE        = 1042,         /* 脱机无法校正的扇区计数 */
    NETDEV_ALARM_SMART_UDMA_CRC_ERROR_COUNT         = 1043,         /* 奇偶校验错误率  */
    NETDEV_ALARM_SMART_MULTI_ZONE_ERROR_RATE        = 1044,         /* 多区域错误率 */
    NETDEV_ALARM_RESOLUTION_CHANGE                  = 1045,         /* 分辨率变更 */
    NETDEV_ALARM_MANUAL                             = 1401,         /* 手动告警 */
    NETDEV_ALARM_ALARMHOST_COMMON                   = 1402,         /* 报警点事件 */
    NETDEV_ALARM_DOORHOST_COMMON                    = 1403,         /* 门禁事件 */
    NETDEV_ALARM_FACE_NOT_MATCH                     = 1411,         /* 人脸对比失败 */
    NETDEV_ALARM_FACE_MATCH_SUCCEED                 = 1412,         /* 人脸对比成功 */

    NETDEV_ALARM_VEHICLE_BLACK_LIST                 = 1420,         /* 车辆识别黑名单报警 */
    NETDEV_ALARM_HUMAN_SHAPE_DETECTION              = 1421,         /* 人形检测 */
    NETDEV_ALARM_HUMAN_SHAPE_DETECTION_RECOVER      = 1422,         /* 人形检测告警恢复 */

    NETDEV_ALARM_INVALID                            = 0xFFFF        /* 无效值  Invalid value */
}NETDEV_ALARM_TYPE_E;

/**
* @enum tagNETDEVPlayerRunInfoType
* @brief 解码层上报运行信息的类型的枚举定义
* @attention 无
*/
typedef enum tagNETDEVPlayerRunInfoType
{
    NETDEV_PLAYER_RUN_INFO_RECORD_VIDEO        = 1,        /**< 本地录像过程中上报运行信息 */
    NETDEV_PLAYER_RUN_INFO_MEDIA_PROCESS       = 2,        /**< 视频媒体处理过程中的上报运行信息 */
    NETDEV_PLAYER_RUN_INFO_SERIES_SNATCH       = 3,        /**< 连续抓拍过程中上报运行信息 */
    NETDEV_PLAYER_RUN_INFO_MEDIA_VOICE         = 4,        /**< 语音业务过程中上报运行信息 */
    NETDEV_PLAYER_RUN_INFO_MEDIA_NOT_IDENTIFY  = 5,        /**< 码流无法识别 */
    NETDEV_PLAYER_RUN_INFO_RECV_PACKET_NUM     = 6,        /**< 周期内接收到的包数 */
    NETDEV_PLAYER_RUN_INFO_RECV_BYTE_NUM       = 7,        /**< 周期内接收到的字节数 */
    NETDEV_PLAYER_RUN_INFO_VIDEO_FRAME_NUM     = 8,        /**< 周期内解析的视频帧数 */
    NETDEV_PLAYER_RUN_INFO_AUDIO_FRAME_NUM     = 9,        /**< 周期内解析的音频帧数 */
    NETDEV_PLAYER_RUN_INFO_LOST_PACKET_RATIO   = 10,       /**< 周期内丢包率统计信息（单位为0.01%） */
    NETDEV_PLAYER_RUN_INFO_MEDIA_PLAY_PROGRESS = 11,       /**< 媒体中携带的进度信息 */
    NETDEV_PLAYER_RUN_INFO_MEDIA_PLAY_END      = 12,       /**< 媒体中携带的播放结束 */
    NETDEV_PLAYER_RUN_INFO_MEDIA_ABNORMAL      = 13,       /**< 媒体处理异常 */
    NETDEV_PLAYER_RUN_INFO_CODEC               = 14,       /**< 编解码器 */
    NETDEV_PLAYER_RUN_INFO_STREAM              = 15,       /**< 网络流或输入流播放 */
    NETDEV_PLAYER_RUN_INFO_PLAYBACK_FINISH     = 16,       /**< 回放结束 */
    NETDEV_PLAYER_RUN_INFO_SNATCH              = 17,       /**< 截图过程中的上报运行信息 */
    NETDEV_PLAYER_RUN_INFO_INVALID             = 0xff
}NETDEV_PLAYER_RUN_INFO_TYPE_E;

/**
 * @brief 告警资源类型 枚举定义  Alarm configuration operation Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVAlarmSrcTypeEn
{
    NETDEV_ALARM_SRC_LOCAL_HARD_DISK                            = 0,        /*本地硬盘*/
    NETDEV_ALARM_SRC_EX_CABINET_1_STORAGE_DISK                  = 1,        /*拓展柜-1存储盘*/
    NETDEV_ALARM_SRC_EX_CABINET_2_STORAGE_DISK                  = 2,        /*拓展柜-2存储盘*/
    NETDEV_ALARM_SRC_ARRAY_STORAGE_DISK                         = 3,        /*阵列存储盘*/
    NETDEV_ALARM_SRC_NAS_STORAGE_DISK                           = 4,        /*NAS存储盘*/
    NETDEV_ALARM_SRC_SAN_STORAGE_DISK                           = 5,        /*SAN存储盘*/
    NETDEV_ALARM_SRC_ESATA_STORAGE_DISK                         = 6,        /*eSATA存储盘*/
    NETDEV_ALARM_SRC_SD_STORAGE_DISK                            = 7,        /*SD存储盘*/
    NETDEV_ALARM_SRC_VIDEO_CHANNEL                              = 8,        /*视频通道*/
    NETDEV_ALARM_SRC_ALARM_INPUT_CHANNEL                        = 9,        /*报警输入通道*/
    NETDEV_ALARM_SRC_SYSTEM                                     = 10,       /*系统*/

    NETDEV_ALARM_SRC_AUDIO_CHANNEL                              = 11,       /*音频通道*/
    NETDEV_ALARM_SRC_DECODE_CHANNEL                             = 12,       /*解码通道*/
    NETDEV_ALARM_SRC_ALARM_OUTPUT_CHANNEL                       = 13,       /*报警输出通道*/
    NETDEV_ALARM_SRC_ACCESS_CONTROL_CHANNEL                     = 14,       /*门禁通道*/
    NETDEV_ALARM_SRC_ALARM_POINT_CHANNEL                        = 15,       /*报警点通道*/
    NETDEV_ALARM_SRC_EMERGENCY_BELL_CHANNEL                     = 16,       /*紧急铃通道(第三方告警)*/
    NETDEV_ALARM_SRC_DEV                                        = 17,       /*设备类*/

    NETDEV_ALARM_SRC_INVALID                                    = 0xFFFF    /* 无效值  Invalid value */
}NETDEV_ALARM_SRC_TYPE_E;

/**
 * @brief 资源变更子事件类型 枚举定义 Type of resource change subevent
 * @attention 无 None
 */
typedef enum tagNETDEVResChangeSubeventType
{
    NETDEV_RES_CHANGE_SUBEVENT_ADD                                  = 0,             /* 增加 */
    NETDEV_RES_CHANGE_SUBEVENT_DELETE                               = 1,             /* 删除 */
    NETDEV_RES_CHANGE_SUBEVENT_MODIFY                               = 2,             /* 修改 */
    NETDEV_RES_CHANGE_SUBEVENT_UP_LINE                              = 3,             /* 上线 */
    NETDEV_RES_CHANGE_SUBEVENT_OFFLINE                              = 4,             /* 离线 */
    NETDEV_RES_CHANGE_SUBEVENT_EMAP_ALARM_REPORT                    = 5,             /* Emap告警上报 */

    NETDEV_RES_CHANGE_SUBEVENT_INVALID                              = 0xff           /* 无效值  Invalid value */
}NETDEV_RES_CHANGE_SUBEVENT_TYPE_E;
/**
 * @brief 资源变更类型 枚举定义 Type of resource change
 * @attention 无 None
 */
typedef enum tagNETDEVResType
{
    NETDEV_RES_USER_RESOURCE                                 = 0,             /* 用户资源 */
    NETDEV_RES_EQUIPMENT_RESOURCE                            = 1,             /* 设备资源 */
    NETDEV_RES_CHANNEL_RESOURCE                              = 2,             /* 通道资源 */
    NETDEV_RES_USER_PERMISSION_RESOURCES                     = 3,             /* 用户权限资源 */
    NETDEV_RES_ROUND_TOUR_RESOURCES                          = 4,             /* 轮巡资源 */
    NETDEV_RES_HOT_RESOURCES                                 = 5,             /* 热点资源 */
    NETDEV_RES_GEOTHERMAL_RESOURCES                          = 6,             /* 热区资源 */
    NETDEV_RES_ALARM_RESOURCES                               = 7,             /* 告警资源 */
    NETDEV_RES_TIME_TEMPLATE                                 = 8,             /* 时间模板 */
    NETDEV_RES_SYSTEM_PERMISSION_RESOURCES                   = 9,             /* 系统权限资源 */
    NETDEV_RES_DEVICE_PERMISSION_RESOURCES                   = 10,            /* 设备权限资源 */
    NETDEV_RES_ORGANIZE_RESOURCES                            = 11,            /* 组织资源 */
    NETDEV_RES_ALARM_TASK_RESOURCES                          = 12,            /* 报警任务资源 */
    NETDEV_RES_MASTER_SLAVE_RESOURCES                        = 13,            /* 主从资源 */
    NETDEV_RES_TV_WALL_INFO                                  = 14,            /* 电视墙信息 */
    NETDEV_RES_TV_WALL_SCENE_RESOURCES                       = 15,            /* 电视墙场景资源 */
    NETDEV_RES_TV_WALL_WINDOW_RESOURCES                      = 16,            /* 电视墙窗口资源 */
    NETDEV_RES_TV_WALL_VIRTUAL_LED_RESOURCES                 = 17,            /* 电视墙虚拟LED资源 */
    NETDEV_RES_BROADCAST_GROUP_INFOR_CHANGES                 = 18,            /* 广播组信息变更 */
    NETDEV_RES_VIRTUAL_ORGANIZATION_RESOURCES                = 19,            /* 虚拟组织资源 */
    NETDEV_RES_USER_ROLE_RESOURCES                           = 20,            /* 用户角色资源 */
    NETDEV_RES_ROLE_ORGANIZE_SDHOW_TREE_RESOURCES            = 21,            /* 角色组织展示树资源 */
    NETDEV_RES_IMAGE_RESOURCES                               = 22,            /* 图片资源 */
    NETDEV_RES_CRUISE_RESOURCES                              = 23,            /* 巡航资源 */
    NETDEV_RES_RECORD_TRACE_RESOURCES                        = 24,            /* 录制轨迹资源 */
    NETDEV_RES_ACCESS_CONTROL_PERSONNEL_RESOURCES            = 25,            /* 门禁人员资源 */
    NETDEV_RES_ACCESS_CONTROL_CARD_RESOURCES                 = 26,            /* 门禁卡资源 */
    NETDEV_RES_TV_WALL_LIST                                  = 27,            /* 电视墙列表 */
    NETDEV_RES_TV_WALL_SCENE_SWITCHING                       = 28,            /* 电视墙场景切换 */
    NETDEV_RES_FACE_DATABASE_RESOURCES                       = 29,            /* 人脸库资源 */
    NETDEV_RES_FACE_DATABASE_CUSTOM_ATTRIBUTE                = 30,            /* 人脸库自定义属性 */
    NETDEV_RES_FACE_MEMBER_RESOURCES                         = 31,            /* 人脸成员资源 */
    NETDEV_RES_FACE_CONTROL_RESOURCES                        = 32,            /* 人脸布控资源 */
    NETDEV_RES_INTELLIGENT_DETECTION_RESOURCES               = 33,            /* 智能检测资源 */
    NETDEV_RES_INVALID                                       = 0xff           /* 无效值  Invalid value */
}NETDEV_RES_CHANGE_TYPE_E;


/**
 * @brief 日志主类型枚举 枚举定义 Major types of logs Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVLogMainType
{
    /* 仅NVR支持 */
    NETDEV_LOG_MAIN_TYPE_ALL                                        = 0,                /* 全部类型的日志 NVR Logs of all types */
    NETDEV_LOG_MAIN_TYPE_ALARM                                      = 1,                /* 告警类  Alarms */
    NETDEV_LOG_MAIN_TYPE_EXCEPTION                                  = 2,                /* 异常类  Exceptions */
    NETDEV_LOG_MAIN_TYPE_OPERATION                                  = 3,                /* 操作类  Operations */
    NETDEV_LOG_MAIN_TYPE_MESSAGE                                    = 4,                /* 信息类  Messages */

    /* VMS操作日志主类型*/
    NETDEV_LOG_MAIN_TYPE_VMS_ALL                                    =  90,              /* 全部主类型 VMS Logs of all types */
    NETDEV_LOG_MAIN_TYPE_LOGIN                                      =  91,              /* 登录 Login */

    NETDEV_LOG_MAIN_TYPE_ORGANIZATION_CONFIG                        = 100,              /* 组织配置 Organization Config */
    NETDEV_LOG_MAIN_TYPE_USER_CONFIG                                = 101,              /* 用户配置 User Config */
    NETDEV_LOG_MAIN_TYPE_ROLE_CONFIG                                = 102,              /* 角色配置 Role Config */
    NETDEV_LOG_MAIN_TYPE_DEVICE_CONFIG                              = 103,              /* 设备配置 Device Config */
    NETDEV_LOG_MAIN_TYPE_CHANNE_LCONFIG                             = 104,              /* 通道配置 Channel Config */
    NETDEV_LOG_MAIN_TYPE_SERVER_CONFIG                              = 105,              /* 主从服务器配置 Server Config */
    NETDEV_LOG_MAIN_TYPE_PTZ_CONFIG                                 = 106,              /* 云台配置 PTZ Config */
    NETDEV_LOG_MAIN_TYPE_VIDEOWALL_CONFIG                           = 107,              /* 电视墙配置 Video Wall Config */
    NETDEV_LOG_MAIN_TYPE_EMAP_CONFIG                                = 108,              /* 地图配置 EMap Config */
    NETDEV_LOG_MAIN_TYPE_SYSTEM_CONFIG                              = 109,              /* 系统配置(含基本配置、硬盘配置、网络配置和系统维护) System Config */
    NETDEV_LOG_MAIN_TYPE_SEQUENCE_PLAN_CONFIG                       = 110,              /* 轮巡预案配置 Sequence Plan Config */
    NETDEV_LOG_MAIN_TYPE_NETWORK_KEYPAD_CONFIG                      = 111,              /* 网络键盘通道配置 Network Keypad Config */
    NETDEV_LOG_MAIN_TYPE_SEQUENCE_RESOURCE_CONFIG                   = 112,              /* 轮巡资源配置 Sequence Resource Config */
    NETDEV_LOG_MAIN_TYPE_HOT_SPOT_AND_ZONE_CONFIG                   = 113,              /* 热点、热区配置 Hot Spot And Zone Config */
    NETDEV_LOG_MAIN_TYPE_USER_TIME_TEMPLATE_CONFIG                  = 114,              /* 用户时间模板配置 User Time Template Config */
    NETDEV_LOG_MAIN_TYPE_SERVER_WORK_MODE                           = 115,              /* 服务器工作模式配置 Server Work Mode */
    NETDEV_LOG_MAIN_TYPE_PERMISSION_TIME_TEMPLATE_CONFIG            = 116,              /* 权限时间模板配置 Permission Time Template Config */
    NETDEV_LOG_MAIN_TYPE_TIME_CONFIG                                = 117,              /* 手动时间配置 Time Config */
    NETDEV_LOG_MAIN_TYPE_TIMESYNC_CONFIG                            = 118,              /* 时间同步 Time Sync Config */
    NETDEV_LOG_MAIN_TYPE_HOLIDAY_CONFIG                             = 119,              /* 假日启动时间 Holiday Config */
    NETDEV_LOG_MAIN_TYPE_NTPTIME_CONFIG                             = 120,              /* NTP时间配置 NTP Time Config */
    NETDEV_LOG_MAIN_TYPE_DST_CONFIG                                 = 121,              /* 夏令时配置 DST Config */
    NETDEV_LOG_MAIN_TYPE_RESRELATION_CONFIG                         = 122,              /* 关联资源配置 Resource Relation Config */
    NETDEV_LOG_MAIN_TYPE_DEVICE_TIME_SYNC                           = 123,              /* 设备时间同步 Device Time Sync */
    NETDEV_LOG_MAIN_TYPE_TCPIP_CONFIG                               = 124,              /* tcp/ip TCP/IP Config */
    NETDEV_LOG_MAIN_TYPE_EZCLOUD_CONFIG                             = 125,              /* 宇视云 EZCloud Config */
    NETDEV_LOG_MAIN_TYPE_DDNS_CONFIG                                = 126,              /* DDNS DDNS Config */
    NETDEV_LOG_MAIN_TYPE_PORT_CONFIG                                = 127,              /* 端口 Port Config */
    NETDEV_LOG_MAIN_TYPE_PORTMAPPING_CONFIG                         = 128,              /* 端口映射 Port Mapping Config */
    NETDEV_LOG_MAIN_TYPE_EMAIL_CONFIG                               = 129,              /* 邮件 Email Config */
    NETDEV_LOG_MAIN_TYPE_GBSERVER_CONFIG                            = 130,              /* 国标服务器配置 GB Server Config */
    NETDEV_LOG_MAIN_TYPE_GBT28181_LOCAL_CONFIG                      = 131,              /* 本地服务器配置 GBT28181 Local Config */
    NETDEV_LOG_MAIN_TYPE_UNP_CLIENT_CONFIG                          = 132,              /* UNP客户端 UNP Client Config */
    NETDEV_LOG_MAIN_TYPE_UNP_SERVER_CONFIG                          = 133,              /* UNP服务器 UNP Server Config */
    NETDEV_LOG_MAIN_TYPE_STATIC_ROUTE_CONFIG                        = 134,              /* 静态路由操作 Static Route Config */
    NETDEV_LOG_MAIN_TYPE_802DOT1X_CONFIG                            = 135,              /* 8021X 802Dot1x Config" */
    NETDEV_LOG_MAIN_TYPE_ARP_CONFIG                                 = 136,              /* ARP ARP Config */
    NETDEV_LOG_MAIN_TYPE_HTTPS_CONFIG                               = 137,              /* https HTTPS Config */
    NETDEV_LOG_MAIN_TYPE_TELNET_CONFIG                              = 138,              /* telnet Telnet Config */
    NETDEV_LOG_MAIN_TYPE_SECURITY_PSW_CONFIG                        = 139,              /* 安全密码 Security Passwd Config */

    NETDEV_LOG_MAIN_TYPE_IP_FILTER_RULE_CONFIG                      = 140,              /* IP过滤规则配置 IP Filter Rule Config */
    NETDEV_LOG_MAIN_TYPE_MAINTENANCE_CONFIG                         = 141,              /* 系统维护 Maintenance Config */
    NETDEV_LOG_MAIN_TYPE_SET_MAX_LOG_RETENTION_TIME                 = 142,              /* 日志清理天数配置 Set Max Log Retention Time */
    NETDEV_LOG_MAIN_TYPE_STREAM_TRANSMISSION_POLICY_CONFIG          = 143,              /* 媒体流传输策略配置 Stream Transmission Policy Config */
    NETDEV_LOG_MAIN_TYPE_BATCH_CONFIG                               = 144,              /* 批量配置 Batch Config */
    NETDEV_LOG_MAIN_TYPE_RAIDMODE_CONFIG                            = 145,              /* RAID模式配置 RAID Mode Config */
    NETDEV_LOG_MAIN_TYPE_ARRAY_CONFIG                               = 146,              /* 阵列配置 Array Config */
    NETDEV_LOG_MAIN_TYPE_DISK_MANAGEMENT_CONFIG                     = 147,              /* 硬盘管理 Disk Management Config */
    NETDEV_LOG_MAIN_TYPE_CHANNEL_SPACE_CONFIG                       = 148,              /* 通道容量配置 Channel Space Config */
    NETDEV_LOG_MAIN_TYPE_OVER_WRITE_POLICY_CONFIG                   = 149,              /* 满策略配置 Overwrite Policy Config */
    NETDEV_LOG_MAIN_TYPE_DISKTEST_CONFIG                            = 150,              /* 硬盘检测配置 Disk Test Config */
    NETDEV_LOG_MAIN_TYPE_NET_DISK_CONFIG                            = 151,              /* 网络硬盘配置 Net Disk Config */
    NETDEV_LOG_MAIN_TYPE_RECORDING_SCHEDULE_CONFIG                  = 152,              /* 录像计划配置 Recording Schedule Config */
    NETDEV_LOG_MAIN_TYPE_RECORDING_TIME_TEMPLATE_CONFIG             = 153,              /* 录像时间模板 Recording Time Template Config */
    NETDEV_LOG_MAIN_TYPE_ALARM_CONFIG                               = 154,              /* 告警配置 Alarm Config */
    NETDEV_LOG_MAIN_TYPE_ALARM_TIMETEMPLATE_CONFIG                  = 155,              /* 告警时间模板 Alarm Time Template Config */
    NETDEV_LOG_MAIN_TYPE_CONTACT_CONFIG                             = 156,              /* 联系人配置 Contact Config */
    NETDEV_LOG_MAIN_TYPE_ALARM_TO_VIDEO_WALL_CONFIG                 = 157,              /* 告警联动上墙配置 Alarmto Video Wall Config */
    NETDEV_LOG_MAIN_TYPE_VIDEO_WALL_SCENE_CONFIG                    = 158,              /* 电视墙场景配置 Video Wall Scene Config */
    NETDEV_LOG_MAIN_TYPE_VIDEO_WALL_WINDOW_CONFIG                   = 159,              /* 电视墙窗口配置 Video Wall Window Config */
    NETDEV_LOG_MAIN_TYPE_VIDEO_WALL_VIRTUALLED_CONFIG               = 160,              /* 电视墙虚拟LED配置 Video Wall Virtual LED Config */
    NETDEV_LOG_MAIN_TYPE_EXTERNAL_ALARM_CONFIG                      = 161,              /* 紧急铃配置  External Alarm Config */
    NETDEV_LOG_MAIN_TYPE_DISK_GROUP_CONFIG                          = 162,              /* 盘组配置 Disk Group Config */
    NETDEV_LOG_MAIN_TYPE_BK_PLAN_CONFIG                             = 163,              /* 备份计划 BK Plan Config */
    NETDEV_LOG_MAIN_TYPE_BK_TASK_CONFIG                             = 164,              /* 备份任务 BK Task Config */
    NETDEV_LOG_MAIN_TYPE_LOCAL_BK_TASKCONFIG                        = 165,              /* 本地备份任务 Local BK Task Config */
    NETDEV_LOG_MAIN_TYPE_TVWALL_AUDIO_CONFIG                        = 166,              /* 电视墙音频输出配置 Tvwall Audio Config */
    NETDEV_LOG_MAIN_TYPE_LIVEVIEW                                   = 167,              /* 实况预览操作 Live View */
    NETDEV_LOG_MAIN_TYPE_PLAYBACK                                   = 168,              /* 录像回放操作 Playback */
    NETDEV_LOG_MAIN_TYPE_TWO_WAY_AUDIO                              = 169,              /* 语音操作 Two Way Audio */
    NETDEV_LOG_MAIN_TYPE_PTZ                                        = 170,              /* 云台操作 PTZ */
    NETDEV_LOG_MAIN_TYPE_DOWNLOAD                                   = 171,              /* 下载操作 Download */
    NETDEV_LOG_MAIN_TYPE_LIVEVIEW_ON_VIDEO_WALL                     = 172,              /* 实况上墙操作 Live Viewon Video Wall */
    NETDEV_LOG_MAIN_TYPE_PLAYBACK_ON_VIDEO_WALL                     = 173,              /* 回放上墙操作 Playback On Video Wall */
    NETDEV_LOG_MAIN_TYPE_EMAP_OPERATION                             = 174,              /* 电子地图操作 EMap Operation */
    NETDEV_LOG_MAIN_TYPE_DC_SEQUENCE_OPERATION                      = 175,              /* DC轮巡业务操作 DC Sequence Operation */
    NETDEV_LOG_MAIN_TYPE_VIDEO_WALL_PLAYING_BY_NETWROK_KEYPAD       = 176,              /* 网络键盘操作实况上墙 Video Wall Playing by Netwrok Keypad */
    NETDEV_LOG_MAIN_TYPE_ALARM_TO_VIDEO_WALL                        = 177,              /* 报警联动上墙操作 Alarm to Video Wall */
    NETDEV_LOG_MAIN_TYPE_ALARM_SUBSCRIPTION                         = 178,              /* 告警订阅 Alarm Subscription */
    NETDEV_LOG_MAIN_TYPE_PRESET_PATROL_CONFIG                       = 179,              /* 预置位巡航配置 Preset Patrol Config */
    NETDEV_LOG_MAIN_TYPE_AUTOGUARD_CONFIG                           = 180,              /* 守望配置 Auto Guard Config */
    NETDEV_LOG_MAIN_TYPE_RECORDED_PATROL_CONFIG                     = 181,              /* 轨迹巡航配置 Recorded Patrol Config */
    NETDEV_LOG_MAIN_TYPE_ACCESS_CONTROL_PERSONNEL_MANAGEMENT        = 182,              /* 门禁人员操作 Access Control Personnel Management */
    NETDEV_LOG_MAIN_TYPE_ACCESS_CONTROL_CARD_MANAGEMENT             = 183,              /* 门禁卡操作 Access Control Card Management */
    NETDEV_LOG_MAIN_TYPE_ZONE_OPERATION                             = 184,              /* 报警点操作 Zone Operation */
    NETDEV_LOG_MAIN_TYPE_ACCESS_CONTROL_DOOR                        = 185,              /* 门操作 Access Control Door */
    NETDEV_LOG_MAIN_TYPE_TRIGGER_ALARMOUTPUT                        = 186,              /* 报警输出触发操作 Trigger Alarm Output */
    NETDEV_LOG_MAIN_TYPE_CENTER_RECORD                              = 187,              /* 中心录像操作 Center Record */
    NETDEV_LOG_MAIN_TYPE_FACE_LIBRARY_OPERATION                     = 188,              /* 人脸库操作 Face Library Operation */
    NETDEV_LOG_MAIN_TYPE_FACE_MEMBER_OPERATION                      = 189,              /* 人脸成员操作 Face Member Operation */
    NETDEV_LOG_MAIN_TYPE_FACE_CUSTOM_OPERATION                      = 190,              /* 人脸自定义属性操作 Face Custom Operation */
    NETDEV_LOG_MAIN_TYPE_FACE_MEMBER_SORT_OPERATION                 = 191,              /* 人脸库划归操作 Face Member Sort Operation */
    NETDEV_LOG_MAIN_TYPE_FACE_MONITORING_TASKO_PERATION             = 192,              /* 人脸布控操作 Face Monitoring Task Operation */
    NETDEV_LOG_MAIN_TYPE_VEHICLE_LIBRARY_OPERATION                  = 193,              /* 车辆库操作 Vehicle Library Operation */
    NETDEV_LOG_MAIN_TYPE_VEHICLE_MEMBER_SORT_OPERATION              = 194,              /* 车辆库划归操作 Vehicle Member Sort Operation */
    NETDEV_LOG_MAIN_TYPE_VEHICLE_MEMBER_OPERATION                   = 195,              /* 车辆成员操作 Vehicle Member Operation */
    NETDEV_LOG_MAIN_TYPE_CAP_PAC_TASK                               = 196,              /* 抓包操作 Cap Pac Task */
    NETDEV_LOG_MAIN_TYPE_RECORD_BK_CONFIG                           = 197,              /* 录像备份 Record BK Config */
    NETDEV_LOG_MAIN_TYPE_USB_OPERATION                              = 198,              /* U盘操作 USB Operation */
    NETDEV_LOG_MAIN_TYPE_VEHICLE_MONITORING_TASK_OPERATION          = 199,              /* 车辆布控操作 Vehicle Monitoring Task Operation */
    NETDEV_LOG_MAIN_TYPE_PERMISSION_ASSIGNMENT_OPERATION            = 200,              /* 授权操作 Permission Assignment Operation */
    NETDEV_LOG_MAIN_TYPE_INVALID                                    = 0xFFFF            /* 无效值  Invalid value */
}NETDEV_LOG_MAIN_TYPE_E;

/**
 * @brief 日志次类型ID 枚举定义 Minor type IDs of logs Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVLogSubType
{
    NETDEV_LOG_ALL_SUB_TYPES                     = 0x0101,          /* 所有信息类日志  All information logs */

    /* 信息类日志  Information logs */
    NETDEV_LOG_MSG_HDD_INFO                     = 300,              /* 硬盘信息  HDD information */
    NETDEV_LOG_MSG_SMART_INFO                   = 301,              /* S.M.A.R.T信息  S.M.A.R.T information */
    NETDEV_LOG_MSG_REC_OVERDUE                  = 302,              /* 过期录像删除  Expired recording deletion */
    NETDEV_LOG_MSG_PIC_REC_OVERDUE              = 303,              /* 过期图片文件删除  Expired image deletion */

    /* 通知类日志  notification logs */
    NETDEV_LOG_NOTICE_IPC_ONLINE                = 310,              /* 设备上线  Device online */
    NETDEV_LOG_NOTICE_IPC_OFFLINE               = 311,              /* 设备下线  Device offline */
    NETDEV_LOG_NOTICE_ARRAY_RECOVER             = 312,              /* 阵列恢复正常  arrayRecover */
    NETDEV_LOG_NOTICE_INIT_ARRARY               = 313,              /* 阵列初始化  initializeArray */
    NETDEV_LOG_NOTICE_REBUILD_ARRARY            = 314,              /* 阵列重建  rebuildArray */
    NETDEV_LOG_NOTICE_POE_PORT_STATUS           = 315,              /* PoE网口状态  poePortStatus */
    NETDEV_LOG_NOTICE_NETWORK_PORT_STATUS       = 316,              /* 交换网口状态 networkPortStatus */
    NETDEV_LOG_NOTICE_DISK_ONLINE               = 317,              /* 磁盘上线  Disk online */

    /* 告警类日志的子类型日志ID  Sub type log ID of alarm logs */
    NETDEV_LOG_ALARM_MOTION_DETECT              = 350,              /* 移动侦测告警  Motion detection alarm */
    NETDEV_LOG_ALARM_MOTION_DETECT_RESUME       = 351,              /* 移动侦测告警恢复  Motion detection alarm recover */
    NETDEV_LOG_ALARM_VIDEO_LOST                 = 352,              /* 视频丢失告警  Video loss alarm */
    NETDEV_LOG_ALARM_VIDEO_LOST_RESUME          = 353,              /* 视频丢失告警恢复  Video loss alarm recover */
    NETDEV_LOG_ALARM_VIDEO_TAMPER_DETECT        = 354,              /* 遮挡侦测告警  Tampering detection alarm */
    NETDEV_LOG_ALARM_VIDEO_TAMPER_RESUME        = 355,              /* 遮挡侦测告警恢复  Tampering detection alarm recover */
    NETDEV_LOG_ALARM_INPUT_SW                   = 356,              /* 输入开关量告警  Boolean input alarm */
    NETDEV_LOG_ALARM_INPUT_SW_RESUME            = 357,              /* 输入开关量告警恢复  Boolean input alarm recover */
    NETDEV_LOG_ALARM_IPC_ONLINE                 = 358,              /* 设备上线  Device online */
    NETDEV_LOG_ALARM_IPC_OFFLINE                = 359,              /* 设备下线  Device offline */
    
    NETDEV_LOG_ALARM_AUDIO_DETECTION_START      = 360,              /* 音频检测开始  Audio detection start */
    NETDEV_LOG_ALARM_AUDIO_DETECTION_END        = 361,              /* 音频检测结束  Audio detection end */
    NETDEV_LOG_ALARM_CROSS_LINE_DETECT          = 362,              /* 越界检测报警  CrossLine detection */
    NETDEV_LOG_ALARM_FACE_DETECT                = 363,              /* 人脸检测报警  Face Detection */
    NETDEV_LOG_ALARM_INTRUSION_DETECT           = 364,              /* 区域入侵报警  Intrusion Detection */
    NETDEV_LOG_ALARM_POS                        = 365,              /* POS报警  POS Alarm */
    NETDEV_LOG_ALARM_IMAGETOOBLURRY_ON          = 366,              /* 虚焦检测开始  Defocus detection started*/
    NETDEV_LOG_ALARM_IMAGETOOBLURRY_OFF         = 367,              /* 虚焦检测结束  Defocus detection ended*/
    NETDEV_LOG_ALARM_GLOBAL_SCENE_CHANGE        = 368,              /* 场景变更检测  Scene change detection*/
    NETDEV_LOG_ALARM_AUTO_TRACK_ON              = 369,              /* 智能跟踪开始  Auto tracking started*/
    NETDEV_LOG_ALARM_AUTO_TRACK_OFF             = 370,              /* 智能跟踪结束  Auto tracking ended*/
    NETDEV_LOG_ALARM_CONFLAGRATION_ON           = 371,              /* 火灾告警 */
    NETDEV_LOG_ALARM_CONFLAGRATION_OFF          = 372,              /* 火灾告警结束 */
    NETDEV_LOG_ALARM_HUMAN_SHAPE_DETECT_ON      = 373,              /* 人形检测告警 */
    NETDEV_LOG_ALARM_HUMAN_SHAPE_DETECT_OFF     = 374,              /* 人形检测告警结束 */

    /* 异常类日志的子类型日志ID  Sub type log ID of exception logs */
    NETDEV_LOG_EXCEP_DISK_ONLINE                = 400,              /* 磁盘上线  Disk online */
    NETDEV_LOG_EXCEP_DISK_OFFLINE               = 401,              /* 磁盘下线  Disk offline */
    NETDEV_LOG_EXCEP_DISK_ERR                   = 402,              /* 磁盘异常  Disk exception */
    NETDEV_LOG_EXCEP_STOR_ERR                   = 403,              /* 存储错误  Storage error */
    NETDEV_LOG_EXCEP_STOR_ERR_RECOVER           = 404,              /* 存储错误恢复  Storage error recover */
    NETDEV_LOG_EXCEP_STOR_DISOBEY_PLAN          = 405,              /* 未按计划存储  Not stored as planned */
    NETDEV_LOG_EXCEP_STOR_DISOBEY_PLAN_RECOVER  = 406,              /* 未按计划存储恢复  Not stored as planned recover */
    NETDEV_LOG_EXCEP_ILLEGAL_ACCESS             = 407,              /* 非法访问  Illegal access */
    NETDEV_LOG_EXCEP_IP_CONFLICT                = 408,              /* IP地址冲突  IP address conflict */
    NETDEV_LOG_EXCEP_NET_BROKEN                 = 409,              /* 网络断开  Network disconnection */
    NETDEV_LOG_EXCEP_PIC_REC_ERR                = 410,              /* 抓图出错,获取图片文件失败  Failed to get captured image */
    NETDEV_LOG_EXCEP_VIDEO_EXCEPTION            = 411,              /* 视频输入异常(只针对模拟通道)  Video input exception (for analog channel only) */
    NETDEV_LOG_EXCEP_VIDEO_MISMATCH             = 412,              /* 视频制式不匹配   Video standards do not match */
    NETDEV_LOG_EXCEP_RESO_MISMATCH              = 413,              /* 编码分辨率和前端分辨率不匹配  Encoding resolution and front-end resolution do not match */
    NETDEV_LOG_EXCEP_TEMP_EXCE                  = 414,              /* 温度异常  Temperature exception */
    NETDEV_LOG_EXCEP_RUNOUT_RECORD_SPACE        = 415,              /* 录像存储空间即将满  runOutOfRecordSpace */
    NETDEV_LOG_EXCEP_RUNOUT_IMAGE_SPACE         = 416,              /* 图片存储空间即将满  runOutOfImageSpace */
    NETDEV_LOG_EXCEP_OUT_RECORD_SPACE           = 417,              /* 录像存储空间满  recordSpaceUsedUp */
    NETDEV_LOG_EXCEP_OUT_IMAGE_SPACE            = 418,              /* 图片存储空间满  imageSpaceUsedUp */
    NETDEV_LOG_EXCEP_ANRIDISASSEMBLY            = 419,              /* 防拆报警  antiDisassembly Alarm */
    NETDEV_LOG_EXCEP_ANRIDISASSEMBLY_RECOVER    = 420,              /* 防拆报警恢复 antiDisassembly AlarmClear*/
    NETDEV_LOG_EXCEP_ARRAY_DAMAGE               = 421,              /* 阵列损坏  arrayDamage */
    NETDEV_LOG_EXCEP_ARRAY_DEGRADE              = 422,              /* 阵列衰退  arrayDegrade */
    NETDEV_LOG_EXCEP_RECORD_SNAPSHOT_ABNOR      = 423,              /* 录像/抓图异常  recordSnapshotAbnormal */
    NETDEV_LOG_EXCEP_NET_BROKEN_RECOVER         = 424,              /* 网络断开恢复  networkDisconnectClear */
    NETDEV_LOG_EXCEP_IP_CONFLICT_RECOVER        = 425,              /* IP地址冲突恢复  ipConflictClear */
    NETDEV_LOG_EXCEP_DEVICE_HIGHTEMP            = 426,              /* 设备高温报警  High Temperature */
    NETDEV_LOG_EXCEP_DEVICE_LOWTEMP             = 427,              /* 设备低温报警  Low Temperature */
    NETDEV_LOG_EXCEP_DEVICE_HIGHTEMP_RECOVER    = 428,              /* 设备高温报警恢复  High Temperature Cleared */
    NETDEV_LOG_EXCEP_DEVICE_LOWTEMP_RECOVER     = 429,              /* 设备低温报警恢复  Low Temperature Cleared */
    NETDEV_LOG_EXCEP_FAN_FAULT                  = 430,              /* 设备风扇故障  Fan Failure */
    NETDEV_LOG_EXCEP_FAN_FAULT_RECOVER          = 431,              /* 设备风扇故障恢复  Fan Failure Cleared */
    NETDEV_LOG_EXCEP_LEDBOX_HIGHTEMP            = 432,              /* 设备电箱高温  LED Distribution Box High Temperature */
    NETDEV_LOG_EXCEP_LEDBOX_HIGHTEMP_RECOVER    = 433,              /* 设备电箱高温恢复  LED Distribution Box High Temperature Cleared */
    NETDEV_LOG_EXCEP_LEDBOX_SMOKE               = 434,              /* 设备电箱烟雾告警  LED Distribution Box Smoke Alarm */
    NETDEV_LOG_EXCEP_LEDBOX_SMOKE_RECOVER       = 435,              /* 设备电箱烟雾告警恢复  LED Distribution Box Smoke Alarm Cleared */

    /* 操作类日志的子类型日志ID  Sub type log ID of operation logs */
    /* 业务类  Services */
    NETDEV_LOG_OPSET_LOGIN                      = 450,              /* 用户登录  User login */
    NETDEV_LOG_OPSET_LOGOUT                     = 451,              /* 注销登录  Log out */
    NETDEV_LOG_OPSET_USER_ADD                   = 452,              /* 用户添加  Add user */
    NETDEV_LOG_OPSET_USER_DEL                   = 453,              /* 用户删除  Delete user */
    NETDEV_LOG_OPSET_USER_MODIFY                = 454,              /* 用户修改  Modify user */
    NETDEV_LOG_OPSET_START_REC                  = 455,              /* 开始录像  Start recording */
    NETDEV_LOG_OPSET_STOP_REC                   = 456,              /* 停止录像  Stop recording */
    NETDEV_LOG_OPSETR_PLAY_DOWNLOAD             = 457,              /* 回放/下载  Playback and download */
    NETDEV_LOG_OPSET_DOWNLOAD                   = 458,              /* 下载  Download */
    NETDEV_LOG_OPSET_PTZCTRL                    = 459,              /* 云台控制  PTZ control */
    NETDEV_LOG_OPSET_PREVIEW                    = 460,              /* 实况预览  Live preview */
    NETDEV_LOG_OPSET_REC_TRACK_START            = 461,              /* 轨迹录制开始  Start recording route */
    NETDEV_LOG_OPSET_REC_TRACK_STOP             = 462,              /* 轨迹录制停止  Stop recording route */
    NETDEV_LOG_OPSET_START_TALKBACK             = 463,              /* 开始语音对讲  Start two-way audio */
    NETDEV_LOG_OPSET_STOP_TALKBACK              = 464,              /* 停止语音对讲  Stop two-way audio */
    NETDEV_LOG_OPSET_IPC_ADD                    = 465,              /* 添加IPC  Add IP camera */
    NETDEV_LOG_OPSET_IPC_DEL                    = 466,              /* 删除IPC  Delete IP camera */
    NETDEV_LOG_OPSET_IPC_SET                    = 467,              /* 设置IPC  Modify IP camera */
    NETDEV_LOG_OPSET_IPC_QUICK_ADD              = 468,              /* 快速添加IPC  quickAddIpc*/
    NETDEV_LOG_OPSET_IPC_ADD_BY_NETWORK         = 469,              /* 网段添加IPC  addIpcByNetwork */
    NETDEV_LOG_OPSET_IPC_MOD_IP                 = 470,              /* 修改IPC网络地址  modifyIpcAddr */

    /* 配置类  Configurations */
    NETDEV_LOG_OPSET_DEV_BAS_CFG                = 500,              /* 设备基本信息配置  Basic device information */
    NETDEV_LOG_OPSET_TIME_CFG                   = 501,              /* 设备时间配置  Device time */
    NETDEV_LOG_OPSET_SERIAL_CFG                 = 502,              /* 设备串口配置  Device serial port */
    NETDEV_LOG_OPSET_CHL_BAS_CFG                = 503,              /* 通道基本配置  Basic channel configuration */
    NETDEV_LOG_OPSET_CHL_NAME_CFG               = 504,              /* 通道名称配置  Channel name configuration */
    NETDEV_LOG_OPSET_CHL_ENC_VIDEO              = 505,              /* 视频编码参数配置  Video encoding configuration */
    NETDEV_LOG_OPSET_CHL_DIS_VIDEO              = 506,              /* 通道视频显示参数配置  Video display configuration */
    NETDEV_LOG_OPSET_PTZ_CFG                    = 507,              /* 云台配置  PTZ configuration */
    NETDEV_LOG_OPSET_CRUISE_CFG                 = 508,              /* 巡航线路设置  Patrol route configuration */
    NETDEV_LOG_OPSET_PRESET_CFG                 = 509,              /* 预置位设置  Preset configuration */
    NETDEV_LOG_OPSET_VIDPLAN_CFG                = 510,              /* 录像计划配置  Recording schedule configuration */
    NETDEV_LOG_OPSET_MOTION_CFG                 = 511,              /* 运动检测配置  Motion detection configuration */
    NETDEV_LOG_OPSET_VIDLOSS_CFG                = 512,              /* 视频丢失配置  Video loss configuration */
    NETDEV_LOG_OPSET_COVER_CFG                  = 513,              /* 视频遮挡配置  Tampering detection configuration */
    NETDEV_LOG_OPSET_MASK_CFG                   = 514,              /* 视频遮盖配置  Privacy mask configuration */
    NETDEV_LOG_OPSET_SCREEN_OSD_CFG             = 515,              /* OSD叠加配置  OSD overlay configuration */
    NETDEV_LOG_OPSET_ALARMIN_CFG                = 516,              /* 报警输入配置  Alarm input configuration */
    NETDEV_LOG_OPSET_ALARMOUT_CFG               = 517,              /* 报警输出配置  Alarm output configuration */
    NETDEV_LOG_OPSET_ALARMOUT_OPEN_MAN          = 518,              /* 手动开启报警输出,人机  Manually enable alarm output, GUI */
    NETDEV_LOG_OPSET_ALARMOUT_CLOSE_MAN         = 519,              /* 手动关闭报警输出,人机  Manually disable alarm input, GUI */
    NETDEV_LOG_OPSET_ABNORMAL_CFG               = 520,              /* 异常配置  Exception configuration */
    NETDEV_LOG_OPSET_HDD_CFG                    = 521,              /* 硬盘配置  HDD configuration */
    NETDEV_LOG_OPSET_NET_IP_CFG                 = 522 ,             /* TCP/IP配置  TCP/IP configuration */
    NETDEV_LOG_OPSET_NET_PPPOE_CFG              = 523,              /* PPPOE配置  PPPOE configuration */
    NETDEV_LOG_OPSET_NET_PORT_CFG               = 524,              /* 端口配置  Port configuration */
    NETDEV_LOG_OPSET_NET_DDNS_CFG               = 525,              /* DDNS配置  DDNS configuration */
    NETDEV_LOG_OPSET_AUDIO_DETECT               = 527,              /* 搜索扩展硬盘  searchExtendDisk */
    NETDEV_LOG_OPSET_SEARCH_EX_DISK             = 528,              /* 搜索扩展硬盘  searchExtendDisk */
    NETDEV_LOG_OPSET_ADD_EX_DISK                = 529 ,             /* 添加扩展硬盘  addExtendDisk */
    NETDEV_LOG_OPSET_DEL_EX_DISK                = 530,              /* 删除扩展硬盘  deleteExtendDisk */
    NETDEV_LOG_OPSET_SET_EX_DISK                = 531,              /* 配置扩展硬盘  setExtendDisk */
    NETDEV_LOG_OPSET_LIVE_BY_MULTICAST          = 532,              /* 组播实况  liveViewByMulticast */
    NETDEV_LOG_OPSET_BISC_DEV_INFO              = 533,              /* 设备基本信息配置  setBasicDeviceInfo */
    NETDEV_LOG_OPSET_PREVIEW_CFG                = 534,              /* 本地预览配置  SetPreviewOnNvr */
    NETDEV_LOG_OPSET_SET_EMAIL                  = 535,              /* 邮件配置  setEmail */
    NETDEV_LOG_OPSET_TEST_EMAIL                 = 536,              /* 邮件测试  testEmail */
    NETDEV_LOG_OPSET_SET_IPCONTROL              = 537,              /* IP权限配置  setIPControl */
    NETDEV_LOG_OPSET_PORT_MAP                   = 538 ,             /* 端口映射配置  setPortMap */
    NETDEV_LOG_OPSET_ADD_TAG                    = 539,              /* 添加录像标签  addTag */
    NETDEV_LOG_OPSET_DEL_TAG                    = 540,              /* 删除录像标签  deleteTag */
    NETDEV_LOG_OPSET_MOD_TAG                    = 541,              /* 修改录像标签  modifyTag */
    NETDEV_LOG_OPSET_LOCK_RECORD                = 542,              /* 录像锁定  lockRecord */
    NETDEV_LOG_OPSET_UNLOCK_RECORD              = 543,              /* 录像解锁定  unlockRecord */
    NETDEV_LOG_OPSET_DDNS_UPDATE_SUCCESS        = 545,              /* DDNS更新成功  DDNSUpdateSuccess */
    NETDEV_LOG_OPSET_DDNS_INCORRECT_ID          = 546,              /* DDNS更新失败，错误的用户名密码  DDNSUpdateFailedIncorrectUsernamePassword */
    NETDEV_LOG_OPSET_DDNS_DOMAIN_NAME_NOT_EXIST = 547,              /* DDNS更新失败，域名不存在  DDNSUpdateFailedDomainNameNotExist */
    NETDEV_LOG_OPSET_DDNS_UPDATE_FAIL           = 548,              /* DDNS更新失败  DDNSUpdateFailed */
    NETDEV_LOG_OPSET_HTTP_CFG                   = 549,              /* HTTPS配置  setHttps */
    NETDEV_LOG_OPSET_IP_OFFLINE_ALARM_CFG       = 550,              /* IPC离线报警配置  testDDNSDomain */
    NETDEV_LOG_OPSET_TELNET_CFG                 = 551,              /* Telnet配置  setTelnet */
    NETDEV_LOG_OPSET_TEST_DDNS_DOMAIN           = 552,              /* DDNS域名检测  testDDNSDomain */
    NETDEV_LOG_OPSET_DDNS_DOMAIN_CONFLICT       = 553,              /* DDNS域名冲突  DDNSDomainInvalid */
    NETDEV_LOG_OPSET_DDNS_DOMAIN_INVALID        = 554,              /* DDNS域名不合法  setDDNS */
    NETDEV_LOG_OPSET_DEL_PRESET                 = 555,              /* 删除预置位  deletePreset */
    NETDEV_LOG_OPSET_PTZ_3D_POSITION            = 556,              /* 云台3D定位  ptz3DPosition */
    NETDEV_LOG_OPSET_SNAPSHOT_SCHEDULE_CFG      = 557,              /* 抓图计划配置  setSnapshotSchedule */
    NETDEV_LOG_OPSET_IMAGE_UPLOAD_SCHEDULE_CFG  = 558,              /* 图片上传计划配置  setImageUploadSchedule */
    NETDEV_LOG_OPSET_FTP_CFG                    = 559,              /* FTP服务器配置  setFtpServer */
    NETDEV_LOG_OPSET_TEST_FTP_SERVER            = 560,              /* FTP服务器连接测试  testFtpServer */
    NETDEV_LOG_OPSET_START_MANUAL_SNAPSHOT      = 561,              /* 手动抓图开启  startManualSnapshot */
    NETDEV_LOG_OPSET_CLOSE_MANUAL_SNAPSHOT      = 562,              /* 手动抓图关闭  endManualSnapshot */
    NETDEV_LOG_OPSET_SNAPSHOT_CFG               = 563,              /* 抓图参数配置  setSnapshot */
    NETDEV_LOG_OPSET_ADD_HOLIDAY                = 564,              /* 添加假日  addHoliday */
    NETDEV_LOG_OPSET_DEL_HOLIDAY                = 565,              /* 删除假日  deleteHoliday */
    NETDEV_LOG_OPSET_MOD_HOLIDAY                = 566,              /* 修改假日  modifyHoliday */
    NETDEV_LOG_OPSET_ONOFF_HOLIDAY              = 567,              /* 开启/关闭假日  enableDisableHoliday */
    NETDEV_LOG_OPSET_ALLOCATE_SPACE             = 568,              /* 容量配置  allocateSpace */
    NETDEV_LOG_OPSET_HDD_FULL_POLICY_CFG        = 569,              /* 满策略配置  setHddFullPolicy */
    NETDEV_LOG_OPSET_AUDIO_STREAM_CFG           = 570,              /* 音频流配置  setAudioStream */
    NETDEV_LOG_OPSET_ARRAY_PROPERTY_CFG         = 571,              /* 阵列属性配置  setArrayProperty */
    NETDEV_LOG_OPSET_HOT_SPACE_DISK_CFG         = 572,              /* 热备盘配置  setHotSpaceDisk */
    NETDEV_LOG_OPSET_CREAT_ARRAY                = 573,              /* 手动创建阵列  createArray */
    NETDEV_LOG_OPSET_ONE_CLICK_CREAT_ARRAY      = 574,              /* 一键创建阵列  oneClickCreateArray */
    NETDEV_LOG_OPSET_REBUILD_ARRAY              = 575,              /* 重建阵列  rebuildArray */
    NETDEV_LOG_OPSET_DEL_ARRAY                  = 576,              /* 删除阵列  deleteArray */
    NETDEV_LOG_OPSET_ENABLE_RAID                = 577,              /* 开启RAID模式  enableRaid */
    NETDEV_LOG_OPSET_DISABLE_RAID               = 578,              /* 关闭RAID模式  disableRaid */
    NETDEV_LOG_OPSET_TEST_SMART                 = 579,              /* S.M.A.R.T检测  testSmart */
    NETDEV_LOG_OPSET_SMART_CFG                  = 580,              /* S.M.A.R.T配置  setSmart */
    NETDEV_LOG_OPSET_BAD_SECTOR_DETECT          = 581,              /* 坏道检测  badSectorDetect */
    NETDEV_LOG_OPSET_AUDIO_ALARM_DURATION       = 582,              /* 配置声音报警时长  setAudioAlarmDuration */
    NETDEV_LOG_OPSET_CLR_AUDIO_ALARM            = 583,             /* 清除声音报警  clearAudioAlarm */
    NETDEV_LOG_OPSET_IPC_TIME_SYNC_CFG          = 584,              /* 配置同步摄像机时间  setIpcTimeSync */
    NETDEV_LOG_OPSET_ENABLE_DISK_GROUP          = 585,              /* 开启盘组  enableDiskGroup */
    NETDEV_LOG_OPSET_DISABLE_DISK_GRRUOP        = 586,              /* 关闭盘组  disableDiskGroup */
    NETDEV_LOG_OPSET_ONVIF_AUTH_CFG             = 587,              /* ONVIF认证配置  setOnvifAuth */
    NETDEV_LOG_OPSET_8021X_CFG                  = 588,              /* 配置802.1X  set8021x */
    NETDEV_LOG_OPSET_ARP_PROTECTION_CFG         = 589,              /* 配置ARP防攻击  setArpProtection */
    NETDEV_LOG_OPSET_SMART_BASIC_INFO_CFG       = 590 ,             /* 智能报警基本信息配置  setSmartBasicInfo */
    NETDEV_LOG_OPSET_CROSS_LINE_DETECT_CFG      = 591,              /* 越界检测配置  setCrossLineDetection */
    NETDEV_LOG_OPSET_INSTRUSION_DETECT_CFG      = 592,              /* 区域入侵配置  setIntrusionDetection */
    NETDEV_LOG_OPSET_PEOPLE_COUNT_CFG           = 593,              /* 客流量配置  setPeopleCount */
    NETDEV_LOG_OPSET_FACE_DETECT_CFG            = 594,              /* 人脸检测配置  setFaceDetection */
    NETDEV_LOG_OPSET_FISHEYE_CFG                = 595,              /* 鱼眼配置  setFisheye */
    NETDEV_LOG_OPSET_CUSTOM_PROTOCOL_CFG        = 596,              /* 自定义协议配置  setCustomProtocol */
    NETDEV_LOG_OPSET_BEHAVIOR_SEARCH            = 597,              /* 行为检索  behaviorSearch */
    NETDEV_LOG_OPSET_FACE_SEARCH                = 598,              /* 人脸检索  faceSearch */
    NETDEV_LOG_OPSET_PEOPLE_COUNT               = 599,              /* 客流量统计  peopleCount */
        
    /* 维护类 Maintenance */
    NETDEV_LOG_OPSET_START_DVR                  = 600,              /* 开机  Start up*/
    NETDEV_LOG_OPSET_STOP_DVR                   = 601,              /* 关机  Shut down */
    NETDEV_LOG_OPSET_REBOOT_DVR                 = 602,              /* 重启设备  Restart device */
    NETDEV_LOG_OPSET_UPGRADE                    = 603,              /* 版本升级  Version upgrade */
    NETDEV_LOG_OPSET_LOGFILE_EXPORT             = 604,              /* 导出日志文件  Export log files */
    NETDEV_LOG_OPSET_CFGFILE_EXPORT             = 605,              /* 导出配置文件  Export configuration files */
    NETDEV_LOG_OPSET_CFGFILE_IMPORT             = 606,              /* 导入配置文件  Import configuration files */
    NETDEV_LOG_OPSET_CONF_SIMPLE_INIT           = 607,              /* 简单恢复配置  Export configuration files */
    NETDEV_LOG_OPSET_CONF_ALL_INIT              = 608,               /* 恢复出厂配置  Restore to factory settings */

    NETDEV_LOG_OPSET_VCA_BACKUP                 = 700,              /* 智能备份  vcaBackup */
    NETDEV_LOG_OPSET_3G4G_CFG                   = 701,              /* 3G/4G配置  set3g4g */
    NETDEV_LOG_OPSET_MOUNT_EXTENDED_DISK        = 702,              /* 加载扩展硬盘 Mount extended disk*/
    NETDEV_LOG_OPSET_UNMOUNT_EXTENDED_DISK      = 703,              /* 卸载扩展硬盘 Unmount extended disk*/
    NETDEV_LOG_OPSET_FORCE_USER_OFFLINE         = 704,              /* 强制用户下线 Force user off line*/

    NETDEV_LOG_OPSET_AUTO_FUNCTION              = 709,              /* 自动维护  autoFunction */
    NETDEV_LOG_OPSET_IPC_UPRAGDE                = 710,              /* 摄像机升级  ipcUpgrade */
    NETDEV_LOG_OPSET_RESTORE_IPC_DEFAULTS       = 711,              /* 摄像机恢复默认配置  restoreIpcDefaults */
    NETDEV_LOG_OPSET_ADD_TRANSACTION            = 712,              /* 添加交易配置  addTransaction */
    NETDEV_LOG_OPSET_MOD_TRANSACTION            = 713,              /* 修改交易配置  modifyTransaction */
    NETDEV_LOG_OPSET_DEL_TRANSACTION            = 714,              /* 删除交易配置  deleteTransaction */
    NETDEV_LOG_OPSET_POS_OSD                    = 715,              /* POS显示配置设置  setPosOsd */
    NETDEV_LOG_OPSET_ADD_HOT_SPACE_DEV          = 716,              /* 添加备机  addHotSpaceDevice */
    NETDEV_LOG_OPSET_DEL_HOT_SPACE_DEV          = 717,              /* 删除备机  deleteHotSpaceDevice */
    NETDEV_LOG_OPSET_MOD_HOT_SPACE_DEV          = 718,              /* 修改备机  modifyHotSpaceDevice */
    NETDEV_LOG_OPSET_DEL_WORK_DEV               = 719,              /* 删除工作机  deleteWorkDevice */
    NETDEV_LOG_OPSET_WORKMODE_TO_NORMAL_CFG     = 720,              /* 设置工作机模式  SetWorkModeToNormal */
    NETDEV_LOG_OPSET_WORKMODE_TO_HOTSPACE_CFG   = 721,              /* 设置备机模式  SetWorkModeToHotSpace */
    NETDEV_LOG_OPSET_AUTO_GUARD_CFG             = 723,              /* 守望配置  setAutoGuard */
    NETDEV_LOG_OPSET_MULTICAST_CFG              = 724,              /* 组播配置  SetMulticast */
    NETDEV_LOG_OPSET_DEFOCUS_DETECT_CFG         = 725,              /* 虚焦检测配置 Set defocus detection*/
    NETDEV_LOG_OPSET_SCENECHANGE_CFG            = 726,              /* 场景变更配置 Set scene change detection*/
    NETDEV_LOG_OPSET_AUTO_TRCAK_CFG             = 727,              /* 智能跟踪配置 Set auto tracking*/
    NETDEV_LOG_OPSET_SORT_CAMERA_CFG            = 728,              /* 通道排序 Sort camera*/
    NETDEV_LOG_OPSET_WATER_MARK_CFG             = 729,              /* 视频水印配置 Set watermark*/

    /* VMS操作日志子类型 */
    NETDEV_LOG_VMS_OPRERATE_SUB_ALL                     = 1000,    /* 全部子类型 All Sub Operate Log */
    NETDEV_LOG_VMS_OPRERATE_SUB_USER_LOGIN              = 1001,    /* 用户登陆 User Login */
    NETDEV_LOG_VMS_OPRERATE_SUB_USER_LOGOUT             = 1002,    /* 用户登出 User Logout */
    NETDEV_LOG_VMS_OPRERATE_SUB_USER_START_OPERATION    = 1003,    /* 用户启动 User Start Operation */
    NETDEV_LOG_VMS_OPRERATE_SUB_USER_STOP_OPERATION     = 1004,    /* 用户停止 User Stop Operation */
    NETDEV_LOG_VMS_OPRERATE_SUB_NEW_CONFIG              = 1005,    /* 新增配置 New Config */
    NETDEV_LOG_VMS_OPRERATE_SUB_EDIT_CONFIG             = 1006,    /* 修改配置 Edit Config */
    NETDEV_LOG_VMS_OPRERATE_SUB_DELETE_CONFIG           = 1007,    /* 删除配置 Delete Config */
    NETDEV_LOG_VMS_OPRERATE_SUB_ENABLE_CONFIG           = 1008,    /* 启用配置 Enable Config */
    NETDEV_LOG_VMS_OPRERATE_SUB_DISABLE_CONFIG          = 1009,    /* 停用配置 Disable Config */
    NETDEV_LOG_VMS_OPRERATE_SUB_TEST_CONFIG             = 1010,    /* 测试配置 Test Config */
    NETDEV_LOG_VMS_OPRERATE_SUB_OPEN_DOOR               = 1011,    /* 开门 Open Door */
    NETDEV_LOG_VMS_OPRERATE_SUB_CLOSE_DOOR              = 1012,    /* 关门 Close Door */
    NETDEV_LOG_VMS_OPRERATE_SUB_SARM                    = 1013,    /* 布防 Arm */
    NETDEV_LOG_VMS_OPRERATE_SUB_DISARM                  = 1014,    /* 撤防 Disarm */
    NETDEV_LOG_VMS_OPRERATE_SUB_BYPASS                  = 1015,    /* 旁路 Bypass */
    NETDEV_LOG_VMS_OPRERATE_SUB_UNBYPASS                = 1016,    /* 非旁路 UnBypass */
    NETDEV_LOG_VMS_OPRERATE_SUB_SHARE_DEVICE            = 1017,    /* 云端设备共享 Share Device */
    NETDEV_LOG_VMS_OPRERATE_SUB_UN_SHARE_DEVICE         = 1018,    /* 取消共享 Un Share Device */
    NETDEV_LOG_VMS_OPRERATE_SUB_START_CAP_PAC_TASK      = 1019,    /* 开始抓包任务 Start Cap Pac Task */
    NETDEV_LOG_VMS_OPRERATE_SUB_STOP_CAP_PAC_TASK       = 1020,    /* 停止抓包任务 Stop Cap Pac Task */
    NETDEV_LOG_VMS_OPRERATE_SUB_DELETE_CAPPAC_TASK      = 1021,    /* 删除抓包任务 Delete Cap Pac Task */
    NETDEV_LOG_VMS_OPRERATE_SUB_USB_INSERT              = 1022,    /* USB插入 USB Insert */
    NETDEV_LOG_VMS_OPRERATE_SUB_USB_PULL_OUT            = 1023,    /* USB拔出 USB Pull Out */
    NETDEV_LOG_VMS_OPRERATE_SUB_USB_FORMAT              = 1024,    /* USB格式化 USB Format */
    NETDEV_LOG_VMS_OPRERATE_SUB_SYNC_DEV_CHL_INFO       = 1025,    /* 同步设备通道信息操作 Sync Dev Chl Info */
    NETDEV_LOG_VMS_OPRERATE_SUB_PLAYBACK_LOCK           = 1026,    /* 锁定录像 Playback Lock */
    NETDEV_LOG_VMS_OPRERATE_SUB_PLAYBACK_UNLOCK         = 1027     /* 解锁录像 Playback Unlock */

}NETDEV_LOG_SUB_TYPE_E;

typedef enum tagNETDEVDeviceType
{
    NETDEV_DTYPE_UNKNOWN                        = 0,            /* Unknown type */
    NETDEV_DTYPE_IPC                            = 1,            /* IPC range */
    NETDEV_DTYPE_IPC_FISHEYE                    = 2,            /* 非经济型鱼眼IPC Certain fisheye camera models*/
    NETDEV_DTYPE_IPC_ECONOMIC_FISHEYE           = 3,            /* 经济型鱼眼IPC Certain fisheye camera models*/
    NETDEV_DTYPE_IPC_ACS                        = 4,            /* 人脸门禁IPC Person verification camera models*/
    NETDEV_DTYPE_NVR                            = 101,          /* NVR range */
    NETDEV_DTYPE_NVR_BACKUP                     = 102,          /* NVR备份服务器  NVR back up */
    NETDEV_DTYPE_HNVR                           = 103,          /* 混合NVR */
    NETDEV_DTYPE_DC                             = 201,          /* DC range */
    NETDEV_DTYPE_DC_ADU                         = 202,          /* ADU range */
    NETDEV_DTYPE_EC                             = 301,          /* EC range */
    NETDEV_DTYPE_VMS                            = 501,          /* VMS range */
    NETDEV_DTYPE_FG                             = 601,          /* FG range */
    NETDEV_DTYPE_IPM                            = 701,          /* IPM range */
    NETDEV_DTYPE_EDU                            = 801,          /* EDU range */
	NETDEV_DTYPE_ITS                            = 801,          /* ITS range */
	NETDEV_DTYPE_PARK                            = 801,          /* PARK range */
    NETDEV_DTYPE_INVALID                        = 0xFFFF        /* 无效值  Invalid value */
}NETDEV_DEVICE_TYPE_E;

/**
 * @brief 参数配置命令字 枚举定义 Parameter configuration command words Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVCfgCmd
{
    NETDEV_GET_DEVICECFG                = 100,              /* 获取设备信息,参见#NETDEV_DEVICE_BASICINFO_S  Get device information, see #NETDEV_DEVICE_BASICINFO_S */
    NETDEV_SET_DEVICECFG                = 101,              /* 保留 Reserved */

    NETDEV_GET_NTPCFG                   = 110,              /* 获取NTP参数,参见#NETDEV_SYSTEM_NTP_INFO_S  Get NTP parameter, see #NETDEV_SYSTEM_NTP_INFO_S */
    NETDEV_SET_NTPCFG                   = 111,              /* 设置NTP参数,参见#NETDEV_SYSTEM_NTP_INFO_S  Set NTP parameter, see #NETDEV_SYSTEM_NTP_INFO_S */

    NETDEV_GET_NTPCFG_EX                = 112,              /* 获取NTP参数(扩展，建议使用),参见#NETDEV_SYSTEM_NTP_INFO_LIST_S  Get NTP parameter, see #NETDEV_SYSTEM_NTP_INFO_LIST_S */
    NETDEV_SET_NTPCFG_EX                = 113,              /* 设置NTP参数(扩展，建议使用),参见#NETDEV_SYSTEM_NTP_INFO_LIST_S  Set NTP parameter, see #NETDEV_SYSTEM_NTP_INFO_LIST_S */

    NETDEV_GET_STREAMCFG                = 120,              /* 获取视频编码参数,参见#NETDEV_VIDEO_STREAM_INFO_S  Get video encoding parameter, see #NETDEV_VIDEO_STREAM_INFO_S */
    NETDEV_SET_STREAMCFG                = 121,              /* 设置视频编码参数,参见#NETDEV_VIDEO_STREAM_INFO_S  Set video encoding parameter, see #NETDEV_VIDEO_STREAM_INFO_S */
    NETDEV_GET_STREAMCFG_EX             = 122,              /* 获取视频编码参数(扩展，建议使用),参见#NETDEV_VIDEO_STREAM_INFO_LIST_S  Get video encoding parameter, see #NETDEV_VIDEO_STREAM_INFO_LIST_S */
    NETDEV_SET_STREAMCFG_EX             = 123,              /* 设置视频编码参数(扩展，建议使用),参见#NETDEV_VIDEO_STREAM_INFO_LIST_S  Set video encoding parameter, see #NETDEV_VIDEO_STREAM_INFO_LIST_S */
    NETDEV_GET_VIDEOMODECFG             = 124,              /* 获取图像采集制式，参见#NETDEV_VIDEO_MODE_INFO_S */
    NETDEV_SET_VIDEOMODECFG             = 125,              /* 设置图像采集制式，参见#NETDEV_VIDEO_MODE_INFO_S */

    NETDEV_GET_OSDCFG                   = 140,              /* 获取OSD配置信息,参见#NETDEV_VIDEO_OSD_CFG_S  Get OSD configuration information, see #NETDEV_VIDEO_OSD_CFG_S */
    NETDEV_SET_OSDCFG                   = 141,              /* 设置OSD配置信息,参见#NETDEV_VIDEO_OSD_CFG_S  Set OSD configuration information, see #NETDEV_VIDEO_OSD_CFG_S */
    NETDEV_GET_OSDCFG_EX                = 142,              /* 获取OSD配置列表,参见#NETDEV_CHL_OSD_CFG_LIST_S  Get OSD configuration List, see #NETDEV_CHL_OSD_CFG_LIST_S */
    NETDEV_SET_OSDCFG_EX                = 143,              /* 设置OSD配置列表,参见#NETDEV_CHL_OSD_CFG_LIST_S  Set OSD configuration List, see #NETDEV_CHL_OSD_CFG_LIST_S */
    NETDEV_GET_OSD_CONTENT_CFG          = 144,              /* 获取OSD配置信息(扩展，建议使用),参见#NETDEV_OSD_CONTENT_S  Get OSD configuration information, see #NETDEV_OSD_CONTENT_S */
    NETDEV_SET_OSD_CONTENT_CFG          = 145,              /* 设置OSD配置信息(扩展，建议使用),参见#NETDEV_OSD_CONTENT_S  Set OSD configuration information, see #NETDEV_OSD_CONTENT_S */
    NETDEV_GET_OSD_CONTENT_STYLE_CFG    = 146,              /* 获取OSD内容样式,参见#NETDEV_OSD_CONTENT_STYLE_S  Get OSD content style, see #NETDEV_OSD_CONTENT_STYLE_S */
    NETDEV_SET_OSD_CONTENT_STYLE_CFG    = 147,              /* 设置OSD内容样式,参见#NETDEV_OSD_CONTENT_STYLE_S  Set OSD content style, see #NETDEV_OSD_CONTENT_STYLE_S */

    NETDEV_GET_ALARM_OUTPUTCFG          = 150,              /* 获取开关量输出配置信息,参见#NETDEV_ALARM_OUTPUT_LIST_S  Get boolean configuration information, see #NETDEV_ALARM_OUTPUT_LIST_S */
    NETDEV_SET_ALARM_OUTPUTCFG          = 151,              /* 设置开关量输出配置信息,参见#NETDEV_ALARM_OUTPUT_LIST_S  Set boolean configuration information, see #NETDEV_ALARM_OUTPUT_LIST_S */
    NETDEV_TRIGGER_ALARM_OUTPUT         = 152,              /* 触发开关量,参见#NETDEV_TRIGGER_ALARM_OUTPUT_S        Trigger boolean, see #NETDEV_TRIGGER_ALARM_OUTPUT_S */
    NETDEV_GET_ALARM_INPUTCFG           = 153,              /* 获取开关量输入数量,参见#NETDEV_ALARM_INPUT_LIST_S   Get the number of boolean inputs, see #NETDEV_ALARM_INPUT_LIST_S */
    NETDEV_GET_MANUAL_ALARM_CFG         = 154,              /* 获取手动告警开关量配置信息，参见#NETDEV_OUTPUT_SWITCH_ALARM_STATUS_LIST_S  Get manual alarm boolean configuration information, see #NETDEV_OUTPUT_SWITCH_ALARM_STATUS_LIST_S*/
    NETDEV_SET_MANUAL_ALARM_CFG         = 155,              /* 设置手动告警开关量配置信息，参见#NETDEV_OUTPUT_SWITCH_MANUAL_ALARM_INFO_S  Set manual alarm boolean configuration information, see #NETDEV_OUTPUT_SWITCH_MANUAL_ALARM_INFO_S */
    NETDEV_GET_INPUTSWITCH_LIST_CFG     = 156,              /* 获取所有输入开关量配置，参见#NETDEV_INPUT_SWITCH_INFO_LIST_S  Get all input switch information, see #NETDEV_INPUT_SWITCH_INFO_LIST_S*/

    NETDEV_GET_IMAGECFG                 = 160,              /* 获取图像配置信息,参见#NETDEV_IMAGE_SETTING_S  Get image configuration information, see #NETDEV_IMAGE_SETTING_S */
    NETDEV_SET_IMAGECFG                 = 161,              /* 设置图像配置信息,参见#NETDEV_IMAGE_SETTING_S  Set image configuration information, see #NETDEV_IMAGE_SETTING_S */
    NETDEV_GET_IMAGE_EXPOSURE           = 162,              /* 获取通道的图像曝光参数,参见#NETDEV_IMAGE_EXPOSURE_S  get image Exposure configuration information, see #NETDEV_IMAGE_EXPOSURE_S */
    NETDEV_SET_IMAGE_EXPOSURE           = 163,              /* 设置通道的图像曝光参数,参见#NETDEV_IMAGE_EXPOSURE_S  Set image Exposure configuration information, see #NETDEV_IMAGE_EXPOSURE_S */
    NETDEV_GET_IMAGE_LAMP_CTRLCFG       = 164,              /* 获取补光灯参数,参见#NETDEV_LAMP_CTRL_INFO_S  get channel lampctrl configuration information, see #NETDEV_LAMP_CTRL_INFO_S */
    NETDEV_SET_IMAGE_LAMP_CTRLCFG       = 165,              /* 设置补光灯参数,参见#NETDEV_LAMP_CTRL_INFO_S  set channel lampctrl configuration information, see #NETDEV_LAMP_CTRL_INFO_S */
    NETDEV_GET_IMAGE_WHITE_BALANCE      = 166,              /* 获取图像白平衡参数,参见#NETDEV_LAMP_CTRL_INFO_S  get channel lampctrl configuration information, see #NETDEV_LAMP_CTRL_INFO_S */
    NETDEV_SET_IMAGE_WHITE_BALANCE      = 167,              /* 设置图像白平衡参数,参见#NETDEV_LAMP_CTRL_INFO_S  set channel lampctrl configuration information, see #NETDEV_LAMP_CTRL_INFO_S */
    NETDEV_SET_IMAGE_PARAM_RESET        = 168,              /* 设置图像参数默认值set channel image param reset */

    NETDEV_GET_NETWORKCFG               = 170,              /* 获取网络配置信息,参见#NETDEV_NETWORKCFG_S  Get network configuration information, see #NETDEV_NETWORKCFG_S */
    NETDEV_SET_NETWORKCFG               = 171,              /* 设置网络配置信息,参见#NETDEV_NETWORKCFG_S  Set network configuration information, see #NETDEV_NETWORKCFG_S */

    NETDEV_GET_VPN_CFG                  = 172,              /* 获取VPN客户端指定模式信息 参见#NETDEV_VPN_CLIENT_INFO_S get the VPN client specified mode information, see #NETDEV_VPN_CLIENT_INFO_S*/
    NETDEV_SET_VPN_CFG                  = 173,              /* 设置VPN客户端指定模式信息 参见#NETDEV_VPN_CLIENT_INFO_S set the VPN client specified mode information, see #NETDEV_VPN_CLIENT_INFO_S*/
    NETDEV_SET_DNS_CFG                  = 174,              /*设置DNS地址信息 参见#NETDEV_DNS_INFO_S Set DNS info see #NETDEV_DNS_INFO_S*/
    NETDEV_GET_DNS_CFG                  = 175,              /*获取DNS地址信息 参见#NETDEV_DNS_INFO_S Get DNS info see #NETDEV_DNS_INFO_S*/
    NETDEV_SET_NETWORK_CARDS            = 176,              /*设置设备所有网卡的配置信息 参见#NETDEV_NETWORK_CARD_INFO_S set device networkcards infos see #NETDEV_NETWORK_CARD_INFO_S*/
    NETDEV_GET_NETWORK_CARDS            = 177,              /*获取设备所有网卡的配置信息 参见#NETDEV_NETWORK_CARD_INFO_S get device networkcards infos see #NETDEV_NETWORK_CARD_INFO_S*/

    NETDEV_SET_NETWORK_PORTS            = 178,              /*设置设备网络端口信息 参见#NETDEV_NETWORK_PORTS_INFO_S set device network ports infos see #NETDEV_NETWORK_PORT_INFO_S*/ 
    NETDEV_GET_NETWORK_PORTS            = 179,              /*获取设备网络端口信息 参见#NETDEV_NETWORK_PORTS_INFO_S get device network ports infos see #NETDEV_NETWORK_PORT_INFO_S*/ 

    NETDEV_GET_PRIVACYMASKCFG           = 180,              /* 获取隐私遮盖配置信息,参见#NETDEV_PRIVACY_MASK_CFG_S  Get privacy mask configuration information, see #NETDEV_PRIVACY_MASK_CFG_S */
    NETDEV_SET_PRIVACYMASKCFG           = 181,              /* 设置隐私遮盖配置信息,参见#NETDEV_PRIVACY_MASK_CFG_S  Set privacy mask configuration information, see #NETDEV_PRIVACY_MASK_CFG_S */
    NETDEV_DELETE_PRIVACYMASKCFG        = 182,              /* 删除隐私遮盖配置信息  Delete privacy mask configuration information */

    NETDEV_GET_TAMPERALARM              = 190,              /* 获取遮挡检测告警信息  参见#NETDEV_TAMPER_ALARM_INFO_S  Get tamper alarm configuration information, see #NETDEV_TAMPER_ALARM_INFO_S */
    NETDEV_SET_TAMPERALARM              = 191,              /* 设置遮挡检测告警信息  参见#NETDEV_TAMPER_ALARM_INFO_S  Set tamper alarm configuration information, see #NETDEV_TAMPER_ALARM_INFO_S */

    NETDEV_GET_MOTIONALARM              = 200,              /* 获取运动检测告警信息 参见#NETDEV_MOTION_ALARM_INFO_S  Get motion alarm configuration information, see #NETDEV_MOTION_ALARM_INFO_S */
    NETDEV_SET_MOTIONALARM              = 201,              /* 设置运动检测告警信息 参见#NETDEV_MOTION_ALARM_INFO_S  Set motion alarm configuration information, see #NETDEV_MOTION_ALARM_INFO_S */

    NETDEV_GET_CROSSLINEALARM           = 202,              /* 获取越界检测告警信息 参见NETDEV_CROSS_LINE_ALARM_INFO_S Get Cross Line alarm configuration information, see #NETDEV_CROSS_LINE_ALARM_INFO_S*/
    NETDEV_SET_CROSSLINEALARM           = 203,              /* 设置越界检测告警信息 参见NETDEV_CROSS_LINE_ALARM_INFO_S Set Cross Line alarm configuration information, see #NETDEV_CROSS_LINE_ALARM_INFO_S*/

    NETDEV_GET_INTRUSIONALARM           = 204,              /* 获取入侵检测告警信息 参见NETDEV_INTRUSION_ALARM_INFO_S Get intrusion alarm configuration information, see #NETDEV_INTRUSION_ALARM_INFO_S*/
    NETDEV_SET_INTRUSIONALARM           = 205,              /* 设置入侵检测告警信息 参见NETDEV_INTRUSION_ALARM_INFO_S Set intrusion alarm configuration information, see #NETDEV_INTRUSION_ALARM_INFO_S*/

    NETDEV_GET_DISKSINFO                = 210,              /* 获取硬盘信息 参见#NETDEV_GET_DISKS_INFO_S  Get disks information, see #NETDEV_GET_DISKS_INFO_S */
    NETDEV_SET_DISKSINFO                = 211,              /* 设置硬盘信息 保留 */

    NETDEV_GET_FOCUSINFO                = 230,              /* 获取聚焦信息 参见#NETDEV_FOCUS_INFO_S Get focus info, see #NETDEV_FOCUS_INFO_S */
    NETDEV_SET_FOCUSINFO                = 231,              /* 设置聚焦信息 参见#NETDEV_FOCUS_INFO_S Set focus info, see #NETDEV_FOCUS_INFO_S */
    NETDEV_GET_IRCUTFILTERINFO          = 232,              /* 获取昼夜模式信息 参见#NETDEV_IRCUT_FILTER_INFO_S Get IRcut filter info, see #NETDEV_IRCUT_FILTER_INFO_S */
    NETDEV_SET_IRCUTFILTERINFO          = 233,              /* 设置昼夜模式信息 参见#NETDEV_IRCUT_FILTER_INFO_S Set IRcut filter info, see #NETDEV_IRCUT_FILTER_INFO_S */
    NETDEV_GET_DEFOGGINGINFO            = 234,              /* 获取透雾模式信息 参见#NETDEV_DEFOGGING_INFO_S Get defogging info, see #NETDEV_DEFOGGING_INFO_S */
    NETDEV_SET_DEFOGGINGINFO            = 235,              /* 设置透雾模式信息 参见#NETDEV_DEFOGGING_INFO_S Set defogging info, see #NETDEV_DEFOGGING_INFO_S */
    NETDEV_SET_CHL_IMAGE_ENHANCE        = 236,              /* 设置通道的图像增强参数set channel image Enhance */
    NETDEV_GET_CHL_IMAGE_ENHANCE        = 237,              /* 获取通道的图像增强参数get channel image Enhance */

    NETDEV_GET_AUDIOIN_CFG              = 240,              /* 获取音频输入参数配置信息 参见#NETDEV_AUDIO_INPUT_CFG_INFO_S get audio input config info see #NETDEV_AUDIO_INPUT_CFG_INFO_S */
    NETDEV_SET_AUDIOIN_CFG              = 241,              /* 设置音频输入参数配置信息 参见#NETDEV_AUDIO_INPUT_CFG_INFO_S set audio input config info see #NETDEV_AUDIO_INPUT_CFG_INFO_S */

    NETDEV_GET_DST_CFG                  = 260,              /* 获取夏令时配置信息 参见#NETDEV_DST_CFG_S Get defogging info, see #NETDEV_DST_CFG_S */
    NETDEV_SET_DST_CFG                  = 261,              /* 设置夏令时配置信息 参见#NETDEV_DST_CFG_S Set defogging info, see #NETDEV_DST_CFG_S */

    NETDEV_GET_RECORDPLANINFO           = 270,              /* 获取录像计划配置信息 支持NVR VMS 参见#NETDEV_RECORD_PLAN_CFG_INFO_S */
    NETDEV_SET_RECORDPLANINFO           = 271,              /* 设置录像计划配置信息 支持NVR VMS 参见#NETDEV_RECORD_PLAN_CFG_INFO_S */
    NETDEV_SET_SNAPSHOT_CFG             = 272,              /* 设置指定通道的抓图参数 参见#NETDEV_VIDEO_SNAPSHOT_S Set snapshot info see #NETDEV_VIDEO_SNAPSHOT_S */
    NETDEV_GET_SNAPSHOT_CFG             = 273,              /* 获取指定通道的抓图参数 参见#NETDEV_VIDEO_SNAPSHOT_S Get snapshot info see #NETDEV_VIDEO_SNAPSHOT_S */

    NETDEV_GET_MOTIONDETECTION_WEEKPLAN     = 280,              /* 获取移动侦测布防计划,参见#NETDEV_WEEK_PLAN_INFO_S  Get motion detection deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_SET_MOTIONDETECTION_WEEKPLAN     = 281,              /* 设置移动侦测布防计划,,参见#NETDEV_WEEK_PLAN_INFO_S  Set motion detection deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_GET_CROSSLINEDETECTION_WEEKPLAN  = 282,              /* 获取越界检测布防计划,参见#NETDEV_WEEK_PLAN_INFO_S  Get CrossLine detection deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_SET_CROSSLINEDETECTION_WEEKPLAN  = 283,              /* 设置越界检测布防计划,,参见#NETDEV_WEEK_PLAN_INFO_S  Set CrossLine detection deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_GET_INTRUSIONDETECTION_WEEKPLAN  = 284,              /* 获取区域入侵布防计划,参见#NETDEV_WEEK_PLAN_INFO_S  Get Intrusion detection deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_SET_INTRUSIONDETECTION_WEEKPLAN  = 285,              /* 设置区域入侵布防计划,,参见#NETDEV_WEEK_PLAN_INFO_S  Set Intrusion detection deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_GET_AUDIODETECTION_WEEKPLAN      = 286,              /* 获取音频检测布防计划,参见#NETDEV_WEEK_PLAN_INFO_S  Get Audio detection deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_SET_AUDIODETECTION_WEEKPLAN      = 287,              /* 设置音频检测布防计划,,参见#NETDEV_WEEK_PLAN_INFO_S  Set Audio detection deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_GET_OBJTRACK_WEEKPLAN            = 288,              /* 获取目标跟踪布防计划,参见#NETDEV_WEEK_PLAN_INFO_S  Get ObjTrack deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_SET_OBJTRACK_WEEKPLAN            = 289,              /* 设置目标跟踪布防计划,,参见#NETDEV_WEEK_PLAN_INFO_S  Set ObjTrack deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_GET_VIDEOLOSS_WEEKPLAN           = 290,              /* 获取视频丢失的布防计划,参见#NETDEV_WEEK_PLAN_INFO_S  Get VideoLoss deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_SET_VIDEOLOSS_WEEKPLAN           = 291,              /* 设置视频丢失的布防计划,,参见#NETDEV_WEEK_PLAN_INFO_S  Set VideoLoss deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_GET_TAMPERDETECTION_WEEKPLAN     = 292,              /* 获取遮挡检测布防计划,参见#NETDEV_WEEK_PLAN_INFO_S  Get TamperDetection deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_SET_TAMPERDETECTION_WEEKPLAN     = 293,              /* 设置遮挡检测布防计划,,参见#NETDEV_WEEK_PLAN_INFO_S  Set TamperDetection deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_GET_INPUTSWITCHES_WEEKPLAN       = 294,              /* 获取输入开关量布防计划,参见#NETDEV_SWITCH_WEEK_PLAN_INFO_S  Get InputSwitches deployment plan, see #NETDEV_SWITCH_WEEK_PLAN_INFO_S */
    NETDEV_SET_INPUTSWITCHES_WEEKPLAN       = 295,              /* 设置输入开关量布防计划,,参见#NETDEV_SWITCH_WEEK_PLAN_INFO_S  Set InputSwitches deployment plan, see #NETDEV_SWITCH_WEEK_PLAN_INFO_S */
    NETDEV_GET_OUTPUTSWITCHES_WEEKPLAN      = 296,              /* 获取输出开关量布防计划,参见#NETDEV_WEEK_PLAN_INFO_S  Get OutputSwitches deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_SET_OUTPUTSWITCHES_WEEKPLAN      = 297,              /* 设置输出开关量布防计划,,参见#NETDEV_WEEK_PLAN_INFO_S  Set OutputSwitches deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_GET_DEFOCUSDETECTION_WEEKPLAN    = 298,              /* 获取虚焦检测布防计划,参见#NETDEV_WEEK_PLAN_INFO_S  Get DefocusDetection deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_SET_DEFOCUSDETECTION_WEEKPLAN    = 299,              /* 设置虚焦检测布防计划,,参见#NETDEV_WEEK_PLAN_INFO_S  Set DefocusDetection deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_GET_SCENECHANGE_WEEKPLAN         = 300,              /* 获取场景变更布防计划,参见#NETDEV_WEEK_PLAN_INFO_S  Get SceneChange deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_SET_SCENECHANGE_WEEKPLAN         = 301,              /* 设置场景变更布防计划,,参见#NETDEV_WEEK_PLAN_INFO_S  Set SceneChange deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_GET_FACEDETECTION_WEEKPLAN       = 302,              /* 获取人脸检测布防计划,参见#NETDEV_WEEK_PLAN_INFO_S  Get FaceDetection deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */
    NETDEV_SET_FACEDETECTION_WEEKPLAN       = 303,              /* 设置人脸检测布防计划,,参见#NETDEV_WEEK_PLAN_INFO_S  Set FaceDetection deployment plan, see #NETDEV_WEEK_PLAN_INFO_S */

    NETDEV_GET_RECORD_STATUS                = 320,              /* 获取录像状态信息 参见#NETDEV_RECORD_STATUS_LIST_S  Get video status information*/

    NETDEV_GET_SERIAL_CFG                   = 330,              /* 获取串口配置 参见# NETDEV_SERIAL_PORTS_S Get serail info, see # NETDEV_SERIAL_PORTS_S */
    NETDEV_SET_SERIAL_CFG                   = 331,              /* 设置串口配置 参见# NETDEV_SERIAL_PORTS_S Set serail info, see # NETDEV_SERIAL_PORTS_S */


    NETDEV_GET_AUDIO_DECODE_STATUS              = 340,          /* 获取通道所有随路音频解码状态 参见#NETDEV_AUDIO_DECODE_STATUS_LIST_S */
    NETDEV_SET_AUDIO_DECODE_STATUS              = 341,          /* 设置通道所有随路音频解码状态 参见#NETDEV_AUDIO_DECODE_STATUS_LIST_S */

    NETDEV_GET_VIDEO_LOSS_RULE_INFO             = 400,          /* 获取视频丢失告警的配置信息 参见#NETDEV_VIDEO_LOSS_RULE_INFO_S */
    NETDEV_SET_VIDEO_LOSS_RULE_INFO             = 401,          /* 设置视频丢失告警的配置信息 参见#NETDEV_VIDEO_LOSS_RULE_INFO_S */
    NETDEV_GET_VIDEO_LOSS_LINKAGE_ACTIONS       = 410,          /* 获取视频丢失告警的联动动作 参见#NETDEV_VIDEO_LOSS_LINKAGE_ACTIONS */
    NETDEV_SET_VIDEO_LOSS_LINKAGE_ACTIONS       = 411,          /* 设置视频丢失告警的联动动作 参见#NETDEV_VIDEO_LOSS_LINKAGE_ACTIONS */
    NETDEV_GET_TAMPER_DETECTION_RULE_INFO       = 420,          /* 获取视频输入通道的遮挡检测告警的配置 参见#NETDEV_TAMPER_DETECTION_RULE_INFO_S */
    NETDEV_SET_TAMPER_DETECTION_RULE_INFO       = 421,          /* 设置视频输入通道的遮挡检测告警的配置 参见#NETDEV_TAMPER_DETECTION_RULE_INFO_S */
    NETDEV_GET_TAMPER_DETECTION_LINKAGE_ACTIONS = 430,          /* 获取遮挡检测告警的联动动作 参见#NETDEV_TAMPER_DETECTION_LINKAGE_ACTIONS */
    NETDEV_SET_TAMPER_DETECTION_LINKAGE_ACTIONS = 431,          /* 设置遮挡检测告警的联动动作 参见#NETDEV_TAMPER_DETECTION_LINKAGE_ACTIONS */

    NETDEV_GET_MOTION_DETECTION_AREA_TYPE       = 440,          /* 获取视频输入通道运动检测的区域类型 参见#NETDEV_MOTION_DETECTION_AREA_TYPE_S */
    NETDEV_SET_MOTION_DETECTION_AREA_TYPE       = 441,          /* 设置视频输入通道运动检测的区域类型 参见#NETDEV_MOTION_DETECTION_AREA_TYPE_S */
    NETDEV_GET_MOTION_DETECTION_AREA_GRID_INFO  = 442,          /* 获取视频输入通道运动检测的所有宏块区域信息 参见#NETDEV_MOTION_DETECTION_AREA_GRID_INFO_S */
    NETDEV_SET_MOTION_DETECTION_AREA_GRID_INFO  = 443,          /* 设置视频输入通道运动检测的所有宏块区域信息 参见#NETDEV_MOTION_DETECTION_AREA_GRID_INFO_S */
    NETDEV_GET_MOTION_DETECTION_AREA_RECTANGLE_INFO_LIST  = 444,    /* 获取视频输入通道运动检测中的所有矩形区域信息 参见#NETDEV_MOTION_DETECTION_AREA_RECTANGLE_INFO_LIST_S */
    NETDEV_SET_MOTION_DETECTION_AREA_RECTANGLE_INFO_LIST  = 445,    /* 设置视频输入通道运动检测中的所有矩形区域信息 参见#NETDEV_MOTION_DETECTION_AREA_RECTANGLE_INFO_LIST_S */
    NETDEV_GET_MOTION_DETECTION_LINKAGE_ACTIONS = 450,          /* 获取运动检测告警的联动动作 参见#NETDEV_LINKAGE_ACTION_LIST_S */
    NETDEV_SET_MOTION_DETECTION_LINKAGE_ACTIONS = 451,          /* 设置运动检测告警的联动动作 参见#NETDEV_LINKAGE_ACTION_LIST_S */
    NETDEV_GET_INPUT_SWITCHES_LINKAGE_ACTIONS   = 460,          /* 获取输入开关量告警的联动动作 参见#NETDEV_SWITCH_LINKAGE_ACTION_S */
    NETDEV_SET_INPUT_SWITCHES_LINKAGE_ACTIONS   = 461,          /* 设置输入开关量告警的联动动作 参见#NETDEV_SWITCH_LINKAGE_ACTION_S */

    NETDEV_GET_RAID_STATUS                      = 470,          /* 获取阵列状态 参见#NETDEV_RAID_STATUS_S */
    NETDEV_GET_RAID_STORAGE_CONTAINER_INFO_LIST = 471,          /* 先使用NETDEV_GET_RAID_STATUS命令获取阵列状态，阵列状态使能时，获取存储容器信息列表 参见#NETDEV_HDD_INFO_LIST_S */
    NETDEV_GET_STORAGE_CONTAINER_INFO_LIST      = 472,          /* 先使用NETDEV_GET_RAID_STATUS命令获取阵列状态，阵列状态不使能时，获取存储容器信息列表 参见#NETDEV_STORAGE_CONTAINER_INFO_LIST_S */
    NETDEV_GET_HDD_SMART_INFO                   = 473,          /* 获取指定硬盘的Smart检测信息 参见#NETDEV_HDD_SMART_INFO_S */
    NETDEV_SET_HDD_SMART_INFO                   = 474,          /* 设置指定硬盘的Smart检测信息 参见#NETDEV_HDD_SMART_CHECK_INFO_S */
    NETDEV_GET_RAID_STATUS_V30                  = 475,          /* 获取阵列状态 支持VMS/NVR 参见#NETDEV_RAID_STATUS_S */
    NETDEV_SET_RAID_STATUS_V30                  = 476,          /* 设置阵列状态 支持VMS/NVR 参见#NETDEV_RAID_STATUS_S */

    NETDEV_GET_CLOUD_CONVENIENT_ACCS_STATUS     = 480,          /* 获取Ezcloud云端下设备便捷添加模式使能状态 使能状态 0：关闭 1：开启 */
    NETDEV_SET_CLOUD_CONVENIENT_ACCS_STATUS     = 481,          /* 设置Ezcloud云端下设备便捷添加模式使能状态 使能状态 0：关闭 1：开启 */
    
    NETDEV_GET_PHOTO_SERVER_INFO                = 482,          /* 获取照片接收服务器配置信息 参见# NETDEV_PHOTO_SERVER_CFG_INFO_S */
    NETDEV_SET_PHOTO_SERVER_INFO                = 483,          /* 设置照片接收服务器配置 参见# NETDEV_PHOTO_SERVER_CFG_INFO_S */

    NETDEV_GET_ENHANCED_CONFIG                  = 484,          /* 获取一体机增强配置信息,参见# NETDEV_ENHANCED_CONFIG_INFO_S */
    NETDEV_SET_ENHANCED_CONFIG                  = 485,          /* 设置一体机增强配置信息,参见# NETDEV_ENHANCED_CONFIG_INFO_S */

    NETDEV_GET_INTELLIGENT_SERVER_INFO          = 486,          /* 获取智能服务器配置 参见# NETDEV_DATA_SERVER_LIST */
    NETDEV_SET_INTELLIGENT_SERVER_INFO          = 487,          /* 设置智能服务器配置 参见# NETDEV_DATA_SERVER_LIST */

    NETDEV_GET_MOTION_INTERVAL_INFO             = 490,               /* 查询指定视频输入通道运动检测告警的报警间隔参数 参见 NETDEV_MOTION_INTERVAL_INFO_S */
    NETDEV_SET_MOTION_INTERVAL_INFO             = 491,               /* 设置指定视频输入通道运动检测告警的报警间隔参数 参见 NETDEV_MOTION_INTERVAL_INFO_S */

    NETDEV_GET_MANAGER_SERVER_INFO              = 492,          /* 获取管理服务器配置 参见# NETDEV_MANAGER_SERVER_LIST_S */
    NETDEV_SET_MANAGER_SERVER_INFO              = 493,          /* 设置管理服务器配置 参见# NETDEV_MANAGER_SERVER_LIST_S */

    NETDEV_GET_VISIBLE_RANGE_INFO               = 494,          /* 获取可视域参数信息 参见# NETDEV_VISIBLE_RANGE_INFO_S */
    NETDEV_SET_VISIBLE_RANGE_INFO               = 495,          /* 设置可视域参数信息 参见# NETDEV_VISIBLE_RANGE_INFO_S */

    NETDEV_GET_RESET_PWD_VERTIFY_INFO           = 496,          /* 获取找回用户密码的验证信息 */
    NETDEV_SET_RESET_PWD_VERTIFY_INFO           = 497,          /* 设置找回用户密码的验证信息 */

    NETDEV_GET_CHL_STORAGE_QUOTA_INFO           = 498,          /* 获取通道的具体配额信息 参见#NETDEV_STORAGE_QUOTA_INFO_S */
    NETDEV_SET_CHL_STORAGE_QUOTA_INFO           = 499,          /* 设置通道的具体配额信息 参见#NETDEV_STORAGE_QUOTA_INFO_S */

    NETDEV_GET_CUSTOM_PROTOCOL_INFO             = 501,          /* 获取自定义协议配置信息 参见# NETDEV_CUSTON_PROTOCOL_INFO_S */
    NETDEV_SET_CUSTOM_PROTOCOL_INFO             = 502,          /* 设置自定义协议配置信息 参见# NETDEV_CUSTON_PROTOCOL_INFO_S */
    NETDEV_GET_CUSTOM_PROTOCOL_INFOLIST         = 503,          /* 获取自定义协议配置信息列表 参见# NETDEV_CUSTON_PROTOCOL_SIMPLE_INFO_LIST_S */

    NETDEV_GET_CHL_STORAGE_STRATEGY             = 504,          /* 获取通道存储策略信息 参见#NETDEV_STORAGE_STRATEGY_S */
    NETDEV_SET_CHL_STORAGE_STRATEGY             = 505,          /* 设置通道存储策略信息 参见#NETDEV_STORAGE_STRATEGY_S */

    NETDEV_SET_BACKFOCUS                        = 506,          /* 调节后焦 仅IPC支持 参见# NETDEV_BACKFOCUS_INFO_S */

	/*================================================== ITS&PARK  Begin=====================================================*/
	NETDEV_GET_PTZPRESETS               = 130,              /* 获取云台预置位,参见#NETDEV_PTZ_ALLPRESETS_S  Get PTZ preset, see #NETDEV_PTZ_ALLPRESETS_S */
	NETDEV_GET_PTZSTATUS                = 220,              /* 获取云台状态 参见#NETDEV_PTZ_STATUS_S Get PTZ status,  see #NETDEV_PTZ_STATUS_S  */

	NETDEV_GET_PARKSTATUSINFO           = 1000,             /* 获取车位状态信息 参见#NETDEV_PARKSTATUS_INFO_S */

	NETDEV_GET_CARPORTCFG               = 1010,             /* 获取车位信息 参见#NETDEV_CARPORT_CFG_S */
	NETDEV_SET_CARPORTCFG               = 1011,             /* 设置车位信息 参见#NETDEV_CARPORT_CFG_S */

	NETDEV_GET_CARPORTCFG_EX            = 1012,             /* 获取车位信息(扩展，建议使用), 参见#NETDEV_ITS_PARKING_DETECTION_S */
	NETDEV_SET_CARPORTCFG_EX            = 1013,             /* 设置车位信息(扩展，建议使用), 参见#NETDEV_ITS_PARKING_DETECTION_S */


	NETDEV_GET_OSDSTYLECFG              = 1020,             /* 获取叠加OSD样式配置 参见 NETDEV_OSDSTYLE_CFG_S */
	NETDEV_SET_OSDSTYLECFG              = 1021,             /* 设置叠加OSD样式配置 参见 NETDEV_OSDSTYLE_CFG_S */

	NETDEV_GET_INFOOSDCFG               = 1030,             /* 获取叠加OSD配置 参见 NETDEV_INFOOSD_CFG_S */
	NETDEV_SET_INFOOSDCFG               = 1031,             /* 设置叠加OSD配置 参见 NETDEV_INFOOSD_CFG_S */

	NETDEV_GET_ACCPLICINFO              = 1040,             /* 获取访问策略 参见 NETDEV_ACCPLIC_INFO_S */             
	NETDEV_SET_ACCPLICINFO              = 1041,             /* 设置访问策略 参见 NETDEV_ACCPLIC_INFO_S */

	NETDEV_GET_EXPOSURE_CFG_S           = 1050,             /*设置图像曝光参数宽动态控制 */
	NETDEV_SET_EXPOSURE_CFG_S           = 1051,             /*获取图像曝光参数宽动态控制 */

	NETDEV_GET_TELENTCONFIG             = 1060 ,            /*获取图像宽动态*/
	NETDEV_SET_TELENTCONFIG             = 1061,             /*设置图像宽动态*/  

	NETDEV_GET_IRCUT                    = 1070,             /*获取白片彩片的切换 */
	NETDEV_SET_IRCUT                    = 1071,             /*设置白片彩片的切换 */

	NETDEV_GET_IMGENHANCE               = 1080,             /*获取图像参数 */
	NETDEV_SET_IMGENHANCE               = 1081,             /*设置图像参数 */ 

	NETDEV_GET_IMGCLARDATA              = 1090,             /*获取图像清晰度 */
	NETDEV_SET_IMGCLARDATA              = 1091,             /*设置图像清晰度*/ 

	NETDEV_SET_IMGSWITCHCHANNEL         = 2000,             /*图像通道的切换 */

	NETDEV_GET_INFORELEASE              = 2010,             /* 获取名单配置，放行策略 参见  */
	NETDEV_SET_INFORELEASE              = 2011,             /* 设置名单配置，放行策略 参见  */

	NETDEV_GET_INFOWLIST                = 2020,             /* 获取名单配置，出入白名单 参见  */
	NETDEV_SET_INFOWLIST                = 2021,             /* 设置名单配置，出入白名单 参见  */

	NETDEV_GET_INFOBLIST                = 2030,             /* 获取名单配置，出入黑名单 参见  */
	NETDEV_SET_INFOBLIST                = 2031,             /* 设置名单配置，出入黑名单 参见  */

	NETDEV_GET_CARPORT_LED_CTRL         = 2040,              /* 获取车位内置指示灯控制 参见 NETDEV_CARPORT_CONTROLLED_S (需关闭http鉴权)*/
	NETDEV_SET_CARPORT_LED_CTRL         = 2041,              /* 设置车位内置指示灯控制 参见 NETDEV_CARPORT_CONTROLLED_S (需关闭http鉴权)*/

	NETDEV_GET_INSTALL_GUIDE_CFG        = 2050,              /* 获取出入口安装向导配置 参见 NETDEV_INSTALL_GUIDE_CFG_S */
	NETDEV_SET_INSTALL_GUIDE_CFG        = 2051,              /* 设置出入口安装向导配置 参见 NETDEV_INSTALL_GUIDE_CFG_S */

	/*================================================== ITS&PARK  End=====================================================*/

    NETDEV_CFG_INVALID                          = 0xFFFF                /* 无效值  Invalid value */

}NETDEV_CONFIG_COMMAND_E;


/**
 * @brief 日期格式能力集 枚举定义 OSD date format capabilities enumeration 
 * @attention 无 None
 */
typedef enum tagNETDEVDateOSDFormateCap
{
    NETDEV_OSD_DATE_FORMAT_CAP_MD_YYYY          = 0,        /* M/d/yyyy */
    NETDEV_OSD_DATE_FORMAT_CAP_MMDD_YYYY        = 1,        /* MM/dd/yyyy */
    NETDEV_OSD_DATE_FORMAT_CAP_DDMM_YYYY        = 2,        /* dd/MM/yyyy */
    NETDEV_OSD_DATE_FORMAT_CAP_YYYY_MMDD        = 3,        /* yyyy/MM/dd */
    NETDEV_OSD_DATE_FORMAT_CAP_YYYYMMDDB        = 4,        /* yyyy-MM-dd */
    NETDEV_OSD_DATE_FORMAT_CAP_XX_MMDD_YYYY     = 5,        /* dddd, MMMM dd, yyyy */
    NETDEV_OSD_DATE_FORMAT_CAP_MMMMDD_YYYY      = 6,        /* MMMM dd, yyyy */
    NETDEV_OSD_DATE_FORMAT_CAP_DDMMMM_YYYY      = 7         /* dd MMMM, yyyy */
}NETDEV_OSD_DATE_FORMAT_CAP_E;

/**
 * @brief OSD时间格式能力集枚举 OSD time format capabilities enumeration
 * @attention 无 None
 */
typedef enum tagNETDEVTimeOSDFormateCap
{
    NETDEV_OSD_TIME_FORMAT_CAP_HHMMSS = 0,                  /* HH:mm:ss */
    NETDEV_OSD_TIME_FORMAT_CAP_HH_MM_SS_PM                  /* hh:mm:ss tt */
}NETDEV_OSD_TIME_FORMAT_CAP_E;

/**
 * @brief 输入开关量运行模式 Boolean input operation mode
 * @attention 无 None
 */
typedef enum tagNETDEVBooleanMode
{
    NETDEV_BOOLEAN_MODE_OPEN   = 1,                         /* 常开  Always open */
    NETDEV_BOOLEAN_MODE_CLOSE  = 2,                         /* 常闭  Always closed */
    NETDEV_BOOLEAN_MODE_INVALID
}NETDEV_BOOLEAN_MODE_E;

/**
 * @brief 开关量状态 Boolean input operation mode
 * @attention 无 None
 */
typedef enum tagNETDEVRelayOutPutState
{
    NETDEV_BOOLEAN_STATUS_ACTIVE    = 0,                /* 触发状态  Triggered */
    NETDEV_BOOLEAN_STATUS_INACTIVE  = 1                 /* 非触发状态 Not triggered */
}NETDEV_RELAYOUTPUT_STATE_E;

/**
 * @brief 控制手动告警开关量状态命令
 * @attention 无 None
 */
typedef enum tagNETDEVOutPutManualAlarmCmd
{
    NETDEV_MANUAL_ALARM_CMD_CLOSE    = 0,                /* 关闭 close */
    NETDEV_MANUAL_ALARM_CMD_TRIGGER  = 1                 /* 触发  Triggered */
}NETDEV_MANUAL_ALARM_CMD_E;

/**
* @brief 媒体数据流格式
* @attention 无
*/
typedef enum tagNETDEVMediaDataFormat
{
    NETDEV_MEDIA_DATA_TS            = 0,            /* TS */
    NETDEV_MEDIA_DATA_RTP_ES        = 3             /* RTP + ES */
}NETDEV_MEDIA_DATA_FORMAT_E;

/**
* @brief 协议类型
* @attention 无
*/
typedef enum tagNETDEVProtocolType
{
    NETDEV_PROTOCOL_TYPE_HTTP  = 0,
    NETDEV_PROTOCOL_TYPE_HTTPS = 1,
    NETDEV_PROTOCOL_TYPE_RTSP  = 2
}NETDEV_PROTOCOL_TYPE_E;

/**
* @brief 时区 Time Zone
* @attention 无 None
*/
typedef enum tagNETDEVTimeZone
{
    NETDEV_TIME_ZONE_W1200 = 0,              /* W12 */
    NETDEV_TIME_ZONE_W1100 = 1,              /* W11 */
    NETDEV_TIME_ZONE_W1000 = 2,              /* W10 */
    NETDEV_TIME_ZONE_W0900 = 3,              /* W9 */
    NETDEV_TIME_ZONE_W0800 = 4,              /* W8 */
    NETDEV_TIME_ZONE_W0700 = 5,              /* W7 */
    NETDEV_TIME_ZONE_W0600 = 6,              /* W6 */
    NETDEV_TIME_ZONE_W0500 = 7,              /* W5 */
    NETDEV_TIME_ZONE_W0430 = 8,              /* W4:30 */
    NETDEV_TIME_ZONE_W0400 = 9,              /* W4 */
    NETDEV_TIME_ZONE_W0330 = 10,             /* W3:30 */
    NETDEV_TIME_ZONE_W0300 = 11,             /* W3 */
    NETDEV_TIME_ZONE_W0200 = 12,             /* W2 */
    NETDEV_TIME_ZONE_W0100 = 13,             /* W1 */
    NETDEV_TIME_ZONE_0000  = 14,             /* W0 */
    NETDEV_TIME_ZONE_E0100 = 15,             /* E1 */
    NETDEV_TIME_ZONE_E0200 = 16,             /* E2 */
    NETDEV_TIME_ZONE_E0300 = 17,             /* E3 */
    NETDEV_TIME_ZONE_E0330 = 18,             /* E3:30 */
    NETDEV_TIME_ZONE_E0400 = 19,             /* E4 */
    NETDEV_TIME_ZONE_E0430 = 20,             /* E4:30 */
    NETDEV_TIME_ZONE_E0500 = 21,             /* E5 */
    NETDEV_TIME_ZONE_E0530 = 22,             /* E5:30 */
    NETDEV_TIME_ZONE_E0545 = 23,             /* E5:45 */
    NETDEV_TIME_ZONE_E0600 = 24,             /* E6 */
    NETDEV_TIME_ZONE_E0630 = 25,             /* E6:30 */
    NETDEV_TIME_ZONE_E0700 = 26,             /* E7 */
    NETDEV_TIME_ZONE_E0800 = 27,             /* E8 */
    NETDEV_TIME_ZONE_E0900 = 28,             /* E9 */
    NETDEV_TIME_ZONE_E0930 = 29,             /* E9:30 */
    NETDEV_TIME_ZONE_E1000 = 30,             /* E10 */
    NETDEV_TIME_ZONE_E1100 = 31,             /* E11 */
    NETDEV_TIME_ZONE_E1200 = 32,             /* E12 */
    NETDEV_TIME_ZONE_E1300 = 33,             /* E13 */
    NETDEV_TIME_ZONE_W0930 = 34,             /* W9:30 */
    NETDEV_TIME_ZONE_E0830 = 35,             /* E8:30 */
    NETDEV_TIME_ZONE_E0845 = 36,             /* E8:45 */
    NETDEV_TIME_ZONE_E1030 = 37,             /* E10:30 */
    NETDEV_TIME_ZONE_E1245 = 38,             /* E12:45 */
    NETDEV_TIME_ZONE_E1400 = 39,             /* E14 */

    NETDEV_TIME_ZONE_INVALID = 0xFF          /* Invalid value */
}NETDEV_TIME_ZONE_E;

/**
* @brief Week emnu
* @attention 无
*/
typedef enum tagNetDEVDayInWeek
{
    NETDEV_WEEK_SUNDAY                  = 0,                  /* 星期日  Sunday */
    NETDEV_WEEK_MONDAY                  = 1,                  /* 星期一  Monday */
    NETDEV_WEEK_TUESDAY                 = 2,                  /* 星期二  Tuesday */
    NETDEV_WEEK_WEDNESDAY               = 3,                  /* 星期三  Wednesday */
    NETDEV_WEEK_THURSDAY                = 4,                  /* 星期四  Thursday */
    NETDEV_WEEK_FRIDAY                  = 5,                  /* 星期五  Friday */
    NETDEV_WEEK_SATURDAY                = 6,                  /* 星期六  Saturday */
    NETDEV_WEEK_INVALID               = 0xff                  /* 无效值 Invalid value */
}NETDEV_DAY_IN_WEEK_E;

/**
* @brief 夏令时偏移时间 DST offset time
* @attention 无
*/
typedef enum tagNetDEVDSTOffsetTime
{
    NETDEV_DST_OFFSET_TIME_30MIN                 = 30,          /* 30分钟  30Minutes */
    NETDEV_DST_OFFSET_TIME_60MIN                 = 60,          /* 60分钟  60Minutes */
    NETDEV_DST_OFFSET_TIME_90MIN                 = 90,          /* 90分钟  90Minutes */
    NETDEV_DST_OFFSET_TIME_120MIN                = 120,         /* 120分钟  120Minutes */
    NETDEV_DST_OFFSET_TIME_INVALID               = 0xff         /* 无效值 Invalid value */
}NETDEV_DST_OFFSET_TIME;



/**
 * @brief 磁盘工作状态枚举 Disk work status 
 * @attention 无 None
 */
typedef enum tagNETDEVDiskWorkStatus
{
    NETDEV_DISK_WORK_STATUS_EMPTY       = 0,            /* 空状态 Empty */
    NETDEV_DISK_WORK_STATUS_UNFORMAT    = 1,            /* 未格式化状态 Unformat */
    NETDEV_DISK_WORK_STATUS_FORMATING   = 2,            /* 格式化状态 Formating */
    NETDEV_DISK_WORK_STATUS_RUNNING     = 3,            /* 运行状态 Running */
    NETDEV_DISK_WORK_STATUS_HIBERNATE   = 4,            /* 休眠状态 Hibernate */
    NETDEV_DISK_WORK_STATUS_ABNORMAL    = 5,            /* 异常状态 Abnormal */
    NETDEV_DISK_WORK_STATUS_UNKNOWN     = 6,            /* 未知状态 Unknown */

    NETDEV_DISK_WORK_STATUS_INVALID                     /* 无效值 Invalid value */
}NETDEV_DISK_WORK_STATUS_E;

/**
* @enum tagNETDEVHDDType
* @brief 磁盘类型
* @attention 无 None
*/
typedef enum tagNETDEVHDDType
{
    NETDEV_HDD_TYPE_LOCAL_HDD       = 0,            /* LocalHDD */
    NETDEV_HDD_TYPE_NO1_EXTEND_HDD  = 1,            /* No1ExtendCabinetHDD */
    NETDEV_HDD_TYPE_NO2_EXTEND_HDD  = 2,            /* No2ExtendCabinetHDD */

    NETDEV_HDD_TYPE_INVALID = 0xFF                  /* Invalid value */
}NETDEV_HDD_TYPE_E;

/**
* @enum tagNETDEVHDDWorkMode
* @brief 磁盘工作模式
* @attention 无 None
*/
typedef enum tagNETDEVHDDWorkMode
{
    NETDEV_HDD_WORK_MODE_COMMON     = 0,        /* 普通盘 */
    NETDEV_HDD_WORK_MODE_RAID       = 1,        /* 阵列盘 */
    NETDEV_HDD_WORK_MODE_HOT_BACKUP = 2,        /* 热备盘 */

    NETDEV_HDD_WORK_MODE_INVALID    = 0xFF      /* Invalid value */
}NETDEV_HDD_WORK_MODE_E;

/**
* @enum tagNETDEVHDDStatus
* @brief 磁盘状态
* @attention 无 None
*/
typedef enum tagNETDEVHDDStatus
{
    NETDEV_HDD_STATUS_NO        = 0,            /* 无硬盘 */
    NETDEV_HDD_STATUS_NORMAL    = 1,            /* 正常 */
    NETDEV_HDD_STATUS_ABNORMAL  = 2,            /* 异常 */

    NETDEV_HDD_STATUS_INVALID = 0xFF            /* Invalid value */
}NETDEV_HDD_STATUS_E;

/**
* @enum tagNETDEVStorageContainerStatus
* @brief 存储容器状态
* @attention 无 None
*/
typedef enum tagNETDEVStorageContainerStatus
{
    NETDEV_STORAGE_CONTAINER_STATUS_NO                      = 0,            /* 无硬盘/空闲 */
    NETDEV_STORAGE_CONTAINER_STATUS_UNFORMATTED             = 1,            /* 未格式化 */
    NETDEV_STORAGE_CONTAINER_STATUS_FORMATTING       = 2,            /* 正在格式化 */
    NETDEV_STORAGE_CONTAINER_STATUS_NORMAL           = 3,            /* 硬盘状态良好 */
    NETDEV_STORAGE_CONTAINER_STATUS_SLEEP            = 4,            /* 休眠 */
    NETDEV_STORAGE_CONTAINER_STATUS_ABNORMAL                = 5,            /* 异常 */
    NETDEV_STORAGE_CONTAINER_STATUS_SWITCH           = 6,            /* 切换中 */
    NETDEV_STORAGE_CONTAINER_STATUS_UNINSTALLED      = 7,            /* 已卸载 */

    NETDEV_STORAGE_CONTAINER_STATUS_INVALID                 = 0xFF          /* Invalid value */
}NETDEV_STORAGE_CONTAINER_STATUS_E;

/**
* @enum tagNETDEVStorageContainerProperty
* @brief 存储容器属性
* @attention 无 None
*/
typedef enum tagNETDEVStorageContainerProperty
{
    NETDEV_STORAGE_CONTAINER_PROPERTY_RW                = 0,            /* 读写 */
    NETDEV_STORAGE_CONTAINER_PROPERTY_R                 = 1,            /* 只读 */
    NETDEV_STORAGE_CONTAINER_PROPERTY_REDUNDANT         = 2,            /* 冗余 */

    NETDEV_STORAGE_CONTAINER_PROPERTY_INVALID           = 0xFF          /* Invalid value */
}NETDEV_STORAGE_CONTAINER_PROPERTY_E;

/**
* @enum tagNETDEVStorageContainerUsageType
* @brief 存储容器用途
* @attention 无 None
*/
typedef enum tagNETDEVStorageContainerUsageType
{
    NETDEV_STORAGE_CONTAINER_USAGE_TYPE_RECORD_CAPTURE   = 0,        /* 录像/抓图 */
    NETDEV_STORAGE_CONTAINER_USAGE_TYPE_BACKUP           = 1,        /* 备份 */

    NETDEV_STORAGE_CONTAINER_USAGE_TYPE_INVALID          = 0xFF      /* Invalid value */
}NETDEV_STORAGE_CONTAINER_USAGE_TYPE_E;

/**
* @enum tagNETDEVHDDSmartCheckType
* @brief 硬盘Smart检测类型
* @attention 无 None
*/
typedef enum tagNETDEVHDDSmartCheckType
{
    NETDEV_HDD_SMART_CHECK_TYPE_BRIEF          = 0,        /* 简短型 */
    NETDEV_HDD_SMART_CHECK_TYPE_EXTEND         = 1,        /* 扩展型 */
    NETDEV_HDD_SMART_CHECK_TYPE_TRANSMISSION   = 2,        /* 传输型 */

    NETDEV_HDD_SMART_CHECK_TYPE_INVALID        = 0xFF      /* Invalid value */
}NETDEV_HDD_SMART_CHECK_TYPE_E;

/**
* @enum tagNETDEVPhotoServerProType
* @brief 照片服务器通信协议类型
* @attention 无 None
*/
typedef enum tagNETDEVPhotoServerProType
{
    NETDEV_PHOTO_SERVER_PRO_TYPE_PRO1          = 0,        /* TCP传输: 宇视V1（对应泓鎏） */
    NETDEV_PHOTO_SERVER_PRO_TYPE_PRO2          = 1,        /* TCP传输: 宇视V2（对应当前tms） */
    NETDEV_PHOTO_SERVER_PRO_TYPE_PRO3          = 2,        /* TCP传输: 先创 */
    NETDEV_PHOTO_SERVER_PRO_TYPE_PRO4          = 3,        /* FTP传输: 泉视通 */
    NETDEV_PHOTO_SERVER_PRO_TYPE_PRO5          = 4,        /* FTP传输: 通用FTP */
    NETDEV_PHOTO_SERVER_PRO_TYPE_PRO6          = 5,        /* FTP传输: 正直 */
    NETDEV_PHOTO_SERVER_PRO_TYPE_PRO7          = 6,        /* webserver: 海康协议 */
    NETDEV_PHOTO_SERVER_PRO_TYPE_PRO8          = 7,        /* FTP传输: 中通 */
    NETDEV_PHOTO_SERVER_PRO_TYPE_PRO9          = 8,        /* FTP传输: 泉视通2 */
    NETDEV_PHOTO_SERVER_PRO_TYPE_PRO10          = 9,       /* 银江，照片信息webserver 照片数据FTP传输 */
    NETDEV_PHOTO_SERVER_PRO_TYPE_PRO11          = 10,      /* TCP传输:立元 */
    NETDEV_PHOTO_SERVER_PRO_TYPE_PRO12          = 11,      /* 翔讯，照片信息TCP 照片数据FTP传输 */
    NETDEV_PHOTO_SERVER_PRO_TYPE_PRO31          = 12,      /* TCP传输: 宇视V2（对应当前tms短连接） */
    NETDEV_PHOTO_SERVER_PRO_TYPE_PRO34          = 13,      /* HTTP传输: 松立 */

    NETDEV_PHOTO_SERVER_PRO_TYPE_INVALID        = 0xFF      /* Invalid value */
}NETDEV_PHOTO_SERVER_PRO_TYPE_E;

/**
* @enum tagNETDEVPhotoServerSubProtocolType
* @brief 照片服务器通信子协议类型
* @attention 无 None
*/
typedef enum tagNETDEVPhotoServerSubProType
{
    NETDEV_PHOTO_SERVER_SUBPRO_TYPE_2011          = 0,        /* 宇视智慧物联2011命令 */
    NETDEV_PHOTO_SERVER_SUBPRO_TYPE_2025          = 1,        /* 宇视智慧物联2025命令 */
    NETDEV_PHOTO_SERVER_SUBPRO_TYPE_6130          = 2,        /* 宇视智慧物联6130命令 */
    

    NETDEV_PHOTO_SERVER_SUBPRO_TYPE_INVALID        = 0xFF      /* Invalid value */
}NETDEV_PHOTO_SERVER_SUBPRO_TYPE_E;

/**
* @enum tagNETDEVHDDHealthAssessmentStatus
* @brief 硬盘健康评估状态
* @attention 无 None
*/
typedef enum tagNETDEVHDDHealthAssessmentStatus
{
    NETDEV_HDD_HEALTH_ASSESSMENT_STATUS_NORMAL           = 0,        /* 健康状态良好 */
    NETDEV_HDD_HEALTH_ASSESSMENT_STATUS_PART_DAMAGE      = 1,        /* 存在坏扇区 */
    NETDEV_HDD_HEALTH_ASSESSMENT_STATUS_FAULT            = 2,        /* 故障 */

    NETDEV_HDD_HEALTH_ASSESSMENT_STATUS_INVALID        = 0xFF      /* Invalid value */
}NETDEV_HDD_HEALTH_ASSESSMENT_STATUS_E;

/**
* @enum tagNETDEVHDDSmartAssessmentStatus
* @brief 硬盘Smart评估状态
* @attention 无 None
*/
typedef enum tagNETDEVHDDSmartAssessmentStatus
{
    NETDEV_HDD_SMART_ASSESSMENT_STATUS_NORMAL       = 0,        /* 良好 */
    NETDEV_HDD_SMART_ASSESSMENT_STATUS_WARNING      = 1,        /* 警告 */
    NETDEV_HDD_SMART_ASSESSMENT_STATUS_FAULT        = 2,        /* 故障 */

    NETDEV_HDD_SMART_ASSESSMENT_STATUS_INVALID      = 0xFF      /* Invalid value */
}NETDEV_HDD_SMART_ASSESSMENT_STATUS_E;

/**
* @enum tagNETDEVHDDSmartCheckStatus
* @brief 硬盘Smart检测状态
* @attention 无 None
*/
typedef enum tagNETDEVHDDSmartCheckStatus
{
    NETDEV_HDD_SMART_CHECK_STATUS_NOT                = 0,        /* 未检测 */
    NETDEV_HDD_SMART_CHECK_STATUS_IN_PORGRESS        = 1,        /* 正在自检 */
    NETDEV_HDD_SMART_CHECK_STATUS_SUCCESS            = 2,        /* 自检成功 */
    NETDEV_HDD_SMART_CHECK_STATUS_RECOGNITION_FAIL   = 3,        /* 硬盘识别失败 */
    NETDEV_HDD_SMART_CHECK_STATUS_FAIL               = 4,        /* SMART自检失败 */
    NETDEV_HDD_SMART_CHECK_STATUS_NOT_SUPPORT        = 5,        /* 硬盘不支持检测 */

    NETDEV_HDD_SMART_CHECK_STATUS_INVALID            = 0xFF      /* Invalid value */
}NETDEV_HDD_SMART_CHECK_STATUS_E;

/**
* @brief 图像播放流畅性 Picture fluency
* @attention 无
*/
typedef enum tagNetDEVPictureFluency
{
    NETDEV_PICTURE_REAL                 = 0,                /* 实时性优先 Real-time first */
    NETDEV_PICTURE_FLUENCY              = 1,                /* 流畅性优先 Fluency first */
    NETDEV_PICTURE_BALANCE_NEW          = 3,                /* 均衡 Balance */
    NETDEV_PICTURE_RTMP_FLUENCY         = 4,                /* RTMP流畅性优先 RTMP fluency first */

    NETDEV_PICTURE_FLUENCY_INVALID      = 0xff              /* 无效值 Invalid value */
}NETDEV_PICTURE_FLUENCY_E;

/**
* @brief 云台看守位操作命令 枚举定义 PTZ home position operation commands Enumeration Definition
* @attention 无 None
*/
typedef enum tagNETDEVPtzHomePositionCmd
{
    NETDEV_PTZ_SET_HOMEPOSITION   = 0,            /* 设置看守位  Set home position */
    NETDEV_PTZ_GOTO_HOMEPOSITION  = 1             /* 转到看守位  Go to home position */
}NETDEV_PTZ_HOMEPOSITIONCMD_E;

/**
* @brief 聚焦状态 PTZ Move status
* @attention 无 None
*/
typedef enum tagNETDEVPTZMoveStatus
{
    NETDEV_PTZ_MOVE_STATUS_IDLE     = 0,             /* 空闲 Free */
    NETDEV_PTZ_MOVE_STATUS_MOVING   = 1,             /* 正在聚焦 Moving */

    NETDEV_PTZ_MOVE_STATUS_INVALID  = 0xff           /* 无效值 Invalid value */
}NETDEV_PTZ_MOVE_STATUS_E;

/**
 * @brief 昼夜模式 IRCut filter mode
 * @attention 无 None
 */
typedef enum  tagNETDEVIrCutFilterMode
{
    NETDEV_IR_CUT_FILTER_ON     = 0,            /* 白天模式 On */
    NETDEV_IR_CUT_FILTER_OFF    = 1,            /* 夜晚模式 Off */
    NETDEV_IR_CUT_FILTER_AUTO   = 2             /* 自动模式 Auto */
}NETDEV_IR_CUT_FILTER_MODE_E;

/**
 * @brief 透雾模式枚举 Defogging mode
 * @attention 无 None
 */
typedef enum  tagNETDEVDefoggingMode
{
    NETDEV_DEFOGGING_ON = 0,            /* 开 On */
    NETDEV_DEFOGGING_OFF                /* 关 Off */
}NETDEV_DEFOGGING_MODE_E;

/**
 * @brief 聚焦模式枚举 Focus mode
 * @attention 无 None
 */
typedef enum tagNETDEVFocusMode
{
    NETDEV_FOCUS_AUTO           = 1,            /* 自动聚焦 Auto */
    NETDEV_FOCUS_MANUAL         = 2             /* 手动聚焦 Manual */
}NETDEV_FOCUS_MODE_E;

/**
 * @brief 最小聚焦距离枚举 Focus near limit
 * @attention 无 None
 */
typedef enum tagNETDEVFocusNearlimit
{
    NETDEV_FOCUS_NEARLIMIT_10       = 1,            /* 10cm */
    NETDEV_FOCUS_NEARLIMIT_100      = 2,            /* 100cm */
    NETDEV_FOCUS_NEARLIMIT_300      = 3,            /* 300cm */
    NETDEV_FOCUS_NEARLIMIT_1000     = 4,            /* 1000cm */

    NETDEV_FOCUS_NEARLIMI_INVALID   = 0xff          /* 无效值  Invalid value */
}NETDEV_FOCUS_NEARLIMIT_E;

/**
* @brief 录像类型 Record Type
* @attention 无
*/
typedef enum tagNETDEVRecordType
{
    NETDEV_RECORD_TYPE_MANUAL  = 0,
    NETDEV_RECORD_TYPE_NORMAL = 1
}NETDEV_RECORD_TYPE_E;


/**
 * @brief 录像查询位置 Video Position
 * @attention 无 None
 */
typedef enum tagNETDEVVideoPosition
{
    NETDEV_POSITION_LOCAL       = 1,            /* 设备自身录像 */
    NETDEV_POSITION_CHANNEL     = 2,            /* 设备下的通道录像 */
    NETDEV_POSITION_INVALID
}NETDEV_VIDEO_POSITION_E;

/**
 * @brief 录像状态 Video Status
 * @attention 无 None
 */
typedef enum tagNETDEVVideoStatus
{
    NETDEV_VIDEO_NONE       = 0,        /* 无录像 No video */
    NETDEV_VIDEO_EVENT      = 1,        /* 事件录像 Event video */
    NETDEV_VIDEO_NORMAL     = 2,        /* 普通录像 Normal video */
    NETDEV_VIDEO_INVALID
}NETDEV_VIDEO_STATUS_E;


/**
* @brief 能力集命令 Device capability commond
* @attention 无
*/
typedef enum tagNETDEVCapabilityCommond
{
    NETDEV_CAP_VIDEO_ENCODE         = 1,            /* 视频编码能力集 参见# NETDEV_VIDEO_STREAM_CAP_S。 Video encoding capability. See # NETDEV_VIDEO_STREAM_CAP_S for reference*/
    NETDEV_CAP_OSD                  = 2,            /* OSD参数能力集 参见# NETDEV_OSD_CAP_S。 OSD parameter capability. See # NETDEV_OSD_CAP_S for reference*/
    NETDEV_CAP_SMART                = 3,            /* 智能能力集 参见# NETDEV_SMART_CAP_S。 Smart capability. See # NETDEV_SMART_CAP_S for reference */
    NETDEV_CAP_VIDEO_ENCODE_EX      = 4,            /* 视频编码能力集（扩展） 参见# NETDEV_VIDEO_STREAM_CAP_EX_S。 Video encoding capability. See # NETDEV_VIDEO_STREAM_CAP_EX_S for reference */
    NETDEV_CAP_IMAGE                = 5,            /* 图像参数能力集 参见#NETDEV_IMAGE_CAP_S。 Image capability See # NETDEV_IMAGE_CAP_S for reference*/
    NETDEV_CAP_AUDIO                = 6,            /* 音频能力集 参见 NETDEV_AUDIO_CAPABILITY_INFO_S */
    NETDEV_CAP_VIDEO_SNAPSHOT       = 7,            /* 视频输入通道的抓图参数能力 参见#NETDEV_VIDEO_SNAP_CAP_S Video snapshot capability. See # NETDEV_VIDEO_SNAP_CAP_S for reference   目前仅IPC支持*/
    NETDEV_CAP_FACE_RECOGNAZE       = 10,           /* 人脸识别能力 目前仅NVR支持, 参见NETDEV_DEV_FACE_CAP_INFO_S */
    NETDEV_CAP_DEV_NIC              = 11,           /* 设备网卡能力集, 参见NETDEV_NIC_CAP_INFO_S */
    NETDEV_CAP_DEV_EXCEPTION_ALARM  = 12,           /* 设备异常告警能力集, 参见# NETDEV_EXCP_ALARM_CAP_INFO_S */
    NETDEV_CAP_CHANNELS_ALARM       = 13,           /* 通道告警能力集, 参见 NETDEV_CHN_ALARM_CAP_INFO_S */

    NETDEV_CAP_INVALID              = 0Xff
}NETDEV_CAPABILITY_COMMOND_E;

/**
* @brief 编码格式类型
* @attention 无
*/
typedef enum tagNETDEVVideoEncodeType
{
    NETDEV_VIDEO_ENCODE_H264    = 1,
    NETDEV_VIDEO_ENCODE_MPEG4   = 2,
    NETDEV_VIDEO_ENCODE_JPEG    = 3,

    NETDEV_VIDEO_ENCODE_INVALID = 0XFF
}NETDEV_ENCODE_TYPE_E;


/**
* @brief 客流量统计模式类型 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVTrafficStatisticsType
{
    NETDEV_TRAFFIC_STATISTICS_TYPE_IN   = 0,        /* 统计类型：进入 Statistics type : Enter */
    NETDEV_TRAFFIC_STATISTICS_TYPE_OUT  = 1,        /* 统计类型：离开 Statistics type : Exit */
    NETDEV_TRAFFIC_STATISTICS_TYPE_ALL  = 2,        /* 统计类型：所有 Statistics type : All */
    NETDEV_TRAFFIC_STATISTICS_TYPE_BUTT
}NETDEV_TRAFFIC_STATISTICS_TYPE_E;

/**
* @brief 客流量统计报表类型 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVFormType
{
    NETDEV_FORM_TYPE_DAY    = 0,            /* 日报表 Form type : Day */
    NETDEV_FORM_TYPE_WEEK   = 1,            /* 周报表 Form type : Week */
    NETDEV_FORM_TYPE_MONTH  = 2,            /* 月报表 Form type : Month */
    NETDEV_FORM_TYPE_YEAR   = 3,            /* 年报表 Form type : Year */
    NETDEV_FORM_TYPE_BUTT
}NETDEV_FORM_TYPE_E;

/**
* @brief 地址类型 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVAddrType
{
    NETDEV_ADDR_TYPE_IPV4       = 0,             /* IPV4 */
    NETDEV_ADDR_TYPE_IPV6       = 1,             /* IPV6 */
    NETDEV_ADDR_TYPE_DOMAIN     = 2,             /* 域名 */
    NETDEV_ADDR_TYPE_IPV4_IPV6  = 3,             /* IPV4和IPV6都需要 */
    NETDEV_ADDR_TYPE_INVALID    = 0XFFFF         /* 无效值 */
}NETDEV_ADDR_TYPE_E;

/**
* @brief 图像扩展编码模式类型 枚举定义 Enumeration of smart image encoding mode
* @attention 无 None
*/
typedef enum tagNETDEVSmartEncodeMode
{
    NETDEV_SMART_ENCODE_MODE_OFF      = 0,      /* 关闭 Off*/
    NETDEV_SMART_ENCODE_MODE_BASIC    = 1,      /* 基础智能编码模式 Basic mode*/
    NETDEV_SMART_ENCODE_MODE_ADVANCED           /* 高级智能编码模式 Advanced mode*/
}NETDEV_SMART_ENCODE_MODE_E;
/**
* @brief 码率模式类型 枚举定义 Enumeration of bit rate mode
* @attention 无 None
*/
typedef enum tagNETDEVBitRateType
{
    NETDEV_BIT_RATE_TYPE_CBR      = 0,         /* CBR模式 CBR mode*/
    NETDEV_BIT_RATE_TYPE_VBR      = 1          /* VBR模式 VBR mode*/
}NETDEV_BIT_RATE_TYPE_E;

/**
* @brief 主码流类型 枚举定义 Enumeration of main stream type
* @attention 无 None
*/
typedef enum tagNETDEVMainStreamType
{
    NETDEV_MAIN_STREAM_TYPE_TIME     = 0,      /* 定时主码流 Scheduled main stream*/
    NETDEV_MAIN_STREAM_TYPE_EVENT    = 1       /* 事件主码流 Event main stream*/
}NETDEV_MAIN_STREAM_TYPE_E;

/**
* @brief GOP类型 枚举定义 Enumeration of GOP type
* @attention 无 None
*/
typedef enum tagNETDEVGopType
{
    NETDEV_GOP_TYPE_IP       = 0,      /* IP */
    NETDEV_GOP_TYPE_IBP      = 1,      /* IBP */
    NETDEV_GOP_TYPE_IBBP     = 2,      /* IBBP */
    NETDEV_GOP_TYPE_I        = 3       /* I */
}NETDEV_GOP_TYPE_E;

/**
* @brief OSD内容类型 枚举定义 Enumeration of content type
* @attention 无 None
*/
typedef enum tagNETDEVOSDContentType
{
    NETDEV_OSD_CONTENT_TYPE_NOTUSE                      = 0,                    /* 不使用 Not used*/
    NETDEV_OSD_CONTENT_TYPE_CUSTOM                      = 1,                    /* 自定义 Custom*/
    NETDEV_OSD_CONTENT_TYPE_DATE_AND_TIME               = 2,                    /* 时间日期 Time and date*/
    NETDEV_OSD_CONTENT_TYPE_PTZ_CONTROLLER              = 3,                    /* 云台控制者 PTZ controller*/
    NETDEV_OSD_CONTENT_TYPE_PTZ_COORDINATES             = 4,                    /* 云台坐标 PTZ Coordinates*/
    NETDEV_OSD_CONTENT_TYPE_CRUISE                      = 5,                    /* 巡航信息 Patrol*/
    NETDEV_OSD_CONTENT_TYPE_ZOOM                        = 6,                    /* 变倍信息 Zoom*/
    NETDEV_OSD_CONTENT_TYPE_PRESET                      = 7,                    /* 预置位信息  Preset*/
    NETDEV_OSD_CONTENT_TYPE_ALARM_INFO                  = 8,                    /* 报警信息 Alarm */
    NETDEV_OSD_CONTENT_TYPE_ENCODE                      = 9,                    /* 编码信息 Encoding*/
    NETDEV_OSD_CONTENT_TYPE_SERIAL_PORT                 = 10,                   /* 串口OSD Serial Port OSD*/
    NETDEV_OSD_CONTENT_TYPE_PTZ_ORIENTATION             = 11,                   /* 云台方位信息 PZT direction*/
    NETDEV_OSD_CONTENT_TYPE_CHN_NAME                    = 12,                   /* 通道名称 Channel name*/
    NETDEV_OSD_CONTENT_TYPE_DEBUG                       = 13,                   /* 调试OSD  Debug OSD*/
    NETDEV_OSD_CONTENT_TYPE_PEOPLE_COUNTING             = 14,                   /* 人数统计OSD People counting OSD*/
    NETDEV_OSD_CONTENT_TYPE_NETWORK_PORT                = 15,                   /* 网口OSD Network Port OSD*/
    NETDEV_OSD_CONTENT_TYPE_TIME                        = 16,                   /* 时间 Time*/
    NETDEV_OSD_CONTENT_TYPE_DATE                        = 17,                   /* 日期 Date*/
    NETDEV_OSD_CONTENT_TYPE_SMART_CONTENT               = 18,                   /* 超感类OSD Sensing OSD*/
    NETDEV_OSD_CONTENT_TYPE_BATTERY                     = 19,                   /* 电池OSD Battery OSD*/
    NETDEV_OSD_CONTENT_TYPE_SCROLL_OSD                  = 20,                   /* 滚动字幕OSD Scroll text OSD*/
    NETDEV_OSD_CONTENT_TYPE_PICTURE_OVERLAY             = 21,                   /* LOGO OSD */
    NETDEV_OSD_CONTENT_TYPE_MOTOR_VEHICLE_NUM           = 22,                   /* 天网卡口机动车流量 Vehicle flow of LPR*/
    NETDEV_OSD_CONTENT_TYPE_NON_MOTOR_VEHICLE_NUM       = 23,                   /* 天网卡口非机动车流量 Non-vehicle flow of LPR*/
    NETDEV_OSD_CONTENT_TYPE_PEOPLE_NUM                  = 24,                   /* 天网卡口行人流量 Pedestrian flow of LPR*/
    NETDEV_OSD_CONTENT_TYPE_INFOOSD_NUM                 = 25                    /* INFOOSD类型数目 Number of INFOOSDtype*/
}NETDEV_OSD_CONTENT_TYPE_E;

/**
 * @brief 日期格式 枚举定义 Enumeration of date format
 * @attention 无 None
 */
typedef enum tagNETDEVDateOSDFormate
{
    NETDEV_OSD_DATE_FORMAT_YYYY_MMDD                = 0,           /* yyyy-MM-dd */
    NETDEV_OSD_DATE_FORMAT_MMDD_YYYY                = 1,           /* MM-dd-yyyy */
    NETDEV_OSD_DATE_FORMAT_CHINESE_YYYY_MMDD        = 2,           /* yyyy年MM月dd日 yyyy/MM/dd*/
    NETDEV_OSD_DATE_FORMAT_CHINESE_MMDD_YYYY        = 3,           /* MM月dd日yyyy年 MM/dd/yyyy*/
    NETDEV_OSD_DATE_FORMAT_CHINESE_YYY_MMDD_X       = 4,           /*  yyyy年MM月dd日 星期X。 dddd yyyy MM dd*/
    NETDEV_OSD_DATE_FORMAT_CHINESE_MMDD_YYYY_X      = 5,           /* MM月dd日yyyy年 星期X。 dddd MM dd yyyy*/
    NETDEV_OSD_DATE_FORMAT_ENGLISH_DDMM_YYYY        = 100,         /* dd/MM/yyyy */
    NETDEV_OSD_DATE_FORMAT_ENGLISH_MMDD_YYYY        = 101,         /* MM/dd/yyyy */
    NETDEV_OSD_DATE_FORMAT_ENGLISH_DDMMMM_YYYY      = 102,         /* dd MMMM, yyyy */
    NETDEV_OSD_DATE_FORMAT_ENGLISH_MMMMDD_YYYY      = 103,         /* MMMM dd, yyyy */
    NETDEV_OSD_DATE_FORMAT_ENGLISH_DDDDDDMMMM_YYYY  = 104,         /* dddd, dd MMMM, yyyy  */
    NETDEV_OSD_DATE_FORMAT_ENGLISH_DDDDDDMMMM_DDYYYY = 105,        /* dddd, MMMM dd, yyyy */
    NETDEV_OSD_DATE_FORMAT_ENGLISH_YYYY_MMDD        = 106,         /*  yyyy/MM/dd */
    NETDEV_OSD_DATE_FORMAT_ENGLISH_YYYY_MMMMDD      = 107,         /*  yyyy, MMMM dd */
    NETDEV_OSD_DATE_FORMAT_ENGLISH_DDDDYY_MMDD      = 108         /*  dddd, yy, MM dd */
}NETDEV_OSD_DATE_FORMAT_E;

/**
 * @brief OSD时间格式枚举 Enumeration of OSD time format
 * @attention 无 None
 */
typedef enum tagNETDEVTimeOSDFormate
{
    NETDEV_OSD_TIME_FORMAT_HHMMSS         = 0,                  /* HH:mm:ss */
    NETDEV_OSD_TIME_FORMAT_HH_MM_SS_T     = 1,                  /* hh:mm:ss t.t. */
    NETDEV_OSD_TIME_FORMAT_HH_MM_SS_TT    = 2,                  /* hh:mm:ss tt */
    NETDEV_OSD_TIME_FORMAT_TT_HH_MM_SS    = 3,                  /*  tt hh:mm:ss */
    NETDEV_OSD_TIME_FORMAT_PM_HH_MM_SS    = 4,                  /* 下午 hh:mm:ss  P.M. hh:mm:ss*/
    NETDEV_OSD_TIME_FORMAT_HH_MM_SS_XX    = 5,                  /* HH:mm:ss.xxx */
    NETDEV_OSD_TIME_FORMAT_HH_MM_SS_XX_TT = 6                   /* hh:mm:ss.xxx tt */

}NETDEV_OSD_TIME_FORMAT_E;

/**
 * @brief OSD字体形式枚举 Enumeration of OSD font style
 * @attention 无 None
 */
typedef enum tagNETDEVOSDFontStyle
{
    NETDEV_OSD_FONT_STYLE_BACKGROUND    = 0,                  /* 背景 Background*/
    NETDEV_OSD_FONT_STYLE_STROKE        = 1,                  /* 描边 Stroke*/
    NETDEV_OSD_FONT_STYLE_HOLLOW        = 2,                  /* 空心 Hollow*/
    NETDEV_OSD_FONT_STYLE_NORMAL        = 3                   /* 正常 Normal*/
}NETDEV_OSD_FONT_STYLE_E;

/**
 * @brief OSD字体大小枚举 Enumeration of OSD font size
 * @attention 无 None
 */
typedef enum tagNETDEVOSDFontSize
{
    NETDEV_OSD_FONT_SIZE_LARGE      = 0,                  /* 特大 X-large*/
    NETDEV_OSD_FONT_SIZE_BIG        = 1,                  /* 大 Large*/
    NETDEV_OSD_FONT_SIZE_MEDIUM     = 2,                  /* 中 Medium*/
    NETDEV_OSD_FONT_SIZE_SMALL      = 3                   /* 小 Small*/
}NETDEV_OSD_FONT_SIZE_E;

/**
 * @brief OSD字体大小枚举 Enumeration of OSD font size
 * @attention 无 None
 */
typedef enum tagNETDEVOSDMinMargin
{
    NETDEV_OSD_MIN_MARGIN_NONE    = 0,               /* 无 None*/
    NETDEV_OSD_MIN_MARGIN_SINGLE  = 1,               /* 一个字符宽度 One char width*/
    NETDEV_OSD_MIN_MARGIN_DOUBLE  = 2                /* 两个字符宽度 Two char width*/
}NETDEV_OSD_MIN_MARGIN_E;

/**
 * @brief OSD区域内对齐枚举 Enumeration of OSD align
 * @attention 无 None
 */
typedef enum tagNETDEVOSDAlign
{
    NETDEV_OSD_ALIGN_LEFT       = 0,               /* 左对齐 Left*/
    NETDEV_OSD_ALIGN_RIGHT      = 1                /* 右对齐 Right*/
}NETDEV_OSD_ALIGN_E;

/**
*@brief 启流模式类型枚举
*@attention 无
*/
typedef enum tagNETDEVPullStreamMode
{
    NETDEV_STREAM_MODE_SERVER_DISTRIBUTE    = 0,   /* 服务器分配 */
    NETDEV_STREAM_MODE_FORCE_CDN            = 1    /* 强制分发 */
}NETDEV_PULL_STREAM_MODE_E;


/**
*@brief 分发模式类型枚举
*@attention 无
*/
typedef enum tagNETDEVDistributeMode
{
    NETDEV_DISTRIBUTE_MODE_AUTO       = 0,            /* 自动 */
    NETDEV_DISTRIBUTE_MODE_FORCE      = 1             /* 强制 */
}NETDEV_DISTRIBUTE_MODE_E;

/**
*@brief 监听类型枚举
*@attention 无
*/
typedef enum tagNETDEVListenType
{
    NETDEV_FACE_SNAPSHOT_TYPE       = 1,    //人脸抓拍

    NETDEV_LISTEN_TYPE_INVALID      = 0xffff
}NETDEV_LISTEN_TYPE_E;


/**
*@brief 登录类型枚举
*@attention 无
*/
typedef enum tagNETDEVLoginType
{
    NETDEV_LOGIN_TYPE_LOCAL             = 0,          /* 本地登录 */
    NETDEV_LOGIN_TYPE_DYNAMIC           = 1,          /* 动态密码登录 */
    NETDEV_LOGIN_TYPE_LOCAL_ALL         = 2,          /* 支持第三方设备 */
    NETDEV_LOGIN_TYPE_CLOUD_DEVICE      = 3,          /* 云设备登录 */
    NETDEV_LOGIN_TYPE_CLOUD_DEVICE_SN   = 4           /* 云设备SN登录 */
}NETDEV_LOGIN_TYPE_E;

/**
*@brief 接入协议枚举
*@attention 无
*/
typedef enum tagNETDEVLoginProto
{
    NETDEV_LOGIN_PROTO_ONVIF             = 0,           /* 以ONVIF协议接入 */
    NETDEV_LOGIN_PROTO_PRIVATE           = 1            /* 以私有协议接入 */
}NETDEV_LOGIN_PROTO_E;


/**
* @brief 告警协议 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVAlarmProtocol
{
    NETDEV_ALARM_PROTOCOL_ONVIF   = 0X01,                   /* ONVIF */
    NETDEV_ALARM_PROTOCOL_PRIVATE = 0X02,                   /* private */

    NETDEV_ALARM_PROTOCOL_INVALID = 0XFF                    /* 无效值*/
}NETDEV_ALARM_PROTOCOL_E;

/**
* @brief 订阅告警事件类型BIT位定义 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVSubscribeAlarmType
{
    NETDEV_SUBSCRIBE_ALARM_TYPE_COM             = 0X01,     /* 通用告警 */
    NETDEV_SUBSCRIBE_ALARM_TYPE_SMART           = 0X02,     /* 智能告警 */
    NETDEV_SUBSCRIBE_ALARM_TYPE_INTELLIGENTIPC  = 0X04      /* 智能IPC */
}NETDEV_SUBSCRIBE_ALARM_TYPE_E;


/* 回放控制类型 */
typedef enum tagNETDEVCtrlType
{
    NETDEV_CTRL_TYPE_SPEED = 1,                                     /* 回放倍速 */ 
    NETDEV_CTRL_TYPE_INVALID
}NETDEV_XW_CTRL_TYPE_E;

/* 虚拟LED类型 */
typedef enum tagNETDEVLEDType
{
    NETDEV_LED_TYPE_STRING = 0                                   /* 字符型 */
}NETDEV_XW_LED_TYPE_E;

/* 虚拟LED字体 */
typedef enum tagNETDEVLEDFontFormat
{
    NETDEV_LED_FONT_SONG                    = 0,                            /* 宋体 */
    NETDEV_LED_FONT_FORMAT_SIMHEI           = 1,                            /* 黑体 */
    NETDEV_LED_FONT_FORMAT_KAITI            = 2,                            /* 楷体 */
    NETDEV_LED_FONT_FORMAT_Arial            = 3,                            /* Arial */
    NETDEV_LED_FONT_FORMAT_FANGSONG         = 4,                            /* 仿宋 */
    NETDEV_LED_FONT_FORMAT_LISHU            = 5,                            /* 隶书 */
    NETDEV_LED_FONT_FORMAT_YOUYUAN          = 6                             /* 幼圆 */
}NETDEV_XW_LED_FONT_FORMAT_E;
/* 虚拟LED字体大小 */
typedef enum tagNETDEVXWLEDFontSize
{
    NETDEV_LED_FONT_SIZE_48X48      = 0,                            /* 48X48点阵 */
    NETDEV_LED_FONT_SIZE_64X64      = 1,                            /* 64X64点阵 */
    NETDEV_LED_FONT_SIZE_96X96      = 2,                            /* 96X96点阵 */
    NETDEV_LED_FONT_SIZE_128X128    = 3,                            /* 128X128点阵 */
    NETDEV_LED_FONT_SIZE_192X192    = 4,                            /* 192X192点阵 */
    NETDEV_LED_FONT_SIZE_256X256    = 5,                            /* 256X256点阵 */
    NETDEV_LED_FONT_SIZE_512X512    = 6,                            /* 512X512点阵 */
    NETDEV_FONT_SIZE_SELF_ADAPTION  = 7                             /* 自适应 */
}NETDEV_XW_LED_FONT_SIZE_E;

/* 虚拟LED字间距 一个中文占2字符*/
typedef enum tagNETDEVXWLEDFontGap
{
    NETDEV_LED_FONT_GAP_NORMAL         = 0,         /* 正常间距 */
    NETDEV_LED_FONT_GAP_ONE            = 1,         /* 间隔2/4高 */
    NETDEV_LED_FONT_GAP_TWO            = 2,         /* 间隔4/4高 */
    NETDEV_LED_FONT_GAP_THREE          = 3,         /* 间隔6/4高 */
    NETDEV_LED_FONT_GAP_FOUR           = 4,         /* 间隔8/4高 */
    NETDEV_LED_FONT_GAP_FIVE           = 5,         /* 间隔1/4高 */
    NETDEV_LED_FONT_GAP_SIX            = 6,         /* 间隔3/4高 */
    NETDEV_LED_FONT_GAP_SEVEN          = 7,         /* 间隔5/4高 */
    NETDEV_LED_FONT_GAP_EIGHT          = 8,         /* 间隔7/4高 */
    NETDEV_LED_FONT_GAP_NINE           = 9,         /* 间隔10/4高 */
    NETDEV_LED_FONT_GAP_INVALID        = 0xFF       /* 无效值(自适应)  Invalid value */
}NETDEV_XW_LED_FONT_GAP_E;

/* 文字滚动方式 */
typedef enum tagNETDEVLEDScrollingMode
{
    NETDEV_LED_SCROLL_STATIC            = 0,        /* 静止 */
    NETDEV_LED_SCROLL_RIGHT_TO_LEFT     = 1,        /* 从右到左 */
    NETDEV_LED_SCROLL_LEFT_TO_RIGHT     = 2,        /* 从左到右 */
    NETDEV_LED_SCROLL_BOTTOM_TO_TOP     = 3,        /* 从下到上 */
    NETDEV_LED_SCROLL_TOP_TO_BOTTOM     = 4         /* 从上到下 */
}NETDEV_XW_LED_SCROLLING_MODE_E;

/* 文字垂直对齐方式 */
typedef enum tagNETDEVVerticalAlignMode
{
    NETDEV_VERTICAL_ALIGN_TOP           = 0,        /* 上对齐 */
    NETDEV_VERTICAL_ALIGN_MIDDLE        = 1,        /* 居中对齐 */
    NETDEV_VERTICAL_ALIGN_BOTTOM        = 2         /* 下对齐*/
}NETDEV_XW_VERTICAL_ALIGN_MODE_E;

/* 文字水平对齐方式 */
typedef enum tagNETDEVHorizontalAlignMode
{
    NETDEV_HORIZONTAL_ALIGN_LEFT        = 0,        /* 左对齐 */
    NETDEV_HORIZONTAL_ALIGN_MIDDLE      = 1,        /* 居中对齐 */
    NETDEV_HORIZONTAL_ALIGN_RIGHT       = 2         /* 右对齐*/
}NETDEV_XW_HORIZONTAL_ALIGN_MODE_E;

/* 文字位置 */
typedef enum tagNETDEVContentPosition
{
    NETDEV_XW_CONTENT_POSITION_TOP           = 0,        /* 上 */
    NETDEV_XW_CONTENT_POSITION_MIDDLE        = 1,        /* 中 */
    NETDEV_XW_CONTENT_POSITION_BOTTOM        = 2         /* 下*/
}NETDEV_XW_CONTENT_POSITION_E;

/* 虚拟LED修改可选命令字 */
typedef enum tagNETDEVLedCmd
{
    NETDEV_LED_ENABLE               = 0x0001,                   /* 分屏模式 udwEnable */
    NETDEV_LED_TYPE                 = 0x0002,                   /* 虚拟LED类型 dwType */
    NETDEV_LED_AREA                 = 0x0004,                   /* 虚拟LED的位置信息 stArea */
    NETDEV_LED_BACKGROUND           = 0x0008,                   /* 底色 stBackground */
    NETDEV_LED_FONTINFO             = 0x0010,                   /* 文字信息描述 stFontInfo */
    NETDEV_LED_TEXT                 = 0x0020,                   /* 文字内容 udwTestLineNum szText*/
    NETDEV_LED_ALL                  = 0x00FF                    /* 全部 all*/
} NETDEV_XW_LED_CMD_E;

/* 底图类型 */
typedef enum tagNETDEVBaseType
{
    NETDEV_BASE_TYPE_JPEG = 1                                    /* JPEG类型 */
}NETDEV_XW_BASE_TYPE_E;

/* 传输协议 */
typedef enum tagNETDEVTransportProtocol
{
    NETDEV_TRANSPORT_PROTOCOL_UDP = 0,             /* UDP */
    NETDEV_TRANSPORT_PROTOCOL_TCP,                 /* TCP */
    NETDEV_TRANSPORT_PROTOCOL_RTSP,                /* RTSP */
    NETDEV_TRANSPORT_PROTOCOL_HTTP                 /* HTTP */
}NETDEV_TRANSPORT_PROTOCOL_E;

/**
* @brief 轮巡状态 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVXWSequenceResStatus
{
    NETDEV_XW_SEQUENCE_RES_STATUS_RUNNING   = 0,            /* 运行 */
    NETDEV_XW_SEQUENCE_RES_STATUS_PAUSE     = 1,            /* 暂停 */
    NETDEV_XW_SEQUENCE_RES_STATUS_STOP      = 2,            /* 停止 */

    NETDEV_XW_SEQUENCE_RES_STATUS_INVALID = 0xFF           /* 无效值 */
}NETDEV_XW_SEQUENCE_RES_STATUS_E;

/**
 * @brief 图片类型枚举
 * @attention 无 None
 */
typedef enum  tagNETDEVTMSPersionImageType
{
    NETDEV_TMS_PERSION_IMAGE_TYPE_FULL_VIEW = 1,         /* 全景图 */
    NETDEV_TMS_PERSION_IMAGE_TYPE_FACE = 2,              /* 人脸图 */
    NETDEV_TMS_PERSION_IMAGE_TYPE_INVALID
}NETDEV_TMS_PERSION_IMAGE_TYPE_E;

/**
 * @brief 图片格式枚举
 * @attention 无 None
 */
typedef enum  tagNETDEVTMSPersionImageFormatType
{
    NETDEV_TMS_PERSION_IMAGE_FORMAT_JPG  = 1,            /* JPEG */
    NETDEV_TMS_PERSION_IMAGE_FORMAT_BMP  = 2,            /* BMP */
    NETDEV_TMS_PERSION_IMAGE_FORMAT_PNG  = 3,            /* PNG */
    NETDEV_TMS_PERSION_IMAGE_FORMAT_GIF  = 4,            /* GIF */
    NETDEV_TMS_PERSION_IMAGE_FORMAT_TIFF = 5,            /* TIFF */
    NETDEV_TMS_PERSION_IMAGE_FORMAT_INVALID
}NETDEV_TMS_PERSION_IMAGE_FORMAT_E;

/**
 * @brief 控制方式类型
 * @attention
 */
typedef enum tagNETDEVXWScreenCtrlType
{
    NETDEV_XW_SCREEN_CTRL_TYPE_TCP              = 0,          /* TCP */
    NETDEV_XW_SCREEN_CTRL_TYPE_UDP              = 1,          /* UDP */
    NETDEV_XW_SCREEN_CTRL_TYPE_COM              = 2,          /* 串口 */

    NETDEV_XW_SCREEN_CTRL_TYPE_INVALID          = 0xFF        /* 无效值 */
}NETDEV_XW_SCREEN_CTRL_TYPE_E;

/**
 * @brief 控制协议类型
 * @attention
 */
typedef enum tagNETDEVXWScreenCtrlProtocolType
{
    NETDEV_XW_SCREEN_CTRL_PROT_LCD          = 0,          /* LCD屏私有协议 */
    NETDEV_XW_SCREEN_CTRL_PROT_LED          = 1,          /* LED屏私有协议 */
    NETDEV_XW_SCREEN_CTRL_PROT_MODBUS       = 2,          /* MODBUS */

    NETDEV_XW_SCREEN_CTRL_PROT_INVALID      = 0xFF        /* 无效值 */
}NETDEV_XW_SCREEN_CTRL_PROTOCOL_TYPE_E;

/**
 * @brief 屏幕放大类型
 * @attention
 */
typedef enum tagNETDEVXWScreenZoomdType
{
    NETDEV_XW_SCREEN_ZOOM_TYPE_PANE           = 0,           /*分屏放大*/
    NETDEV_XW_SCREEN_ZOOM_TYPE_WIN            = 1,           /*窗口放大*/

    NETDEV_XW_SCREEN_ZOOM_TYPE_INVALID        = 0xFF         /* 无效值 */
}NETDEV_XW_SCREEN_ZOOM_TYPE_E;

/**
 * @brief 屏幕放大模式
 * @attention
 */
typedef enum tagNETDEVXWScreenZoomdMode
{
    NETDEV_XW_SCREEN_ZOOM_MODE_OFF             = 0,          /*恢复*/
    NETDEV_XW_SCREEN_ZOOM_MODE_ON              = 1,          /*放大*/

    NETDEV_XW_SCREEN_ZOOM_MODE_INVALID         = 0xFF        /* 无效值 */
}NETDEV_XW_SCREEN_ZOOM_MODE_E;

/* 分屏能力 */
typedef enum tagNETDEVPaneCap
{
    NETDEV_PANE_UNSUPPORT   = 0,        /* 不支持 */
    NETDEV_PANE_SAME_WND    = 1,        /* 支持单监视器相同大小&位置的窗口分屏 */
    NETDEV_PANE_ANY_WND     = 2,        /* 支持任意窗口的分屏 */

    NETDEV_PANE_INVALID     = 0xFF      /* 无效值 */
}NETDEV_XW_PANE_CAP_E;

/* 窗口漫游能力 */
typedef enum tagNETDEVRoamingCap
{
    NETDEV_ROAMING_UNSUPPORT    = 0,        /* 不支持 */
    NETDEV_ROAMING_SINGLE_WND   = 1,        /* 支持单分屏窗口漫游 */
    NETDEV_ROAMING_PANE_WND     = 2,        /* 支持多分屏窗口漫游 */

    NETDEV_ROAMING_INVALID      = 0xFF      /* 无效值 */
}NETDEV_XW_ROAMING_CAP_E;

/* 开窗能力 */
typedef enum tagNETDEVWndCap
{
    NETDEV_WINDOWS_UNSUPPORT    = 0,        /* 不支持 */
    NETDEV_WINDOWS_SINGLE_WND   = 1,        /* 支持单监视器相同大小&位置的窗口 */
    NETDEV_WINDOWS_MULTI_WND    = 2,        /* 支持跨多个监视器，满窗口开窗 */
    NETDEV_WINDOWS_ANY_WND      = 3,        /* 任意开窗 */
    NETDEV_WINDOWS_INVALID      =0xff       /* 无效值 */
}NETDEV_XW_WND_CAP_E;

typedef enum tagNETDEVXWSceneModifyType
{
    NETDEV_XW_SCENE_MODIFY_TYPE_NAME        = 0,            /* 修改场景名 modify scene name */
    NETDEV_XW_SCENE_MODIFY_TYPE_SAVE_AS     = 1,            /* 将一个场景的信息保存到另一个场景,场景的数据为当前场景的数据 scene Saved as */

    NETDEV_XW_SCENE_MODIFY_TYPE_INVALID     = 0xff          /* 无效值 */
}NETDEV_XW_SCENE_MODIFY_TYPE_E;

/* 星期几 */
typedef enum tagNETDEVWeekInfo
{
    NETDEV_LAPI_WEEK_MONDAY                  = 1,                  /* 星期一  Monday */
    NETDEV_LAPI_WEEK_TUESDAY                 = 2,                  /* 星期二  Tuesday */
    NETDEV_LAPI_WEEK_WEDNESDAY               = 3,                  /* 星期三  Wednesday */
    NETDEV_LAPI_WEEK_THURSDAY                = 4,                  /* 星期四  Thursday */
    NETDEV_LAPI_WEEK_FRIDAY                  = 5,                  /* 星期五  Friday */
    NETDEV_LAPI_WEEK_SATURDAY                = 6,                  /* 星期六  Saturday */
    NETDEV_LAPI_WEEK_SUNDAY                  = 7,                  /* 星期日  Sunday */
    NETDEV_LAPI_WEEK_HOLIDAY                 = 8,                  /* 假日 Holiday */
    NETDEV_LAPI_WEEK_INVALID                 = 0xff                  /* 无效值 */
}NETDEV_LAPI_WEEK_INFO_E;

/* 场景窗口修改可选命令字 */
typedef enum tagNETDEVWndCommond
{
    NETDEV_WND_PANE_MOD         = 0x0001,       /* 分屏模式 udwPaneMod */
    NETDEV_WND_LAYER            = 0x0002,       /* 图层 udwLayer */
    NETDEV_WND_TRANSPARENCY     = 0x0004,       /* 透明度 udwTransparency */
    NETDEV_WND_AREA             = 0x0008,       /* 位置信息 stArea */
    NETDEV_WND_NAME             = 0x0010,       /* 窗口名称 name */
    NETDEV_WND_STATUS           = 0x0020,       /* 是否锁定 */
    NETDEV_WND_WND_TYPE         = 0x0040,       /* 窗口类型 */
    NETDEV_WND_DC_CHI_ID        = 0x0080,       /* DC通道ID */
    NETDEV_WND_ZOOM_TYPE        = 0x0100,       /* 放大类型 */
    NETDEV_WND_SPLIT_INDEX      = 0x0200,       /* 分屏序号 */
    NETDEV_WND_SCHEME_RES_ID    = 0x0400,       /* 轮巡资源 */
    NETDEV_WND_SEQ_STATUS       = 0x0800,       /* 轮巡状态参见 */
    NETDEV_WND_PANE_INFO_NUM    = 0x1000,       /* 分屏数量 */
    NETDEV_WND_SCALE_STATUS     = 0x2000,       /* 缩放状态 */
    NETDEV_WND_ALL              = 0xFFFF        /* 全部配置 all */
} NETDEV_XW_WND_CMD_E;

/* 窗口放大类型 */
typedef enum tagNETDEVZoomType
{
    NETDEV_XW_ZOOM_TYPE_NO          = 0x00,     /* 没放大 NO enlarge */
    NETDEV_XW_ZOOM_TYPE_SPLIT       = 0x01,     /* 分屏放大 split enlarge */
    NETDEV_XW_ZOOM_TYPE_WND         = 0x02,     /* 窗口放大 window enlarge */
    NETDEV_XW_ZOOM_TYPE_INVALID     = 0xFF      /* 无效值 invalid vule */
}NETDEV_XW_ZOOM_TYPE_E;


/* 编码格式 */
typedef enum tagNETDEVVideoEncoding
{
    NETDEV_VIDEOENCODING_H264 = 0,
    NETDEV_VIDEOENCODING_H265 = 1,
    NETDEV_VIDEOENCODING_MPEG4 = 2,
    NETDEV_VIDEOENCODING_MPEG2 = 3,
    NETDEV_VIDEOENCODING_MJPEG = 4
}NETDEV_XW_VIDEOENCODING_E;

/*加密类型*/
typedef enum tagNetDevAuthModel
{
    NETDEV_AUTH_MODEL_RSA_10       = 0,    /* RSA加密 E公钥是10进制*/
    NETDEV_AUTH_MODEL_PRI          = 1,    /* 通用字符串加密 */
    NETDEV_AUTH_MODEL_RSA_16       = 2     /* RSA加密，E公钥是16进制 */
}NETDEV_AUTH_MODEL_E;

/**
* @brief 传输协议 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVTransProtocol
{
    NETDEV_TRANS_PROTOCOL_TCP = 0,              /* TCP */
    NETDEV_TRANS_PROTOCOL_UDP = 1             /* UDP */
}NETDEV_TRANS_PROTOCOL_E;

/**
 * @brief 解码 类型
 * @attention
 */
typedef enum tagNETDEVDecodeType
{
    NETDEV_DECODE_TYPE_CLIENT = 0,      /* 解码器端作为客户端 主动解码 */
    NETDEV_DECODE_TYPE_SERVER = 1       /* 解码器端作为服务端 被动解码 */
    
}NETDEV_XW_DECODE_TYPE_E;

/* 实况业务类型 */
typedef enum tagNETDEVRealPlayType
{
    NETDEV_TYPE_NORMAL  = 0,        /* 默认普通实况 */
    NETDEV_TYPE_ALARM   = 1,        /* 告警联动实况 */
    NETDEV_TYPE_LOCAL   = 2         /* 本地实况 */
}NETDEV_XW_REALPLAY_TYPE_E;

 /**
 * @brief 音频通道端口枚举 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVAudioPortType
{
    NETDEV_AUDIO_PORT_SINGLE            = 0,                /* 单声道 */
    NETDEV_AUDIO_PORT_DOUBLE            = 1,                /* 双声道 */
    NETDEV_AUDIO_PORT_INVALID           = 0xff               /* 无效值 */
}NETDEV_AUDIO_PORT_TYPE_E;

/**
 * @brief 视频端口枚举 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVVideoPortType
{
    NETDEV_VIDEO_PORT_BNC            = 0,                /* 端口类型 BNC */
    NETDEV_VIDEO_PORT_VGA            = 1,                /* 端口类型 VGA */
    NETDEV_VIDEO_PORT_HDMI           = 2,                /* 端口类型 HDMI */
    NETDEV_VIDEO_PORT_DVI_D          = 3,                /* 端口类型 DVI_D */
    NETDEV_VIDEO_PORT_DVI_I          = 4,                /* 端口类型 DVI_D */
    NETDEV_VIDEO_PORT_DP             = 5,                /* 端口类型 DVI_D */
    NETDEV_VIDEO_PORT_SDI            = 6,                /* 端口类型 DVI_D */
    NETDEV_VIDEO_PORT_RJ45           = 7,                /* 端口类型 RJ45 */
    NETDEV_VIDEO_PORT_INVALID        = 0xff               /* 无效值 */
}NETDEV_VIDEO_PORT_TYPE_E;

/**
* @brief 分辨率 屏幕输出制式
* @attention DC&&XW公用枚举
*/
typedef enum tagNETDEVXWLayoutNum
{
    NETDEV_XW_LAYOUT_TYPE__SELF_ADAPT    = 0,                  /* 自适应分屏 */
    NETDEV_XW_LAYOUT_TYPE_01             = 100,                /* 1分屏 */
    NETDEV_XW_LAYOUT_TYPE_02             = 200,                /* 2分屏 */
    NETDEV_XW_LAYOUT_TYPE_03             = 300,                /* 3分屏 */
    NETDEV_XW_LAYOUT_TYPE_03_1           = 301,                /* 3分屏 上2下1*/
    NETDEV_XW_LAYOUT_TYPE_04             = 400,                /* 4分屏 */
    NETDEV_XW_LAYOUT_TYPE_04_1           = 401,                /* 4分屏1+1+2 */
    NETDEV_XW_LAYOUT_TYPE_05             = 500,                /* 5分屏1+3+1 */
    NETDEV_XW_LAYOUT_TYPE_05_1           = 501,                /* 5分屏1+1+3 */
    NETDEV_XW_LAYOUT_TYPE_05_2           = 502,                /* 5分屏1+3+1 顺序不同于500 */
    NETDEV_XW_LAYOUT_TYPE_05_3           = 503,                /* 5分屏1+1+3 顺序不同于501 */
    NETDEV_XW_LAYOUT_TYPE_05_4           = 504,                /* 5分屏3+1+1*/
    NETDEV_XW_LAYOUT_TYPE_05_5           = 505,                /* 5分屏1+4*/
    NETDEV_XW_LAYOUT_TYPE_06             = 600,                /* 6分屏1+5 */
    NETDEV_XW_LAYOUT_TYPE_07             = 700,                /* 7分屏1+6 */
    NETDEV_XW_LAYOUT_TYPE_07_1           = 701,                /* 7分屏3+1+3 */
    NETDEV_XW_LAYOUT_TYPE_07_2           = 702,                /* 7分屏3+1+3(3均为上2下1) */
    NETDEV_XW_LAYOUT_TYPE_08             = 800,                /* 8分屏1+7 */
    NETDEV_XW_LAYOUT_TYPE_09             = 900,                /* 9分屏 */
    NETDEV_XW_LAYOUT_TYPE_10             = 1000,               /* 10分屏1+9 */
    NETDEV_XW_LAYOUT_TYPE_10_1           = 1001,               /* 10分屏2+8 */
    NETDEV_XW_LAYOUT_TYPE_13             = 1300,               /* 13分屏1+12 */
    NETDEV_XW_LAYOUT_TYPE_13_1           = 1301,               /* 13分屏1+12 顺序不同1300 */
    NETDEV_XW_LAYOUT_TYPE_16             = 1600,               /* 16分屏 */
    NETDEV_XW_LAYOUT_TYPE_17             = 1700,               /* 17分屏1+16 */
    NETDEV_XW_LAYOUT_TYPE_25             = 2500,               /* 25分屏 */
    NETDEV_XW_LAYOUT_TYPE_32             = 3200,               /* 32分屏3+1+28 */
    NETDEV_XW_LAYOUT_TYPE_36             = 3600,               /* 36分屏 */
    NETDEV_XW_LAYOUT_TYPE_64             = 6400,               /* 64分屏 */
    NETDEV_XW_LAYOUT_TYPE_10001          = 10001,              /* 自定义分屏一 */
    NETDEV_XW_LAYOUT_TYPE_10002          = 10002,              /* 自定义分屏二 */
    NETDEV_XW_LAYOUT_TYPE_10003          = 10003,              /* 自定义分屏三 */
    NETDEV_XW_LAYOUT_TYPE_10004          = 10004,              /* 自定义分屏四 */
    NETDEV_XW_LAYOUT_TYPE_10005          = 10005,              /* 自定义分屏五 */
    NETDEV_XW_LAYOUT_TYPE_10006          = 10006,              /* 自定义分屏六 */
    NETDEV_XW_LAYOUT_TYPE_10007          = 10007,              /* 自定义分屏七 */
    NETDEV_XW_LAYOUT_TYPE_10008          = 10008,              /* 自定义分屏八 */

    NETDEV_XW_LAYOUT_TYPE_INVALID  = 0xffff
}NETDEV_XW_LAYOUT_NUM_E;

/**
* @brief 分辨率 屏幕输出制式
* @attention DC&&XW公用枚举
*/
typedef enum tagNETDEVVideoFormat
{
    NETDEV_VIDEO_FORMAT_720P24          = 2,            /* 1280x720@24 */
    NETDEV_VIDEO_FORMAT_720P25          = 3,            /* 1280x720@25 */
    NETDEV_VIDEO_FORMAT_720P30          = 4,            /* 1280x720@30 */
    NETDEV_VIDEO_FORMAT_720P50          = 5,            /* 1280x720@50 */
    NETDEV_VIDEO_FORMAT_720P60          = 6,            /* 1280x720@60 */
    NETDEV_VIDEO_FORMAT_1080P24         = 10,           /* 1920x1080@24 */
    NETDEV_VIDEO_FORMAT_1080P25         = 11,           /* 1920x1080@25 */
    NETDEV_VIDEO_FORMAT_1080P30         = 12,           /* 1920x1080@30 */
    NETDEV_VIDEO_FORMAT_1080P50         = 13,           /* 1920x1080@50 */
    NETDEV_VIDEO_FORMAT_1080P60         = 14,           /* 1920x1080@60 */
    NETDEV_VIDEO_FORMAT_XGA60           = 15,           /* 1024x768@60 */
    NETDEV_VIDEO_FORMAT_SXGA60          = 16,           /* 1280x1024@60 */
    NETDEV_VIDEO_FORMAT_UXGA60          = 17,           /* 1600x1200@60 */
    NETDEV_VIDEO_FORMAT_SXGAP60HZ       = 18,           
    NETDEV_VIDEO_FORMAT_WXGAP60HZ       = 19,           /* 1366x768@60 */
    NETDEV_VIDEO_FORMAT_WSXGA60HZ       = 20,           /* 1440x900@60 */
    NETDEV_VIDEO_FORMAT_4K30            = 21,           /* 3840x2160@30 */
    NETDEV_VIDEO_FORMAT_4K60            = 22,           /* 3840x2160@60 */
    NETDEV_VIDEO_FORMAT_MUXGA60HZ       = 23,           /* 1920x1200@60 */
    NETDEV_VIDEO_FORMAT_INVALID         = 0xFF
}NETDEV_VIDEO_FORMAT_E;

/**
* @brief 流类型 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVStreamType
{
    NETDEV_STREAM_TYPE_RTP_UNICAST = 0,         /* 单播 */
    NETDEV_STREAM_TYPE_RTP_MULTICAST = 1,        /* 组播 */

    NETDEV_STREAM_TYPE_RTP_INVALID         = 0xFF
}NETDEV_STREAM_TYPE_E;

typedef enum tagNETDEVAlarmSnapShotType
{
    NETDEV_ALARM_SNAPSHOT_MOTION_DETECT                     = 0,            /* 移动告警 */
    NETDEV_ALARM_SNAPSHOT_VIDEO_LOST                        = 1,            /* 视频丢失告警 */
    NETDEV_ALARM_SNAPSHOT_AUDIO_DETECTION                   = 2,            /* 声音检测告警 */
    NETDEV_ALARM_SNAPSHOT_INPUT_SWITCH                      = 3,            /* 开关量输入告警 */
    NETDEV_ALARM_SNAPSHOT_IPC_OFFLINE                       = 4,            /* IPC离线 */
    NETDEV_ALARM_SNAPSHOT_TAMPER_DETECT                     = 5,            /* 遮挡检测 */

    NETDEV_ALARM_SNAPSHOT_CROSS_LINE                        = 6,            /* 越界检测，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_INTROSION_ZONE                    = 7,            /* 区域入侵，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_FACE_DETECT                       = 8,            /* 人脸检测，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_SCENCECHANGE                      = 9,            /* 场景变更，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_OUT_FOCUS                         = 10,           /* 虚焦检测，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_FACE_MATCH                        = 11,           /* 人脸识别匹配告警，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_FACE_NOT_MATCH                    = 12,           /* 人脸识别不匹配报警，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_GATHER                            = 13,           /* 人员聚集，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_REMAIN_ARTICLE                    = 14,           /* 物品遗留，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_SMART_TRACK                       = 15,           /* 智能跟踪，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_LOITERING_DETECTOR                = 16,           /* 徘徊检测，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_VEHICLE_MATCH                     = 17,           /* 车辆识别匹配报警，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_VEHICLE_NOT_MATCH                 = 18,           /* 车辆识别不匹配报警，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_ENTER_AREA                        = 19,           /* 进入区域，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_LEAVE_AREA                        = 20,           /* 离开区域，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_ARTICLE_MOVE                      = 21,           /* 物品搬移，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_DURESS                            = 22,           /* 挟持报警，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_ANRIDISASSEMBLY                   = 23,           /* 防拆报警，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_ANRIDISASSEMBLY_RECOVER           = 24,           /* 防拆报警恢复，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_BYPASS_OPERATION                  = 25,           /* 防区旁路操作，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_CF_BJ_EMBNAM_ZONE                 = 26,           /* 安标报警模块.防区报警，仅一体机支持 */
    NETDEV_ALARM_SNAPSHOT_CONFLAGRATION                     = 27,           /* 火点告警 */

    NETDEV_ALARM_SNAPSHOT_INVALID                        = 0xFFFF        /* 无效值  Invalid value */
}NETDEV_ALARM_SNAPSHOT_TYPE_E;

/**
* @brief 警前预录时间枚举定义          PreRecordTime Enumeration definition
* @attention 
*/
typedef enum tagNETDEVPreRecordTime
{
    NETDEV_PRE_RECORD_TIME_ZERO =  0,            /* 0秒 */
    NETDEV_PRE_RECORD_TIME_FIVE =  5,            /* 5秒 */
    NETDEV_PRE_RECORD_TIME_TEN =   10,           /* 10秒 */
    NETDEV_PRE_RECORD_TIME_TWENTY =20,           /* 20秒 */
    NETDEV_PRE_RECORD_TIME_THIRTY =30,           /* 30秒 */
    NETDEV_PRE_RECORD_TIME_SIXTY = 60            /* 60秒 */
}NETDEV_PRE_RECORD_TIME_E;

/**
* @brief 警后预录时间枚举定义          PostRecordTime Enumeration definition
* @attention 
*/
typedef enum tagNETDEVPostRecordTime
{
    NETDEV_POST_RECORD_TIME_FIVE =                   5,             /* 5秒 */
    NETDEV_POST_RECORD_TIME_TEN =                    10,            /* 10 秒*/
    NETDEV_POST_RECORD_TIME_THIRTY =                 30,            /* 30 秒*/
    NETDEV_POST_RECORD_TIME_SIXTY =                  60,            /* 60 秒*/
    NETDEV_POST_RECORD_TIME_ONE_HUNDRED_AND_TWENTY = 120,           /* 120 秒*/
    NETDEV_POST_RECORD_TIME_THREE_HUNDRED =          300,           /* 300秒 */
    NETDEV_POST_RECORD_TIME_SIX_HUNDRED =            600            /* 600秒 */
}NETDEV_POST_RECORD_TIME_E;

/**
* @brief 布防计划使能 枚举定义          Defence Plan Enable Enumeration definition
* @attention 无 None
*/
typedef enum tagNETDEVDefencePlanEnable
{
    NETDEV_DEFENCE_PLAN_DISABLE     = 0,        /* 不使能 */
    NETDEV_DEFENCE_PLAN_ENABLE      =  1        /* 使能 */
}NETDEV_DEFENCE_PLAN_ENABLE_E;

/**
* @brief 告警布防类型枚举定义          Alarm And Defence Type Enumeration definition
* @attention 各类告警布防只支持定时类型，录像/抓图计划全支持，IPC只支持定时，不需要带字段，默认是定时
*/
typedef enum tagNETDEVArmingType
{
    NETDEV_ARMING_TYPE_TIMING                   = 0,        /* 定时 */
    NETDEV_ARMING_TYPE_MOTIONDETEC              = 1,        /* 动检 */
    NETDEV_ARMING_TYPE_ALARM                    = 2,        /* 报警 */
    NETDEV_ARMING_TYPE_MOTIONDETEC_AND_ALARM    = 3,        /* 动检和报警 */
    NETDEV_ARMING_TYPE_MOTIONDETEC_OR_ALARM     = 4,        /* 动检或报警 */
    NETDEV_ARMING_TYPE_NO_PLAN                  = 5,        /* 无计划 */
    NETDEV_ARMING_TYPE_EVENT                    = 10        /* 事件 */
}NETDEV_ARMING_TYPE_E;



/**
*@brief 拉流类型枚举
*@attention 无
*/
typedef enum tagNETDEVStreamProtocol
{
    NETDEV_STREAM_PRO_RTMP         = 1,          /* RTP */
    NETDEV_STREAM_PRO_HLS          = 2,          /* HLS */
    NETDEV_STREAM_PRO_FLV          = 3           /* FLV */
}NETDEV_CLOUD_STREAM_PROTOCAL_E;

/**
*@brief 分发模式类型枚举
*@attention 无
*/
typedef enum tagNETDEVDistributeCloud
{
    NETDEV_DISTRIBUTE_CLOUD_NONE      = 0,            /* 不启用分发 */
    NETDEV_DISTRIBUTE_CLOUD_KS        = 1,            /* 启用金山云分发 */
    NETDEV_DISTRIBUTE_CLOUD_UN        = 2,            /* 启用宇视云分发 */
    NETDEV_DISTRIBUTE_CLOUD_TEN       = 3            /* 启用腾讯云分发 */
}NETDEV_DISTRIBUTE_CLOUD_SRV_E;

/**
*@brief 网络模式类型枚举
*@attention 无
*/
typedef enum tagNETDevNetWorkMode
{
    NETDEV_NETMODE_LAN          = 0,        /* LAN 模式,仅用于本地及端口映射 */
    NETDEV_NETMODE_WAN          = 1,        /* WAN 模式,仅用于单层NAT */
    NETDEV_NETMODE_MULTINAT     = 2,        /* 多层NAT模式,用于打洞穿网 （转发和打洞未区分）*/
    NETDEV_NETMODE_P2P          = 3,        /* 多层NAT模式,用于打洞穿网 */
    NETDEV_NETMODE_TURN         = 4         /* 多层NAT模式,用于转发 */

}NETDEV_NETWORK_MODE_E;


/**
 * @enum tagNETDEVReportType
 * @brief 告警/事件上报类型
 * @attention 无 None
 */
typedef enum tagNETDEVReportType
{
    NETDEV_REPORT_TYPE_ALARM            = 0,                /* 上报类型：告警 */
    NETDEV_REPORT_TYPE_EVENT            = 1,                /* 上报类型：事件 */

    NETDEV_REPORT_TYPE_INVALID          = 0xFF              /* 无效值 */
}NETDEV_REPORT_TYPE_E;


/**
* @enum tagNETDEVAlarmSubType
* @brief 告警子类型
* @attention 无
*/
typedef enum tagNETDEVAlarmSubType
{
    NETDEV_ALARM_SUB_TYPE_NOT_CONFIGURED       = 0,                                         /*未配置报警子类型*/

    NETDEV_DEV_TYPE_BASE                       = (100000UL),                                /* 安防报警基数 */
    NETDEV_DEV_TROUBLE                         = (NETDEV_DEV_TYPE_BASE + 1),                /* 设备故障 */
    NETDEV_DEV_ALARM_EMERGENCY                 = (NETDEV_DEV_TYPE_BASE + 2),                /* 紧急报警 */

    /* 报警设备报警类型定义 */
    NETDEV_ALARM_EVENT_BASE                    = (100200UL),                                /* 报警类型定义起始位置 */
    NETDEV_ALARM_EVENT_FIRE_ALARM              = (NETDEV_ALARM_EVENT_BASE + 1),             /* 火警 */
    NETDEV_ALARM_EVENT_KEYPADFIRE              = (NETDEV_ALARM_EVENT_BASE + 2),             /* 键盘火警报警 */
    NETDEV_ALARM_EVENT_KEYPADEMERGENCY         = (NETDEV_ALARM_EVENT_BASE + 3),             /* 键盘紧急报警 */
    NETDEV_ALARM_EVENT_KEYPADMEDICAL           = (NETDEV_ALARM_EVENT_BASE + 4),             /* 键盘求助报警 */
    NETDEV_ALARM_EVENT_DURESSCODEUSED          = (NETDEV_ALARM_EVENT_BASE + 5),             /* 胁持码操作 */
    NETDEV_ALARM_EVENT_UNAUTHORIZEDENTRY       = (NETDEV_ALARM_EVENT_BASE + 6),             /* 未授权进入 */
    NETDEV_ALARM_EVENT_BURGLARPOINTALARM       = (NETDEV_ALARM_EVENT_BASE + 7),             /* 盗警防区报警 */
    NETDEV_ALARM_EVENT_SUPERVISORY             = (NETDEV_ALARM_EVENT_BASE + 8),             /* 监测故障 */
    NETDEV_ALARM_EVENT_FIRETROUBLE             = (NETDEV_ALARM_EVENT_BASE + 9),             /* 火警故障 */
    NETDEV_ALARM_EVENT_FIREPOINTTROUBLE        = (NETDEV_ALARM_EVENT_BASE + 10),            /* 火警防区故障 */
    NETDEV_ALARM_EVENT_BURGLARPOINTTROUBLE     = (NETDEV_ALARM_EVENT_BASE + 11),            /* 盗警防区故障 */
    NETDEV_ALARM_EVENT_CANCELALARM             = (NETDEV_ALARM_EVENT_BASE + 12),            /* 消警 */
    NETDEV_ALARM_EVENT_DISARM                  = (NETDEV_ALARM_EVENT_BASE + 13),            /* 撤防操作成功 */
    NETDEV_ALARM_EVENT_ARM                     = (NETDEV_ALARM_EVENT_BASE + 14),            /* 布防操作成功 */
    NETDEV_ALARM_EVENT_FORCEDBYPASS            = (NETDEV_ALARM_EVENT_BASE + 15),            /* 强制旁路操作 */
    NETDEV_ALARM_EVENT_BYPASS                  = (NETDEV_ALARM_EVENT_BASE + 16),            /* 防区旁路操作 */
    NETDEV_ALARM_EVENT_POINTRESTORAL           = (NETDEV_ALARM_EVENT_BASE + 17),            /* 防区报警恢复 */
    NETDEV_ALARM_EVENT_FAILTOCLOSE             = (NETDEV_ALARM_EVENT_BASE + 18),            /* 布防操作失败 */
    NETDEV_ALARM_EVENT_FAILTOOPEN              = (NETDEV_ALARM_EVENT_BASE + 19),            /* 撤防操作失败 */
    NETDEV_ALARM_EVENT_HISTORYBUFFERDUMP       = (NETDEV_ALARM_EVENT_BASE + 20),            /* 事件记录满 */
    NETDEV_ALARM_EVENT_TESTMSG                 = (NETDEV_ALARM_EVENT_BASE + 21),            /* 测试用 */
    NETDEV_ALARM_EVENT_ZONETROUBLE             = (NETDEV_ALARM_EVENT_BASE + 22),            /* 防区故障 */
    NETDEV_ALARM_EVENT_ZONETROUBLERESTORE      = (NETDEV_ALARM_EVENT_BASE + 23),            /* 防区故障恢复 */
    NETDEV_ALARM_EVENT_ZONESHORT               = (NETDEV_ALARM_EVENT_BASE + 24),            /* 防区短路 */
    NETDEV_ALARM_EVENT_ZONEOPEN                = (NETDEV_ALARM_EVENT_BASE + 25),            /* 防区开路 */
    NETDEV_ALARM_EVENT_ZONENORMAL              = (NETDEV_ALARM_EVENT_BASE + 26),            /* 防区正常 */
    NETDEV_ALARM_EVENT_MXDEVCLOSE              = (NETDEV_ALARM_EVENT_BASE + 27),            /* MX设备布防 */
    NETDEV_ALARM_EVENT_MXDEVOPEN               = (NETDEV_ALARM_EVENT_BASE + 28),            /* MX设备撤防 */
    NETDEV_ALARM_EVENT_MXDEV1ZONEALARM         = (NETDEV_ALARM_EVENT_BASE + 29),            /* MX设备1防区报警 */
    NETDEV_ALARM_EVENT_MXDEV2ZONEALARM         = (NETDEV_ALARM_EVENT_BASE + 30),            /* MX设备2防区报警 */
    NETDEV_ALARM_EVENT_MXDEV3ZONEALARM         = (NETDEV_ALARM_EVENT_BASE + 31),            /* MX设备3防区报警 */
    NETDEV_ALARM_EVENT_MXDEV1ZONERESTAORE      = (NETDEV_ALARM_EVENT_BASE + 32),            /* MX设备1防区恢复 */
    NETDEV_ALARM_EVENT_MXDEV2ZONERESTAORE      = (NETDEV_ALARM_EVENT_BASE + 33),            /* MX设备2防区恢复 */
    NETDEV_ALARM_EVENT_MXDEV3ZONERESTAORE      = (NETDEV_ALARM_EVENT_BASE + 34),            /* MX设备3防区恢复 */
    NETDEV_ALARM_EVENT_TROUBLE_AC              = (NETDEV_ALARM_EVENT_BASE + 35),            /* 交流电源故障 */
    NETDEV_ALARM_EVENT_TROUBLE_BATTERY         = (NETDEV_ALARM_EVENT_BASE + 36),            /* 备用电源故障 */
    NETDEV_ALARM_EVENT_TROUBLE_SNDREPORT       = (NETDEV_ALARM_EVENT_BASE + 37),            /* 报告发送故障 */
    NETDEV_ALARM_EVENT_TROUBLE_CONTROL         = (NETDEV_ALARM_EVENT_BASE + 38),            /* 控制故障 */
    NETDEV_ALARM_EVENT_TROUBLE_MXBUS           = (NETDEV_ALARM_EVENT_BASE + 39),            /* MPX总线故障 */
    NETDEV_ALARM_EVENT_TROUBLE_RADIOSND        = (NETDEV_ALARM_EVENT_BASE + 40),            /* 无线接收故障 */
    NETDEV_ALARM_EVENT_TROUBLE_ASSISTPOWER     = (NETDEV_ALARM_EVENT_BASE + 41),            /* 辅助电源故障 */
    NETDEV_ALARM_EVENT_TROUBLE_OPTION          = (NETDEV_ALARM_EVENT_BASE + 42),            /* option设备故障 */
    NETDEV_ALARM_EVENT_LINK_BREAK              = (NETDEV_ALARM_EVENT_BASE + 43),            /* 联机断开 */
    NETDEV_ALARM_EVENT_LINK_RESUME             = (NETDEV_ALARM_EVENT_BASE + 44),            /* 联机正常 */
    NETDEV_ALARM_EVENT_VOLTAGE_ALARM           = (NETDEV_ALARM_EVENT_BASE + 45),            /* 直流欠压报警 */
    NETDEV_ALARM_EVENT_EXTERNDEV_TROUBLE       = (NETDEV_ALARM_EVENT_BASE + 46),            /* 扩展设备故障报警 */
    NETDEV_ALARM_EVENT_EXTERNDEV_RESUME        = (NETDEV_ALARM_EVENT_BASE + 47),            /* 扩展设备恢复报警 */
    NETDEV_ALARM_EVENT_POINT_DISARM            = (NETDEV_ALARM_EVENT_BASE + 48),            /* 点位撤防 */
    NETDEV_ALARM_EVENT_POINT_ARM               = (NETDEV_ALARM_EVENT_BASE + 49),            /* 点位布防 */
    NETDEV_ALARM_EVENT_FORCE_OPEN              = (NETDEV_ALARM_EVENT_BASE + 50),            /* 报警主机被强制打开 */
    NETDEV_ALARM_EVENT_BYPASS_FAILED           = (NETDEV_ALARM_EVENT_BASE + 51),            /* 旁路操作失败 */
    NETDEV_ALARM_EVENT_RESET_FAILED            = (NETDEV_ALARM_EVENT_BASE + 52),            /* 复位操作失败 */
    NETDEV_ALARM_EVENT_POINT_FIRETROUBLE       = (NETDEV_ALARM_EVENT_BASE + 53),            /* 点位故障 */
    NETDEV_ALARM_EVENT_POINT_SEPARATE          = (NETDEV_ALARM_EVENT_BASE + 54),            /* 点位隔离 */
    NETDEV_ALARM_EVENT_POINT_ACTION            = (NETDEV_ALARM_EVENT_BASE + 55),            /* 点位动作 */
    NETDEV_ALARM_EVENT_POINT_RESUME            = (NETDEV_ALARM_EVENT_BASE + 56),            /* 点位恢复 */
    NETDEV_ALARM_EVENT_ROB_ACTION              = (NETDEV_ALARM_EVENT_BASE + 57),            /* 劫警 */

    /* 报警事件新增 */
    NETDEV_ALARM_EVENT_MISSED_ARM              = (NETDEV_ALARM_EVENT_BASE + 60),            /* 没有布防 */
    NETDEV_ALARM_EVENT_MISSED_DISARM           = (NETDEV_ALARM_EVENT_BASE + 61),            /* 没有撤防 */
    NETDEV_ALARM_EVENT_AUXILARY_RST            = (NETDEV_ALARM_EVENT_BASE + 62),            /* 辅助报警恢复 */
    NETDEV_ALARM_EVENT_AUXILARY                = (NETDEV_ALARM_EVENT_BASE + 63),            /* 辅助报警 */
    NETDEV_ALARM_EVENT_BURGLARY_RST            = (NETDEV_ALARM_EVENT_BASE + 64),            /* 窃警恢复 */
    NETDEV_ALARM_EVENT_BURGLARY                = (NETDEV_ALARM_EVENT_BASE + 65),            /* 窃警 */
    NETDEV_ALARM_EVENT_BYPASS_RST              = (NETDEV_ALARM_EVENT_BASE + 66),            /* 旁路恢复 */
    NETDEV_ALARM_EVENT_CANCEL                  = (NETDEV_ALARM_EVENT_BASE + 67),            /* 取消 */
    NETDEV_ALARM_EVENT_DUPLICATE               = (NETDEV_ALARM_EVENT_BASE + 68),            /* 重复 */
    NETDEV_ALARM_EVENT_DURESS_RST              = (NETDEV_ALARM_EVENT_BASE + 69),            /* 挟持报警恢复 */
    NETDEV_ALARM_EVENT_DURESS                  = (NETDEV_ALARM_EVENT_BASE + 70),            /* 挟持报警 */
    NETDEV_ALARM_EVENT_FIRE_RST                = (NETDEV_ALARM_EVENT_BASE + 71),            /* 火警恢复 */
    NETDEV_ALARM_EVENT_FIRE_TROUBLE            = (NETDEV_ALARM_EVENT_BASE + 72),            /* 防火探头故障 */
    NETDEV_ALARM_EVENT_FIRE_TRB_RST            = (NETDEV_ALARM_EVENT_BASE + 73),            /* 防火探头故障恢复 */
    NETDEV_ALARM_EVENT_MED_RST                 = (NETDEV_ALARM_EVENT_BASE + 74),            /* 医疗救助复位 */
    NETDEV_ALARM_EVENT_PANIC                   = (NETDEV_ALARM_EVENT_BASE + 75),            /* 紧急报警 */
    NETDEV_ALARM_EVENT_PANIC_RST               = (NETDEV_ALARM_EVENT_BASE + 76),            /* 紧急报警恢复 */
    NETDEV_ALARM_EVENT_RESET                   = (NETDEV_ALARM_EVENT_BASE + 77),            /* 复位 */
    NETDEV_ALARM_EVENT_RELAY_SHORTED           = (NETDEV_ALARM_EVENT_BASE + 78),            /* 继电器短路 */
    NETDEV_ALARM_EVENT_RELAY_RST               = (NETDEV_ALARM_EVENT_BASE + 79),            /* 继电器恢复 */
    NETDEV_ALARM_EVENT_RELAY_TROUBLE           = (NETDEV_ALARM_EVENT_BASE + 80),            /* 继电器故障 */
    NETDEV_ALARM_EVENT_TAMPER                  = (NETDEV_ALARM_EVENT_BASE + 81),            /* 防拆报警 */
    NETDEV_ALARM_EVENT_TAMPER_RST              = (NETDEV_ALARM_EVENT_BASE + 82),            /* 防拆报警恢复 */
    NETDEV_ALARM_EVENT_TROUBLE                 = (NETDEV_ALARM_EVENT_BASE + 83),            /* 故障 */
    NETDEV_ALARM_EVENT_TROUBLE_RST             = (NETDEV_ALARM_EVENT_BASE + 84),            /* 故障恢复 */

    /* 乌审旗对接东方电子DF8900电力综合自动化系统新增 */
    NETDEV_ALARM_EVENT_DFE_REMOTE_CONTROL      = (NETDEV_ALARM_EVENT_BASE + 90),            /* 遥控 */
    NETDEV_ALARM_EVENT_DFE_SYNC                = (NETDEV_ALARM_EVENT_BASE + 91),            /* 同期 */
    NETDEV_ALARM_EVENT_DFE_LIFTING             = (NETDEV_ALARM_EVENT_BASE + 92),            /* 升降 */
    NETDEV_ALARM_EVENT_DFE_SWITCH_NORMAL       = (NETDEV_ALARM_EVENT_BASE + 93),            /* 开关正常变位 */
    NETDEV_ALARM_EVENT_DFE_SWITCH_ACCIDENT     = (NETDEV_ALARM_EVENT_BASE + 94),            /* 开关事故变位 */
    NETDEV_ALARM_EVENT_DFE_KINFE_GATE          = (NETDEV_ALARM_EVENT_BASE + 95),            /* 刀闸正常变位 */

    /* 垦华监狱晨鹰哨位集成箱报警 */
    NETDEV_ALARM_EVENT_ESCAPE                  = (NETDEV_ALARM_EVENT_BASE + 96),            /* 晨鹰哨位事件，犯人逃跑 */
    NETDEV_ALARM_EVENT_ESCAPE_END              = (NETDEV_ALARM_EVENT_BASE + 97),            /* 晨鹰哨位事件，犯人逃跑结束 */
    NETDEV_ALARM_EVENT_VIOLENCE                = (NETDEV_ALARM_EVENT_BASE + 98),            /* 晨鹰哨位事件，犯人暴狱 */
    NETDEV_ALARM_EVENT_VIOLENCE_END            = (NETDEV_ALARM_EVENT_BASE + 99),            /* 晨鹰哨位事件，犯人暴狱结束 */
    NETDEV_ALARM_EVENT_ATTACKED                = (NETDEV_ALARM_EVENT_BASE + 100),           /* 晨鹰哨位事件，目标遭袭 */
    NETDEV_ALARM_EVENT_ATTACKED_END            = (NETDEV_ALARM_EVENT_BASE + 101),           /* 晨鹰哨位事件，目标遭袭结束 */
    NETDEV_ALARM_EVENT_NATURAL_DISASTER        = (NETDEV_ALARM_EVENT_BASE + 102),           /* 晨鹰哨位事件，自然灾害 */
    NETDEV_ALARM_EVENT_NATURAL_DISASTER_END    = (NETDEV_ALARM_EVENT_BASE + 103),           /* 晨鹰哨位事件，自然灾害结束 */
    NETDEV_ALARM_EVENT_ONE_KEY_ALARM           = (NETDEV_ALARM_EVENT_BASE + 104),           /* 晨鹰哨位事件，一键报警 */
    NETDEV_ALARM_EVENT_ONE_KEY_ALARM_END       = (NETDEV_ALARM_EVENT_BASE + 105),           /* 晨鹰哨位事件，一键报警结束 */

    /* 潍北监狱中电瑞达高压电网报警 */
    NETDEV_ALARM_EVENT_CERC_NORMAL             = (NETDEV_ALARM_EVENT_BASE + 106),           /* 中电瑞达事件，高压电网正常 */
    NETDEV_ALARM_EVENT_CERC_TOUCH              = (NETDEV_ALARM_EVENT_BASE + 107),           /* 中电瑞达事件，高压电网触网 */
    NETDEV_ALARM_EVENT_CERC_BREAK              = (NETDEV_ALARM_EVENT_BASE + 108),           /* 中电瑞达事件，高压电网断路 */
    NETDEV_ALARM_EVENT_CERC_SHORT              = (NETDEV_ALARM_EVENT_BASE + 109),           /* 中电瑞达事件，高压电网短路 */
    NETDEV_ALARM_EVENT_CERC_COMMU_ERR          = (NETDEV_ALARM_EVENT_BASE + 110),           /* 中电瑞达事件，高压电网通信错误 */

    /* 潍北监狱艾博信相控阵雷达和红外光栅报警 */
    NETDEV_ALARM_EVENT_HYPERSEE_DDR_ALARM      = (NETDEV_ALARM_EVENT_BASE + 111),           /* 艾博信事件，相控阵雷达报警 */
    NETDEV_ALARM_EVENT_HYPERSEE_DDR_ALARM_RST  = (NETDEV_ALARM_EVENT_BASE + 112),           /* 艾博信事件，相控阵雷达报警恢复 */
    NETDEV_ALARM_EVENT_HYPERSEE_IR_ALARM       = (NETDEV_ALARM_EVENT_BASE + 113),           /* 艾博信事件，红外光栅报警 */
    NETDEV_ALARM_EVENT_HYPERSEE_IR_ALARM_RST   = (NETDEV_ALARM_EVENT_BASE + 114),           /* 艾博信事件，红外光栅报警恢复 */

    /* 潍北监狱中科融通陀螺仪报警 */
    NETDEV_ALARM_EVENT_UBI_ALARM               = (NETDEV_ALARM_EVENT_BASE + 115),           /* 中科融通事件，陀螺仪报警 */

    /* 新疆中泰园区中科华讯美国西南周界震动电缆报警 */
    NETDEV_ALARM_EVENT_HXTECH_CABLE_ALARM      = (NETDEV_ALARM_EVENT_BASE + 116),           /* 华讯周界事件，震动电缆报警 */

    /*精华隆数据*/
    NETDEV_ALARM_EVENT_DEVICE_UNDER_VOLTAGE_RST            = (NETDEV_ALARM_EVENT_BASE + 117),               /* 设备欠压恢复模式 */
    NETDEV_ALARM_EVENT_ZONE_NOT_READY                      = (NETDEV_ALARM_EVENT_BASE + 118),               /* 防区未准备 */
    NETDEV_ALARM_EVENT_ZONE_NOT_READY_RST                  = (NETDEV_ALARM_EVENT_BASE + 119),               /* 防区未准备恢复 */
    NETDEV_ALARM_EVENT_TELEPHONE_CABLE_FAULT               = (NETDEV_ALARM_EVENT_BASE + 120),               /* 电话线故障 */
    NETDEV_ALARM_EVENT_TELEPHONE_CABLE_FAULT_RST           = (NETDEV_ALARM_EVENT_BASE + 121),               /* 电话线故障恢复 */
    NETDEV_ALARM_EVENT_AC_POWER_FAULT                      = (NETDEV_ALARM_EVENT_BASE + 122),               /* 交流电故障 */

    /* 一体机对接艾立安告警 */
    NETDEV_ALARM_EVENT_ZONE_TOUCH                          = (NETDEV_ALARM_EVENT_BASE + 123),    /* 防区触发报警 */
    NETDEV_ALARM_EVENT_ZONE_TOUCH_RESTORE                  = (NETDEV_ALARM_EVENT_BASE + 124),    /* 防区触发恢复 */
    NETDEV_ALARM_EVENT_CAPTIVE                             = (NETDEV_ALARM_EVENT_BASE + 125),    /* 被撬 */
    NETDEV_ALARM_EVENT_CAPTIVE_RST                         = (NETDEV_ALARM_EVENT_BASE + 126),    /* 被撬恢复 */
    NETDEV_ALARM_EVENT_UNDERVOLTAGE                        = (NETDEV_ALARM_EVENT_BASE + 127),    /* 欠压 */
    NETDEV_ALARM_EVENT_UNDERVOLTAGE_RST                    = (NETDEV_ALARM_EVENT_BASE + 128),    /* 欠压恢复 */
    NETDEV_ALARM_EVENT_TROUBLE_BATTERY_RST                 = (NETDEV_ALARM_EVENT_BASE + 129),    /* 备用电池故障恢复 */
    NETDEV_ALARM_EVENT_DEV_POWER_REBOOT                    = (NETDEV_ALARM_EVENT_BASE + 130),    /* 设备上电重启 */
    NETDEV_ALARM_EVENT_TEST_FAILURE                        = (NETDEV_ALARM_EVENT_BASE + 131),    /* 设备测试失败 */
    NETDEV_ALARM_EVENT_OPERATOR_TOUCH_LONG                 = (NETDEV_ALARM_EVENT_BASE + 132),    /* 长按键操作  */
    NETDEV_ALARM_EVENT_REMOTE_ARM                          = (NETDEV_ALARM_EVENT_BASE + 133),    /* 遥控布防  */
    NETDEV_ALARM_EVENT_REMOTE_DISARM                       = (NETDEV_ALARM_EVENT_BASE + 134),    /* 遥控撤防  */
    NETDEV_ALARM_EVENT_REMOTE_STAY_ARM                     = (NETDEV_ALARM_EVENT_BASE + 135),    /* 遥控留守布防  */
    NETDEV_ALARM_EVENT_PWD_ARM                             = (NETDEV_ALARM_EVENT_BASE + 136),    /* 密码布防设备  */
    NETDEV_ALARM_EVENT_PWD_DISARM                          = (NETDEV_ALARM_EVENT_BASE + 137),    /* 密码撤防设备  */
    NETDEV_ALARM_EVENT_PWD_STAY_DEV                        = (NETDEV_ALARM_EVENT_BASE + 138),    /* 密码留守布防设备  */
    NETDEV_ALARM_EVENT_PWD_ARM_PART                        = (NETDEV_ALARM_EVENT_BASE + 139),    /* 密码布防分区  */
    NETDEV_ALARM_EVENT_PWD_DISARM_PART                     = (NETDEV_ALARM_EVENT_BASE + 140),    /* 密码撤防分区  */
    NETDEV_ALARM_EVENT_PWD_STAY_PART                       = (NETDEV_ALARM_EVENT_BASE + 141),    /* 密码留守布防分区  */
    NETDEV_ALARM_EVENT_PWD_ARM_ZONE                        = (NETDEV_ALARM_EVENT_BASE + 142),    /* 密码布防防区  */
    NETDEV_ALARM_EVENT_PWD_DISARM_ZONE                     = (NETDEV_ALARM_EVENT_BASE + 143),    /* 密码撤防防区  */
    NETDEV_ALARM_EVENT_USER_ARM                            = (NETDEV_ALARM_EVENT_BASE + 144),    /* 用户布防设备  */
    NETDEV_ALARM_EVENT_USER_DISARM                         = (NETDEV_ALARM_EVENT_BASE + 145),    /* 用户撤防设备  */
    NETDEV_ALARM_EVENT_USER_STAY_DEV                       = (NETDEV_ALARM_EVENT_BASE + 146),    /* 用户留守布防设备  */
    NETDEV_ALARM_EVENT_USER_CLEAN_ALARM                    = (NETDEV_ALARM_EVENT_BASE + 147),    /* 用户清除报警显示  */
    NETDEV_ALARM_EVENT_PWD_OPEN_DOOR                       = (NETDEV_ALARM_EVENT_BASE + 148),    /* 密码开门  */
    NETDEV_ALARM_EVENT_KEY_OPEN_DOOR                       = (NETDEV_ALARM_EVENT_BASE + 149),    /* 钥匙开门  */
    NETDEV_ALARM_EVENT_REMOTE_OPEN_DOOR                    = (NETDEV_ALARM_EVENT_BASE + 150),    /* 遥控开门  */
    NETDEV_ALARM_EVENT_SWIPE_ARM                           = (NETDEV_ALARM_EVENT_BASE + 151),    /* 刷卡布防  */
    NETDEV_ALARM_EVENT_SWIPE_DISARM                        = (NETDEV_ALARM_EVENT_BASE + 152),    /* 刷卡撤防  */
    NETDEV_ALARM_EVENT_SWIPE_LOCK                          = (NETDEV_ALARM_EVENT_BASE + 153),    /* 刷卡闭锁  */
    NETDEV_ALARM_EVENT_SWIPE_UNLOCK                        = (NETDEV_ALARM_EVENT_BASE + 154),    /* 刷卡开锁  */
    NETDEV_ALARM_EVENT_SWIPE_RECORD                        = (NETDEV_ALARM_EVENT_BASE + 155),    /* 刷卡记录  */
    NETDEV_ALARM_EVENT_SWIPE_ATTENDANCE_IN                 = (NETDEV_ALARM_EVENT_BASE + 156),    /* 刷卡考勤入  */
    NETDEV_ALARM_EVENT_SWIPE_ATTENDANCE_OUT                = (NETDEV_ALARM_EVENT_BASE + 157),    /* 刷卡考勤出  */
    NETDEV_ALARM_EVENT_SWIPE_TURNON_LIGHT                  = (NETDEV_ALARM_EVENT_BASE + 158),    /* 刷卡开灯  */
    NETDEV_ALARM_EVENT_SWIPE_OFF_LIGHT                     = (NETDEV_ALARM_EVENT_BASE + 159),    /* 刷卡关灯  */
    NETDEV_ALARM_EVENT_SWIPE_CARD_NUM                      = (NETDEV_ALARM_EVENT_BASE + 160),    /* 刷卡上报卡物理编号  */
    NETDEV_ALARM_EVENT_MANUAL_OPEN                         = (NETDEV_ALARM_EVENT_BASE + 161),    /* 手动开门/开灯  */
    NETDEV_ALARM_EVENT_ZONE_OPEN_DOOR                      = (NETDEV_ALARM_EVENT_BASE + 162),    /* 防区触发开门  */
    NETDEV_ALARM_EVENT_ZONE_DOOR_LONGTIME                  = (NETDEV_ALARM_EVENT_BASE + 163),    /* 防区长时间未触发布防  */
    NETDEV_ALARM_EVENT_ZONE_ARM                            = (NETDEV_ALARM_EVENT_BASE + 164),    /* 防区触发布防  */
    NETDEV_ALARM_EVENT_ZONE_DISARM                         = (NETDEV_ALARM_EVENT_BASE + 165),    /* 防区触发撤防  */
    NETDEV_ALARM_EVENT_TIMER_ARM                           = (NETDEV_ALARM_EVENT_BASE + 166),    /* 定时布防  */
    NETDEV_ALARM_EVENT_TIMER_DISARM                        = (NETDEV_ALARM_EVENT_BASE + 167),    /* 定时撤防  */
    NETDEV_ALARM_EVENT_CENTRAL_COMM_NORMAL                 = (NETDEV_ALARM_EVENT_BASE + 168),    /* 中心通讯正常  */
    NETDEV_ALARM_EVENT_CENTRAL_HANDSHAKE_FAILED            = (NETDEV_ALARM_EVENT_BASE + 169),    /* 中心握手失败  */
    NETDEV_ALARM_EVENT_CENTRAL_RESPONSE_FAILED             = (NETDEV_ALARM_EVENT_BASE + 170),    /* 中心应答失败  */
    NETDEV_ALARM_EVENT_USER_CONFIRMATION                   = (NETDEV_ALARM_EVENT_BASE + 171),    /* 用户接警确认  */
    NETDEV_ALARM_EVENT_USER_TIMEOUT                        = (NETDEV_ALARM_EVENT_BASE + 172),    /* 用户接警超时  */
    NETDEV_ALARM_EVENT_TELEP_RINGING                       = (NETDEV_ALARM_EVENT_BASE + 173),    /* 电话模块接收到振铃信号  */
    NETDEV_ALARM_EVENT_TELEP_ARM                           = (NETDEV_ALARM_EVENT_BASE + 174),    /* 电话模块接收到远程撤布防一位操作密码  */
    NETDEV_ALARM_EVENT_TELEP_STATUS_OFFLINE                = (NETDEV_ALARM_EVENT_BASE + 175),    /* 电话线掉线  */
    NETDEV_ALARM_EVENT_TELEP_STATUS_ONLINE                 = (NETDEV_ALARM_EVENT_BASE + 176),    /* 电话线在线  */
    NETDEV_ALARM_EVENT_MSG_SEND_SUCC                       = (NETDEV_ALARM_EVENT_BASE + 177),    /* 短信发送成功  */
    NETDEV_ALARM_EVENT_MSG_SEND_FAILED                     = (NETDEV_ALARM_EVENT_BASE + 178),    /* 短信发送失败  */
    NETDEV_ALARM_EVENT_SWITCH_CLOSE                        = (NETDEV_ALARM_EVENT_BASE + 179),    /* 操作开关合上  */
    NETDEV_ALARM_EVENT_SWITCH_OFF                          = (NETDEV_ALARM_EVENT_BASE + 180),    /* 操作开关断开  */
    NETDEV_ALARM_EVENT_TEMPER_CHANGE                       = (NETDEV_ALARM_EVENT_BASE + 181),    /* 温度变化上报  */
    NETDEV_ALARM_EVENT_HUMIDITY_CHANGE                     = (NETDEV_ALARM_EVENT_BASE + 182),    /* 湿度变化上报  */
    NETDEV_ALARM_EVENT_DEVID_WRONG                         = (NETDEV_ALARM_EVENT_BASE + 183),    /* 设备ID错误  */
    NETDEV_ALARM_EVENT_ELEC_HIGH_ARM                       = (NETDEV_ALARM_EVENT_BASE + 184),    /* 单个电子围栏高压布防  */
    NETDEV_ALARM_EVENT_ELEC_LOW_ARM                        = (NETDEV_ALARM_EVENT_BASE + 185),    /* 单个电子围栏低压布防  */
    NETDEV_ALARM_EVENT_ELEC_ALARM_RST                      = (NETDEV_ALARM_EVENT_BASE + 186),    /* 单个电子围栏报警复位  */
    NETDEV_ALARM_EVENT_ELEC_DISARM                         = (NETDEV_ALARM_EVENT_BASE + 187),    /* 单个电子围栏撤防  */
    NETDEV_ALARM_EVENT_ELEC_ARM                            = (NETDEV_ALARM_EVENT_BASE + 188),    /* 单个电子围栏电压值布防  */
    NETDEV_ALARM_EVENT_KEY_ALARM_OVER                      = (NETDEV_ALARM_EVENT_BASE + 189),    /* 键盘所有报警处理完成  */
    NETDEV_ALARM_EVENT_KEY_PROL_TYPE                       = (NETDEV_ALARM_EVENT_BASE + 190),    /* 键盘上报协议类型（主要针对电子围栏）  */
    NETDEV_ALARM_EVENT_MOD_DEV_ADDR                        = (NETDEV_ALARM_EVENT_BASE + 191),    /* 键盘修改设备地址（主要针对电子围栏）  */
    NETDEV_ALARM_EVENT_FORWARD_CMD                         = (NETDEV_ALARM_EVENT_BASE + 192) ,   /* 通讯设备转发中心命令  */

    NETDEV_ALARM_EVENT_BASE_VALUE                          = (110000UL),                                    /* 报警类型定义起始位置 */
    NETDEV_ALARM_EVENT_IMMEDIATELY_DEFEND_ALARM            = (NETDEV_ALARM_EVENT_BASE_VALUE + 1),           /* 即时防区报警 */
    NETDEV_ALARM_EVENT_IMMEDIATELY_DEFEND_ALARM_RST        = (NETDEV_ALARM_EVENT_BASE_VALUE + 2),           /* 即时防区报警恢复 */
    NETDEV_ALARM_EVENT_ALL_DAY_NO_VOICE_ALARM              = (NETDEV_ALARM_EVENT_BASE_VALUE + 3),           /* 24小时无声防区报警 */
    NETDEV_ALARM_EVENT_ALL_DAY_NO_VOICE_ALARM_RST          = (NETDEV_ALARM_EVENT_BASE_VALUE + 4),           /* 24小时无声防区报警恢复 */
    NETDEV_ALARM_EVENT_ALL_DAY_VOICE_ALARM                 = (NETDEV_ALARM_EVENT_BASE_VALUE + 5),           /* 24小时有声防区报警 */
    NETDEV_ALARM_EVENT_ALL_DAY_VOICE_ALARM_RST             = (NETDEV_ALARM_EVENT_BASE_VALUE + 6),           /* 24小时有声防区报警恢复 */
    NETDEV_ALARM_EVENT_BOARD_DEFEND_ALARM                  = (NETDEV_ALARM_EVENT_BASE_VALUE + 7),           /* 周界防区报警 */
    NETDEV_ALARM_EVENT_BOARD_DEFEND_ALARM_RST              = (NETDEV_ALARM_EVENT_BASE_VALUE + 8),           /* 周界防区报警恢复 */
    NETDEV_ALARM_EVENT_INNER_DELAY_DEFEND_ALARM            = (NETDEV_ALARM_EVENT_BASE_VALUE + 9),           /* 内部延时防区报警 */
    NETDEV_ALARM_EVENT_INNER_DELAY_DEFEND_ALARM_RST        = (NETDEV_ALARM_EVENT_BASE_VALUE + 10),          /* 内部延时防区报警恢复 */
    NETDEV_ALARM_EVENT_DELAY_DEFEND_ALARM                  = (NETDEV_ALARM_EVENT_BASE_VALUE + 11),          /* 延时防区报警 */
    NETDEV_ALARM_EVENT_DELAY_DEFEND_ALARM_RST              = (NETDEV_ALARM_EVENT_BASE_VALUE + 12),          /* 延时防区报警恢复 */
    NETDEV_ALARM_EVENT_EXPAND_MODEL_FAULT_ALARM            = (NETDEV_ALARM_EVENT_BASE_VALUE + 13),          /* 拓展模块故障 */
    NETDEV_ALARM_EVENT_EXPAND_MODEL_FAULT_ALARM_RST        = (NETDEV_ALARM_EVENT_BASE_VALUE + 14),          /* 拓展模块故障恢复 */
    NETDEV_ALARM_EVENT_OUTER_DISARMED                      = (NETDEV_ALARM_EVENT_BASE_VALUE + 15),          /* 外出撤防 */
    NETDEV_ALARM_EVENT_OUTER_ARMED                         = (NETDEV_ALARM_EVENT_BASE_VALUE + 16),          /* 外出布防 */
    NETDEV_ALARM_EVENT_KEY_DISARMED                        = (NETDEV_ALARM_EVENT_BASE_VALUE + 17),          /* 钥匙防区撤防 */
    NETDEV_ALARM_EVENT_KEY_ARMED                           = (NETDEV_ALARM_EVENT_BASE_VALUE + 18),          /* 钥匙防区布防 */
    NETDEV_ALARM_EVENT_WIRELESS_NET_WORK_EXCEPTION         = (NETDEV_ALARM_EVENT_BASE_VALUE + 19),          /* 无线网络异常 */
    NETDEV_ALARM_EVENT_WIRELESS_NET_WORK_EXCEPTION_RST     = (NETDEV_ALARM_EVENT_BASE_VALUE + 20),          /* 无线网络异常恢复 */
    NETDEV_ALARM_EVENT_WIRED_NET_WORK_BREAK                = (NETDEV_ALARM_EVENT_BASE_VALUE + 21),          /* 有线网络故障 */
    NETDEV_ALARM_EVENT_WIRED_NET_WORK_BREAK_RST            = (NETDEV_ALARM_EVENT_BASE_VALUE + 22),          /* 有线网络故障恢复 */
    NETDEV_ALARM_EVENT_SOFT_DEFEND_URGENCY_ALARM           = (NETDEV_ALARM_EVENT_BASE_VALUE + 23),          /* 软防区紧急报警 */
    NETDEV_ALARM_EVENT_ARMED_STAY                          = (NETDEV_ALARM_EVENT_BASE_VALUE + 24),          /* 留守布防 */
    NETDEV_ALARM_EVENT_IMMEDIATELY_ARMED                   = (NETDEV_ALARM_EVENT_BASE_VALUE + 25),          /* 即时布防 */

    /* 乌审旗对接昆仑传感（烟感、水浸、继电器报警）报警新增 */
    NETDEV_ALARM_EVENT_SMOKE_ALARM                         = (NETDEV_ALARM_EVENT_BASE_VALUE + 26),          /* 昆仑传感 烟感报警 */
    NETDEV_ALARM_EVENT_SMOKE_ALARM_END                     = (NETDEV_ALARM_EVENT_BASE_VALUE + 27),          /* 昆仑传感 烟感报警停止 */
    NETDEV_ALARM_EVENT_WATER_ALARM                         = (NETDEV_ALARM_EVENT_BASE_VALUE + 28),          /* 昆仑传感 水浸报警 */
    NETDEV_ALARM_EVENT_WATER_ALARM_END                     = (NETDEV_ALARM_EVENT_BASE_VALUE + 29),          /* 昆仑传感 水浸报警停止 */
    NETDEV_ALARM_EVENT_IO_ON                               = (NETDEV_ALARM_EVENT_BASE_VALUE + 30),          /* 昆仑传感.开关量开 */
    NETDEV_ALARM_EVENT_IO_OFF                              = (NETDEV_ALARM_EVENT_BASE_VALUE + 31),          /* 昆仑传感.开关量关 */

    /* 长飞振动光纤新增报警定义值 */
    NETDEV_ALARM_EVENT_TOUNCH_ALARM                        = (NETDEV_ALARM_EVENT_BASE_VALUE + 32),          /* 触碰报警 */
    NETDEV_ALARM_EVENT_INVADE_ALARM                        = (NETDEV_ALARM_EVENT_BASE_VALUE + 33),          /* 入侵报警 */
    NETDEV_ALARM_EVENT_BROKEN_ALARM                        = (NETDEV_ALARM_EVENT_BASE_VALUE + 34),          /* 断裂报警 */
    NETDEV_ALARM_EVENT_HELP                                = (NETDEV_ALARM_EVENT_BASE_VALUE + 36),          /* 紧急求助 */
    NETDEV_ALARM_EVENT_DESTROY                             = (NETDEV_ALARM_EVENT_BASE_VALUE + 37),          /* 破坏报警 */
    NETDEV_ALARM_EVENT_ACS                                 = (NETDEV_ALARM_EVENT_BASE_VALUE + 38),          /* 门禁报警 */
    NETDEV_ALARM_EVENT_OTHERS                              = (NETDEV_ALARM_EVENT_BASE_VALUE + 39),          /* 其它报警 */
    NETDEV_ALARM_EVENT_ZONE_ALARM                          = (NETDEV_ALARM_EVENT_BASE_VALUE + 40),          /* 安标报警模块.防区报警 */
    NETDEV_ALARM_EVENT_ZONE_ALARM_RST                      = (NETDEV_ALARM_EVENT_BASE_VALUE + 41),          /* 安标报警模块.防区恢复 */
    NETDEV_ALARM_EVENT_GATO_ALARM_FENCE                    = (NETDEV_ALARM_EVENT_BASE_VALUE + 42),          /* 围栏报警 */
    NETDEV_ALARM_EVENT_GATO_ALARM_HOST                     = (NETDEV_ALARM_EVENT_BASE_VALUE + 43),          /* 主机报警 */
    NETDEV_ALARM_EVENT_GATO_ALARM_ETCZONE                  = (NETDEV_ALARM_EVENT_BASE_VALUE + 44),          /* 扩展防区报警 */
    NETDEV_ALARM_EVENT_GATO_ALARM_OFFLINE                  = (NETDEV_ALARM_EVENT_BASE_VALUE + 45),          /* 通信掉线 */
    NETDEV_ALARM_EVENT_GATO_ALARM_SWITCH1                  = (NETDEV_ALARM_EVENT_BASE_VALUE + 46),          /* 防区开关量1报警 */
    NETDEV_ALARM_EVENT_GATO_ALARM_SWITCH2                  = (NETDEV_ALARM_EVENT_BASE_VALUE + 47),          /* 防区开关量2报警 */
    NETDEV_ALARM_EVENT_STEAL                               = (NETDEV_ALARM_EVENT_BASE_VALUE + 48),          /* 窃盗报警 */
    NETDEV_ALARM_EVENT_GAS                                 = (NETDEV_ALARM_EVENT_BASE_VALUE + 49),          /* 燃气报警 */
    NETDEV_ALARM_EVENT_SAVE                                = (NETDEV_ALARM_EVENT_BASE_VALUE + 50),          /* 救护报警 */
    NETDEV_ALARM_EVENT_INVADE_TROUBLE                      = (NETDEV_ALARM_EVENT_BASE_VALUE + 51),          /* 入侵加故障报警 */
    NETDEV_ALARM_EVENT_SYS_TROUBLE                         = (NETDEV_ALARM_EVENT_BASE_VALUE + 52),          /* 系统故障 */
    NETDEV_ALARM_EVENT_OPTICAL_FIBER_TROUBLE               = (NETDEV_ALARM_EVENT_BASE_VALUE + 53),          /* 光纤故障 */

    /* 烽火科技报警主机报警子类型 */
    NETDEV_ALARM_EVENT_MOTION_DETECTION                    = (NETDEV_ALARM_EVENT_BASE_VALUE + 62),          /* 运动检测报警 */
    NETDEV_ALARM_EVENT_CALL_REMOVE                         = (NETDEV_ALARM_EVENT_BASE_VALUE + 63),          /* 呼叫解除报警 */
    NETDEV_ALARM_EVENT_NOISE                               = (NETDEV_ALARM_EVENT_BASE_VALUE + 64),          /* 噪音报警 */
    NETDEV_ALARM_EVENT_DELAYED                             = (NETDEV_ALARM_EVENT_BASE_VALUE + 65),          /* 延时报警 */
    NETDEV_ALARM_EVENT_ALARM_INPUT_ONE                     = (NETDEV_ALARM_EVENT_BASE_VALUE + 66),          /* 报警输入1报警 */
    NETDEV_ALARM_EVENT_ALARM_INPUT_TWO                     = (NETDEV_ALARM_EVENT_BASE_VALUE + 67),          /* 报警输入2报警 */
    NETDEV_ALARM_EVENT_ALARM_CALL_EMERGENCY                = (NETDEV_ALARM_EVENT_BASE_VALUE + 68),          /* 紧急呼叫  */
    NETDEV_ALARM_EVENT_ALARM_CALL_CONSULTANT               = (NETDEV_ALARM_EVENT_BASE_VALUE + 69),          /* 咨询呼叫 */
    NETDEV_ALARM_EVENT_DOOR_MAGNET_OPEN                    = (NETDEV_ALARM_EVENT_BASE_VALUE + 70),          /* 门磁打开 */
    NETDEV_ALARM_EVENT_DOOR_MAGNET_CLOSE                   = (NETDEV_ALARM_EVENT_BASE_VALUE + 71),          /* 门磁关闭 */
    NETDEV_ALARM_EVENT_DOOR_LOCK_OPEN                      = (NETDEV_ALARM_EVENT_BASE_VALUE + 72),          /* 门锁打开 */
    NETDEV_ALARM_EVENT_DOOR_LOCK_CLOSE                     = (NETDEV_ALARM_EVENT_BASE_VALUE + 73),          /* 门锁关闭 */

    /*世邦报警柱报警子类型*/
    NETDEV_ALARM_EVENT_ALARM_PORT_ONE             = (NETDEV_ALARM_EVENT_BASE_VALUE + 74),          /* 端口1报警  Port 1 Alarm */
    NETDEV_ALARM_EVENT_ALARM_PORT_TWO             = (NETDEV_ALARM_EVENT_BASE_VALUE + 75),          /* 端口2报警  Port 2 Alarm */
    NETDEV_ALARM_EVENT_ALARM_PORTEX               = (NETDEV_ALARM_EVENT_BASE_VALUE + 76),          /* 扩展端口报警  Expansion Port Alarm */
    NETDEV_ALARM_EVENT_ALARM_TUMULT               = (NETDEV_ALARM_EVENT_BASE_VALUE + 77),          /* 喧哗报警  Tumult Alarm */
    NETDEV_ALARM_EVENT_ALARM_110                  = (NETDEV_ALARM_EVENT_BASE_VALUE + 78),          /* 110报警  110 Alarm */
    NETDEV_ALARM_EVENT_ALARM_119                  = (NETDEV_ALARM_EVENT_BASE_VALUE + 79),          /* 119报警  119 Alarm */
    NETDEV_ALARM_EVENT_ALARM_120                  = (NETDEV_ALARM_EVENT_BASE_VALUE + 80),          /* 120报警  120 Alarm */

    /* 蓝星报警主机报警子类型 */
    NETDEV_ALARM_EVENT_ALARM_FINDERCONNECT_FAILED = (NETDEV_ALARM_EVENT_BASE_VALUE + 81),          /* 探测器通讯失败 */
    NETDEV_ALARM_EVENT_ALARM_OUTAGE               = (NETDEV_ALARM_EVENT_BASE_VALUE + 82),          /* 断电报警 */
    NETDEV_ALARM_EVENT_ALARM_DISASSEMBLE          = (NETDEV_ALARM_EVENT_BASE_VALUE + 83),          /* 拆机报警 */
    NETDEV_ALARM_EVENT_ALARM_CIRCUIT              = (NETDEV_ALARM_EVENT_BASE_VALUE + 84),          /* 断路报警 */
    NETDEV_ALARM_EVENT_ALARM_TOUCHNET             = (NETDEV_ALARM_EVENT_BASE_VALUE + 85),          /* 触网报警 */
    NETDEV_ALARM_EVENT_ALARM_PREVENTCUT           = (NETDEV_ALARM_EVENT_BASE_VALUE + 86),          /* 防剪报警 */
    NETDEV_ALARM_EVENT_ALARM_COCKING              = (NETDEV_ALARM_EVENT_BASE_VALUE + 87),          /* 拉紧报警 */
    NETDEV_ALARM_EVENT_ALARM_SLACK                = (NETDEV_ALARM_EVENT_BASE_VALUE + 88),          /* 松弛报警 */
    NETDEV_ALARM_EVENT_ALARM_ZONE_FORBIDDEN       = (NETDEV_ALARM_EVENT_BASE_VALUE + 89),          /* 防区禁用 */

    /* 建大仁科 */
    NETDEV_ALARM_EVENT_HIGH_TEMP                  = (NETDEV_ALARM_EVENT_BASE_VALUE + 90),           /* 温度超上限报警 */
    NETDEV_ALARM_EVENT_LOW_TEMP                   = (NETDEV_ALARM_EVENT_BASE_VALUE + 91),           /* 温度超下限报警 */
    NETDEV_ALARM_EVENT_HIGH_HUMI                  = (NETDEV_ALARM_EVENT_BASE_VALUE + 92),           /* 湿度超上限报警 */
    NETDEV_ALARM_EVENT_LOW_HUMI                   = (NETDEV_ALARM_EVENT_BASE_VALUE + 93),           /* 湿度超下限报警 */
    NETDEV_ALARM_MONITOR_DEVICE_ONLINE            = (NETDEV_ALARM_EVENT_BASE_VALUE + 94),           /* 监控点设备在线 */
    NETDEV_ALARM_MONITOR_DEVICE_OFFLINE           = (NETDEV_ALARM_EVENT_BASE_VALUE + 95),           /* 监控点设备离线 */

    /* 门禁上报事件类型定义*/
    NETDEV_DOOR_EVENT_BASE                         = (100400UL),                          /* 门禁事件类型定义起始位置 */

    NETDEV_DOOR_EVENT_DISCONNECT                   = (NETDEV_DOOR_EVENT_BASE + 1),        /* 通信中断(门禁主机与门之间) */
    NETDEV_DOOR_EVENT_INFRARED_ALARM               = (NETDEV_DOOR_EVENT_BASE + 2),        /* 红外报警 */
    NETDEV_DOOR_EVENT_ILLICIT_OPEN_DOOR            = (NETDEV_DOOR_EVENT_BASE + 3),        /* 非法开门 */
    NETDEV_DOOR_EVENT_COERCE_ALARM                 = (NETDEV_DOOR_EVENT_BASE + 4),        /* 胁迫报警 */
    NETDEV_DOOR_EVENT_OPEN_TIMEOUT                 = (NETDEV_DOOR_EVENT_BASE + 5),        /* 超时未开门 */
    NETDEV_DOOR_EVENT_CLOSE_TIMEOUT                = (NETDEV_DOOR_EVENT_BASE + 6),        /* 超时未关门 */
    NETDEV_DOOR_EVENT_ANOMALOUS_CARD               = (NETDEV_DOOR_EVENT_BASE + 7),        /* 异常刷卡 */
    NETDEV_DOOR_EVENT_CARD_OPEN_DOOR               = (NETDEV_DOOR_EVENT_BASE + 8),        /* 刷卡开门 */
    NETDEV_DOOR_EVENT_REMOTE_OPEN_DOOR             = (NETDEV_DOOR_EVENT_BASE + 9),        /* 远程开门 */
    NETDEV_DOOR_EVENT_MANUAL_OPEN_DOOR             = (NETDEV_DOOR_EVENT_BASE + 10),       /* 手动开门 */
    NETDEV_DOOR_EVENT_EMERGENCY_START              = (NETDEV_DOOR_EVENT_BASE + 11),       /* 紧急事件开始 */
    NETDEV_DOOR_EVENT_EMERGENCY_STOP               = (NETDEV_DOOR_EVENT_BASE + 12),       /* 紧急事件结束 */
    NETDEV_DOOR_EVENT_OPEN_SUCCESS                 = (NETDEV_DOOR_EVENT_BASE + 13),       /* 开门成功 */
    NETDEV_DOOR_EVENT_OPEN_FAILED                  = (NETDEV_DOOR_EVENT_BASE + 14),       /* 开门失败 */
    NETDEV_DOOR_EVENT_CLOSE                        = (NETDEV_DOOR_EVENT_BASE + 15),       /* 关门事件 */
    NETDEV_DOOR_EVENT_CLOSE_FAILED                 = (NETDEV_DOOR_EVENT_BASE + 16),       /* 关门失败 */
    NETDEV_DOOR_EVENT_CARD_NO_AUTH                 = (NETDEV_DOOR_EVENT_BASE + 17),       /* 卡无权限 */
    NETDEV_DOOR_EVENT_NO_DATE_LIMIT                = (NETDEV_DOOR_EVENT_BASE + 18),       /* 无期限 */
    NETDEV_DOOR_EVENT_CARD_ILLEGAL                 = (NETDEV_DOOR_EVENT_BASE + 19),       /* 卡非法 */
    NETDEV_DOOR_EVENT_FIREPORTECT_ALRAM            = (NETDEV_DOOR_EVENT_BASE + 20),       /* 消防报警 */
    NETDEV_DOOR_EVENT_CANCEL_FIREPORTECT           = (NETDEV_DOOR_EVENT_BASE + 21),       /* 取消消防 */
    NETDEV_DOOR_EVENT_PRYING_RESIST_ALRAM          = (NETDEV_DOOR_EVENT_BASE + 22),       /* 防撬报警 */
    NETDEV_DOOR_EVENT_SUPERPASSWD_OPEN_DOOR        = (NETDEV_DOOR_EVENT_BASE + 23),       /* 超级密码开门 */
    NETDEV_DOOR_EVENT_COERCECODE_IN                = (NETDEV_DOOR_EVENT_BASE + 24),       /* 胁迫码进入 */
    NETDEV_DOOR_EVENT_DOOR_STATUS_OPEN             = (NETDEV_DOOR_EVENT_BASE + 25),       /* 门打开 */
    NETDEV_DOOR_EVENT_DOOR_STATUS_CLOSE            = (NETDEV_DOOR_EVENT_BASE + 26),       /* 门关闭 */
    NETDEV_DOOR_EVENT_DOOR_FORCED_OPEN             = (NETDEV_DOOR_EVENT_BASE + 27),       /* 门强开 */
    NETDEV_DOOR_EVENT_DOOR_KEEP_OPEN               = (NETDEV_DOOR_EVENT_BASE + 28),       /* 门保持打开 */
    NETDEV_DOOR_EVENT_LOCK_FAILURE                 = (NETDEV_DOOR_EVENT_BASE + 29),       /* 锁失效 */
    NETDEV_DOOR_EVENT_LOST_STOLEN_CARD             = (NETDEV_DOOR_EVENT_BASE + 30),       /* 丢失或被盗卡 */

    /* 达实门禁对接新增 */
    NETDEV_DOOR_EVENT_PASSWD_WRONG                 = (NETDEV_DOOR_EVENT_BASE + 31),       /* 密码错误 */
    NETDEV_DOOR_EVENT_ALWAYS_CLOSED                = (NETDEV_DOOR_EVENT_BASE + 32),       /* 常闭未通过 */
    NETDEV_DOOR_EVENT_CARD_PASSWD_ENTER            = (NETDEV_DOOR_EVENT_BASE + 33),       /* 卡加密码进入 */
    NETDEV_DOOR_EVENT_CARD_PASSWD_WRONG            = (NETDEV_DOOR_EVENT_BASE + 34),       /* 卡加密码错误 */
    NETDEV_DOOR_EVENT_MORE_CARD_OPEN               = (NETDEV_DOOR_EVENT_BASE + 35),       /* 多卡开门 */
    NETDEV_DOOR_EVENT_FIRST_CARD_OPEN              = (NETDEV_DOOR_EVENT_BASE + 36),       /* 首卡开门 */
    NETDEV_DOOR_EVENT_CARD_OUT_DATE                = (NETDEV_DOOR_EVENT_BASE + 37),       /* 卡过期限 */
    NETDEV_DOOR_EVENT_CARD_WATCH                   = (NETDEV_DOOR_EVENT_BASE + 38),       /* 巡更卡 */

    /*海康门禁对接新增 */ 
    NETDEV_DOOR_EVENT_REMOTE_CLOSE_DOOR            = (NETDEV_DOOR_EVENT_BASE + 39),       /* 远程关门 */
    NETDEV_DOOR_EVENT_REMOTE_ALWAYS_OPEN           = (NETDEV_DOOR_EVENT_BASE + 40),       /* 远程常开 */
    NETDEV_DOOR_EVENT_REMOTE_ALWAYS_CLOSE          = (NETDEV_DOOR_EVENT_BASE + 41),       /* 远程常关 */
    NETDEV_DOOR_EVENT_LEGAL_CARD_PASS              = (NETDEV_DOOR_EVENT_BASE + 42),       /* 合法卡认证通过 */
    NETDEV_DOOR_EVENT_CARD_AND_PSW_PASS            = (NETDEV_DOOR_EVENT_BASE + 43),       /* 刷卡加密码认证通过 */
    NETDEV_DOOR_EVENT_CARD_AND_PSW_FAIL            = (NETDEV_DOOR_EVENT_BASE + 44),       /* 刷卡加密码认证失败） */
    NETDEV_DOOR_EVENT_CARD_AND_PSW_TIMEOUT         = (NETDEV_DOOR_EVENT_BASE + 45),       /* 数卡加密码认证超时 */
    NETDEV_DOOR_EVENT_CARD_AND_PSW_OVER_TIME       = (NETDEV_DOOR_EVENT_BASE + 46),       /* 刷卡加密码超次 */
    NETDEV_DOOR_EVENT_INVALID_CARD                 = (NETDEV_DOOR_EVENT_BASE + 47),       /* 无此卡号 */
    NETDEV_DOOR_EVENT_DOOR_BUTTON_PRESS            = (NETDEV_DOOR_EVENT_BASE + 48),       /* 开门按钮按下 */
    NETDEV_DOOR_EVENT_DOOR_BUTTON_RELEASE          = (NETDEV_DOOR_EVENT_BASE + 49),       /* 开门按钮松开 */
    NETDEV_DOOR_EVENT_CARD_READER_DESMANTLE_ALARM  = (NETDEV_DOOR_EVENT_BASE + 50),       /* 读卡器防拆报警 */
    NETDEV_DOOR_EVENT_CARD_READER_DESMANTLE_RESUME = (NETDEV_DOOR_EVENT_BASE + 51),       /* 读卡器防拆恢复 */
    NETDEV_DOOR_EVENT_DOOR_MAGNET_OPEN             = (NETDEV_DOOR_EVENT_BASE + 52),       /* 门磁打开（正常开门） */
    NETDEV_DOOR_EVENT_DOOR_MAGNET_CLOSE            = (NETDEV_DOOR_EVENT_BASE + 53),       /* 门磁关闭（正常关门 */
    NETDEV_DOOR_EVENT_DOOR_MAGNET_OPEN_ABNORMAL    = (NETDEV_DOOR_EVENT_BASE + 54),       /* 门磁异常打开（门异常打开） */
    NETDEV_DOOR_EVENT_DOOR_MAGNET_OPEN_TIMEOUT     = (NETDEV_DOOR_EVENT_BASE + 55),       /* 门磁打开超时(门打开超时) */
    NETDEV_DOOR_EVENT_ANTI_SNEAK_FAIL              = (NETDEV_DOOR_EVENT_BASE + 56),       /* 反潜回认证失败 */
    NETDEV_DOOR_EVENT_INTERLOCK_DOOR_NOT_CLOSE     = (NETDEV_DOOR_EVENT_BASE + 57),       /* 互锁门未关闭 */
    NETDEV_DOOR_EVENT_MULTI_VERIFY_SUCCESS         = (NETDEV_DOOR_EVENT_BASE + 58),       /* 多重认证成功 */
    NETDEV_DOOR_EVENT_LEADER_CARD_OPEN_BEGIN       = (NETDEV_DOOR_EVENT_BASE + 59),       /* 首卡开门开始 */
    NETDEV_DOOR_EVENT_LEADER_CARD_OPEN_END         = (NETDEV_DOOR_EVENT_BASE + 60),       /* 首卡开门结束 */
    NETDEV_DOOR_EVENT_ALWAYS_OPEN_BEGIN            = (NETDEV_DOOR_EVENT_BASE + 61),       /* 常开状态开始 */
    NETDEV_DOOR_EVENT_ALWAYS_OPEN_END              = (NETDEV_DOOR_EVENT_BASE + 62),       /* 常开状态结束 */
    NETDEV_DOOR_EVENT_ALWAYS_CLOSE_BEGIN           = (NETDEV_DOOR_EVENT_BASE + 63),       /* 常关状态开始 */
    NETDEV_DOOR_EVENT_ALWAYS_CLOSE_END             = (NETDEV_DOOR_EVENT_BASE + 64),       /* 常关状态结束 */
    NETDEV_DOOR_EVENT_KEYPRESS_OPEN_DOOR           = (NETDEV_DOOR_EVENT_BASE + 65),       /* 按键开门 */

    /* 纽贝尔门禁新协议对接事件定义 */
    NETDEV_DOOR_EVENT_COMMU_INTERRUPT              = (NETDEV_DOOR_EVENT_BASE + 81),       /* 通讯中断 */
    NETDEV_DOOR_EVENT_COMMU_RESTORE                = (NETDEV_DOOR_EVENT_BASE + 82),       /* 通讯恢复 */
    NETDEV_DOOR_EVENT_LEGAL_CREDIT_CARD            = (NETDEV_DOOR_EVENT_BASE + 83),       /* 合法刷卡 */
    NETDEV_DOOR_EVENT_LEGAL_USER_ID                = (NETDEV_DOOR_EVENT_BASE + 84),       /* 合法用户ID */
    NETDEV_DOOR_EVENT_CARD_NO_REG                  = (NETDEV_DOOR_EVENT_BASE + 85),       /* 卡未注册 */
    NETDEV_DOOR_EVENT_CARD_UNAUTH                  = (NETDEV_DOOR_EVENT_BASE + 86),       /* 卡未授权 */
    NETDEV_DOOR_EVENT_CARD_DISABLED                = (NETDEV_DOOR_EVENT_BASE + 87),       /* 卡已停用 */
    NETDEV_DOOR_EVENT_CARD_EXPIRED                 = (NETDEV_DOOR_EVENT_BASE + 88),       /* 卡已过期 */
    NETDEV_DOOR_EVENT_INVALID_TIME                 = (NETDEV_DOOR_EVENT_BASE + 89),       /* 无效时段 */
    NETDEV_DOOR_EVENT_PSW_ERROR                    = (NETDEV_DOOR_EVENT_BASE + 90),       /* 密码错误 */
    NETDEV_DOOR_EVENT_PROHIBITED                   = (NETDEV_DOOR_EVENT_BASE + 91),       /* 禁止通行 */
    NETDEV_DOOR_EVENT_REQ_CENTER_OPEN_DOOR         = (NETDEV_DOOR_EVENT_BASE + 92),       /* 请求中心开门 */
    NETDEV_DOOR_EVENT_LEGAL_CARD_OPEN_DOOR         = (NETDEV_DOOR_EVENT_BASE + 93),       /* 合法卡开门 */
    NETDEV_DOOR_EVENT_SUPER_CARD_OPEN_DOOR         = (NETDEV_DOOR_EVENT_BASE + 94),       /* 超级卡开门 */
    NETDEV_DOOR_EVENT_CENTER_OPEN_DOOR             = (NETDEV_DOOR_EVENT_BASE + 96),       /* 中心开门 */
    NETDEV_DOOR_EVENT_LINK_OPEN_DOOR               = (NETDEV_DOOR_EVENT_BASE + 97),       /* 联动开门 */
    NETDEV_DOOR_EVENT_FORCE_OPEN_DOOR              = (NETDEV_DOOR_EVENT_BASE + 98),       /* 强行开门 */
    NETDEV_DOOR_EVENT_DOOR_IS_OPEN                 = (NETDEV_DOOR_EVENT_BASE + 99),       /* 门被打开 */
    NETDEV_DOOR_EVENT_DOOR_IS_CLOSE                = (NETDEV_DOOR_EVENT_BASE + 100),      /* 门被关闭 */
    NETDEV_DOOR_EVENT_STRESS_ALARM                 = (NETDEV_DOOR_EVENT_BASE + 103),      /* 胁迫报警 */
    NETDEV_DOOR_EVENT_TRAILING_ALARM               = (NETDEV_DOOR_EVENT_BASE + 105),      /* 尾随报警 */
    NETDEV_DOOR_EVENT_DOOR_LOCK                    = (NETDEV_DOOR_EVENT_BASE + 106),      /* 门锁死 */
    NETDEV_DOOR_EVENT_LIFT_DOOR_LOCK               = (NETDEV_DOOR_EVENT_BASE + 107),      /* 门解除锁死 */
    NETDEV_DOOR_EVENT_DOOR_NOT_CLOSE               = (NETDEV_DOOR_EVENT_BASE + 108),      /* 门未关好 */
    NETDEV_DOOR_EVENT_NEED_PSW                     = (NETDEV_DOOR_EVENT_BASE + 109),      /* 需要密码 */
    NETDEV_DOOR_EVENT_NEED_FINGERPRINT             = (NETDEV_DOOR_EVENT_BASE + 110),      /* 需要指纹 */
    NETDEV_DOOR_EVENT_REQ_INTERCOM                 = (NETDEV_DOOR_EVENT_BASE + 111),      /* 请求对讲 */
    NETDEV_DOOR_EVENT_EMERGENCY                    = (NETDEV_DOOR_EVENT_BASE + 112),      /* 紧急事件 */
    NETDEV_DOOR_EVENT_PATROL_LEGAL_CREDIT_CARD     = (NETDEV_DOOR_EVENT_BASE + 113),      /* 巡更合法刷卡 */
    NETDEV_DOOR_EVENT_PATROL_LEGAL_FINGERPRINT     = (NETDEV_DOOR_EVENT_BASE + 114),      /* 巡更合法指纹 */
    NETDEV_DOOR_EVENT_PATROL_CARD_NOT_REG          = (NETDEV_DOOR_EVENT_BASE + 115),      /* 巡更卡未注册 */
    NETDEV_DOOR_EVENT_NOT_PATROL_CARD              = (NETDEV_DOOR_EVENT_BASE + 116),      /* 非巡更员刷卡 */
    NETDEV_DOOR_EVENT_NORMAL_PATROL                = (NETDEV_DOOR_EVENT_BASE + 117),      /* 正常巡更 */
    NETDEV_DOOR_EVENT_ADVANCE_PATROL               = (NETDEV_DOOR_EVENT_BASE + 118),      /* 提前巡更 */
    NETDEV_DOOR_EVENT_TIMEOUT_PATROL               = (NETDEV_DOOR_EVENT_BASE + 119),      /* 超时巡更 */
    NETDEV_DOOR_EVENT_INVALID_PATROL               = (NETDEV_DOOR_EVENT_BASE + 120),      /* 无效巡更 */
    NETDEV_DOOR_EVENT_NOT_PATROL                   = (NETDEV_DOOR_EVENT_BASE + 121),      /* 未巡更 */
    NETDEV_DOOR_EVENT_TH_ALARM                     = (NETDEV_DOOR_EVENT_BASE + 122),      /* 温湿度报警 */
    NETDEV_DOOR_EVENT_TH_RESTORE                   = (NETDEV_DOOR_EVENT_BASE + 123),      /* 温湿度恢复 */
    NETDEV_DOOR_EVENT_TH_RECORD                    = (NETDEV_DOOR_EVENT_BASE + 124),      /* 温湿度记录 */
    NETDEV_DOOR_EVENT_SMOKE_ALARM                  = (NETDEV_DOOR_EVENT_BASE + 125),      /* 烟感报警 */
    NETDEV_DOOR_EVENT_SMOKE_RESTORE                = (NETDEV_DOOR_EVENT_BASE + 126),      /* 烟感恢复 */
    NETDEV_DOOR_EVENT_SMOKE_RECORD                 = (NETDEV_DOOR_EVENT_BASE + 127),      /* 烟感记录 */

    /* 微耕门禁新协议对接事件定义 */
    NETDEV_DOOR_EVENT_PC_CONTROL                   = (NETDEV_DOOR_EVENT_BASE + 128),      /* 刷卡不通过：电脑控制 */
    NETDEV_DOOR_EVENT_LIMITED_CARD_NUM             = (NETDEV_DOOR_EVENT_BASE + 129),      /* 刷卡不通过：受刷卡次数限制 */
    NETDEV_DOOR_EVENT_REASON_UNKNOWN               = (NETDEV_DOOR_EVENT_BASE + 130),      /* 刷卡不通过：原因不明 */
    NETDEV_DOOR_EVENT_CONTROLLER_ON                = (NETDEV_DOOR_EVENT_BASE + 131),      /* 控制器上电 */
    NETDEV_DOOR_EVENT_CONTROLLER_RESERT            = (NETDEV_DOOR_EVENT_BASE + 132),      /* 控制器复位 */
    NETDEV_DOOR_EVENT_DOOR_FORCE_CLOSE             = (NETDEV_DOOR_EVENT_BASE + 133),      /* 强制关门 */
    NETDEV_DOOR_EVENT_DOOR_OFFLINE                 = (NETDEV_DOOR_EVENT_BASE + 134),      /* 门不在线 */
    NETDEV_DOOR_EVENT_FIRE                         = (NETDEV_DOOR_EVENT_BASE + 135),      /* 火警 */
    NETDEV_DOOR_EVENT_CALL_EMERGENCY               = (NETDEV_DOOR_EVENT_BASE + 136),      /* 呼叫紧急报警 */
    NETDEV_DOOR_PERSON_FACE_DOOR                   = (NETDEV_DOOR_EVENT_BASE + 137),      /* 人脸刷门 */
    NETDEV_DOOR_PERSON_INVALE_DOOR                 = (NETDEV_DOOR_EVENT_BASE + 138),      /* 人脸非法刷门 */

    /* 中控门禁对接事件定义 */
    NETDEV_DOOR_EVENT_FINGERPRINT_OPEN_DOOR        = (NETDEV_DOOR_EVENT_BASE + 153),      /* 指纹开门 */
    NETDEV_DOOR_EVENT_ANTI_SUBMARINE               = (NETDEV_DOOR_EVENT_BASE + 154),      /* 反潜报警 */
    NETDEV_DOOR_EVENT_PRESS_MISTAKE                = (NETDEV_DOOR_EVENT_BASE + 155),      /* 错按报警 */
    NETDEV_DOOR_EVENT_PF_PW_RF_OPEN_DOOR           = (NETDEV_DOOR_EVENT_BASE + 156),      /* 指纹、密码或卡验证开门 */

    /* 泰科门禁对接事件定义 */
    NETDEV_DOOR_EVENT_DOOR_FORCED_OPEN_CLEARED     = (NETDEV_DOOR_EVENT_BASE + 157),      /* 门强制打开恢复 */

    /* 通用门禁对接中控事件定义 */
    NETDEV_DOOR_EVENT_BLACKLIST                    = (NETDEV_DOOR_EVENT_BASE + 158),      /* 黑名单 */
    NETDEV_DOOR_EVENT_FAILED_SEND_CMD              = (NETDEV_DOOR_EVENT_BASE + 159),      /* 发送命令失败 */
    NETDEV_DOOR_EVENT_FAILED_OPEN_DOOE_MU_CARD     = (NETDEV_DOOR_EVENT_BASE + 160),      /* 多卡开门失败 */
    NETDEV_DOOR_EVENT_CARD_INVALID_PERIOD          = (NETDEV_DOOR_EVENT_BASE + 161),      /* 非有效时间段刷卡 */ 
    NETDEV_DOOR_EVENT_CARD_REPORT_LOST             = (NETDEV_DOOR_EVENT_BASE + 162),      /* 卡已挂失 */
    NETDEV_DOOR_EVENT_TAMPER_ALARM                 = (NETDEV_DOOR_EVENT_BASE + 163),      /* 防拆报警 */ 
    NETDEV_DOOR_EVENT_SWIPE_CARD_WHEN_NORMAL_OPEN  = (NETDEV_DOOR_EVENT_BASE + 164),      /* 常开时间段内刷卡 */ 
    NETDEV_DOOR_EVENT_OPEN_DOOR_BY_EMERGENCY_PWD   = (NETDEV_DOOR_EVENT_BASE + 165),      /* 紧急密码开门 */ 
    NETDEV_DOOR_EVENT_OPEN_DOOR_WHEN_NORMAL_OPEN   = (NETDEV_DOOR_EVENT_BASE + 166),      /* 常开时间段开门 */ 
    NETDEV_DOOR_EVENT_EXIT_BUTTON_DURING_ILLEGAL_PERIOD  = (NETDEV_DOOR_EVENT_BASE + 167),/* 非有效时间段按出门按钮 */ 
    NETDEV_DOOR_EVENT_DOOR_ALREADY_OPEN            = (NETDEV_DOOR_EVENT_BASE + 168),      /* 门已打开 */ 
    NETDEV_DOOR_EVENT_DOOR_ALREADY_CLOSE           = (NETDEV_DOOR_EVENT_BASE + 169),      /* 门已关闭 */ 
    NETDEV_DOOR_EVENT_ILLEGAL_PERIOD               = (NETDEV_DOOR_EVENT_BASE + 170),      /* 非法时间段 */ 
    NETDEV_DOOR_EVENT_OPEN_DOOR_BY_DURESS_PWD      = (NETDEV_DOOR_EVENT_BASE + 171),      /* 胁迫密码开门 */ 

    NETDEV_DOOR_EVENT_END                          = (NETDEV_DOOR_EVENT_BASE + 599),      /* 门禁事件类型定义结束位置 */

#define NETDEV_IS_DOOR_EVENT(x)    (NETDEV_DOOR_EVENT_BASE <= (x) && (x) < NETDEV_DOOR_EVENT_END)

}NETDEV_ALARM_SUBTYPE_E;

/**
 * @enum tagNETDEVEventResType
 * @brief 事件资源类型枚举 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVEventResType
{
    NETDEV_EVENT_RES_TYPE_USER              = 0,                /* 用户资源，用户上下线对应登录句柄，其余对应用户编号 */
    NETDEV_EVENT_RES_TYPE_DEVICE            = 1,                /* 设备资源，对应设备编号 */
    NETDEV_EVENT_RES_TYPE_CHANNEL           = 2,                /* 通道资源，对应通道编号 */
    NETDEV_EVENT_RES_TYPE_LOGOUT            = 3,                /* 强制用户退出，对应登录句柄 */
    NETDEV_EVENT_RES_TYPE_SEQUENCE          = 4,                /* 轮巡资源，对应资源ID */
    NETDEV_EVENT_RES_TYPE_EMAP_HOTPOT       = 5,                /* 电子地图热点资源，对应资源ID */
    NETDEV_EVENT_RES_TYPE_EMAP_HOTAREA      = 6,                /* 电子地图热区资源，对应资源ID */
    NETDEV_EVENT_RES_TYPE_EMAP_ALARM        = 7,                /* 电子地图告警资源，对应资源ID */
    NETDEV_EVENT_RES_TYPE_TIMETEMPLATE      = 8,                /* 告警预案模板，对应模板ID */
    NETDEV_EVENT_RES_TYPE_SYSRIGHT          = 9,                /* 系统权限资源，对应用户登录句柄 */
    NETDEV_EVENT_RES_TYPE_DEVRIGHT          = 10,               /* 设备权限资源，对应通道编号 */
    NETDEV_EVENT_RES_TYPE_ORG               = 11,               /* 组织资源，对应组织编号 */
    NETDEV_EVENT_RES_TYPE_ALARM_TASK        = 12,               /* 报警任务资源，对应报警任务编号 */
    NETDEV_EVENT_RES_TYPE_SLAVE             = 13,               /* 主从资源(与服务端保持一致) */
    NETDEV_EVENT_RES_TYPE_TVWALL            = 14,               /* 电视墙资源，对应电视墙ID */
    NETDEV_EVENT_RES_TYPE_TVWALL_SCENE      = 15,               /* 电视墙场景资源，对应电视墙ID */
    NETDEV_EVENT_RES_TYPE_WND               = 16,               /* 电视墙窗口资源，对应窗口ID */
    NETDEV_EVENT_RES_TYPE_VIRTUAL_LED       = 17,               /* 电视墙虚拟LED资源，对应虚拟LED ID */
    NETDEV_EVENT_RES_TYPE_BROADCAST_CHANGE  = 18,               /* 广播组信息变更(值与服务端保持一致) */
    NETDEV_EVENT_RES_TYPE_LOGIC_ORG         = 19,               /* 虚拟组织资源，对应组织编号，删除虚拟组织下通道时使用 */
    NETDEV_EVENT_RES_TYPE_USER_ROLE         = 20,               /* 用户角色资源，对应用户登录句柄*/
    NETDEV_EVENT_RES_TYPE_ROLE_ORG          = 21,               /* 角色组织展示树资源，对应用户登录句柄 */
    NETDEV_EVENT_RES_TYPE_EMAP_PIC          = 22,               /* 图片资源，对应热区编号 */
    NETDEV_EVENT_RES_TYPE_PATROL            = 23,               /* 巡航资源 */
    NETDEV_EVENT_RES_TYPE_RECORD            = 24,               /* 录制轨迹资源 */
    NETDEV_EVENT_RES_TYPE_ACS_PERSON        = 25,               /* 门禁人员资源，对应门禁人员ID */
    NETDEV_EVENT_RES_TYPE_ACS_PERSON_CARD   = 26,               /* 门禁卡资源，对应门禁人员ID */
    NETDEV_EVENT_RES_TYPE_TVWALL_LIST       = 27,               /* 电视墙列表，权限到电视墙 */
    NETDEV_EVENT_RES_TYPE_TVWALL_SCENE_SWITCH = 28,             /* 电视墙场景切换 */

    NETDEV_EVENT_RES_TYPE_FACE_LIB          = 29,               /* 人脸库资源，对应人脸库ID */
    NETDEV_EVENT_RES_TYPE_FACE_CUSTOM       = 30,               /* 人脸库自定义属性，对应属性ID */
    NETDEV_EVENT_RES_TYPE_FACE_MEMBER       = 31,               /* 人脸成员资源，对应人脸库ID */
    NETDEV_EVENT_RES_TYPE_FACE_GUARD        = 32,               /* 人脸布控资源，对应人脸布控ID */
    NETDEV_EVENT_RES_TYPE_SMART_DETECT      = 33,               /* 智能检测资源，对应智能检测类型，人脸识别:0 */
    NETDEV_EVENT_RES_TYPE_MANUAL_STATUS     = 34,               /* 手动录像状态 */
    NETDEV_EVENT_RES_TYPE_VEHICLE_GUARD     = 38,               /* 车牌布控资源，对应车牌布控ID */
    NETDEV_EVENT_RES_TYPE_CDN_CHANNEL       = 39,               /* CDN通道资源变更，不上报对应变更信息，客户端收到事件后主动来查询通道列表 */
    NETDEV_EVENT_RES_TYPE_FACE_MEMBER_SORT  = 40,               /* 人脸成员划归资源，对应人脸库ID */
    NETDEV_EVENT_RES_TYPE_VEHICLE_LIB       = 41,               /* 车辆库资源，对应车辆库ID */
    NETDEV_EVENT_RES_TYPE_VEHICLE_MEMBER_SORT = 42,             /* 车辆成员划归资源，对应车辆库ID */
    NETDEV_EVENT_RES_TYPE_VEHICLE_MEMBER      = 43,             /* 车辆成员资源，对应车辆成员ID */

    NETDEV_EVENT_RES_TYPE_REMAIN_PARK_SPACE = 44,               /* 停车场剩余车位资源 */
    NETDEV_EVENT_RES_TYPE_ABNORMAL_CHARGE   = 45,               /* 异常收费规则资源 */
    NETDEV_EVENT_RES_TYPE_PARK_RES_CHANGE   = 46,               /* 停车场资源变更 */
    NETDEV_EVENT_RES_TYPE_SMART_COMMUNITY_PERSON   = 47,        /* 智慧社区人员资源 */
    NETDEV_EVENT_RES_TYPE_SMART_COMMUNITY_CAR      = 48,        /* 智慧社区车辆资源 */
    NETDEV_EVENT_RES_TYPE_SMART_COMMUNITY_BUILDING = 49,        /* 智慧社区楼栋资源 */
    NETDEV_EVENT_RES_TYPE_SMART_COMMUNITY_UNIT     = 50,        /* 智慧社区单元资源 */
    NETDEV_EVENT_RES_TYPE_SMART_COMMUNITY_ROOM     = 51,        /* 智慧社区房间资源 */
    NETDEV_EVENT_RES_TYPE_SMART_COMMUNITY_ORG      = 52,        /* 智慧社区组织(小区)资源 */
    NETDEV_EVENT_RES_TYPE_TEMP_VEHICLE_PAY_CHANGE = 53,         /* 临时车缴费信息变更 */
    NETDEV_EVENT_RES_TYPE_THIRDPART_PAYMENT       = 54,         /* 停车场第三方支付资源 */
    NETDEV_EVENT_RES_TYPE_PAYMENT_WAIT            = 55,         /* 支付中，请等待 */
    NETDEV_EVENT_RES_TYPE_ENTRANCE_LIST           = 56,         /* 出入口列表，权限到出入口 */
    NETDEV_EVENT_RES_TYPE_VIEWPLAN_RES      = 57,               /* 视图计划，对应计划ID */
    NETDEV_EVENT_RES_TYPE_SCENESPLAN_RES    = 58,               /* 场景间计划，对应计划ID */
    NETDEV_EVENT_RES_TYPE_ACS_PERMISSION    = 59,               /* 权限资源,  用于授权信息变更*/
    NETDEV_EVENT_RES_TYPE_ACS_GROUP         = 60,               /* 门禁权限组资源，用于门禁权限组（组织）的变更 */
    NETDEV_EVENT_RES_TYPE_TVWALL_AUDIO      = 61,               /* 音频事件 */
    NETDEV_EVENT_RES_TYPE_PAYMENT_RRULE     = 62,               /* 手动添加收费规则资源  */
    NETDEV_EVENT_RES_TYPE_GIS               = 63,               /* 电子地图资源 */
    NETDEV_EVENT_RES_TYPE_INVALID           = 0xFF              /* 无效值 */
}NETDEV_EVENT_RES_TYPE_E;

/**
* @enum tagNETDEVRecordSearchType
* @brief 按位查询录像类型枚举，参照最新LAPI接口文档
*/
typedef enum tagNETDEVRecordSearchType
{
    NETDEV_RECORD_SEARCH_TYPE_ALL                    = 0x00000000,               /* 查找时使用，全部录像类型 */
    NETDEV_RECORD_SEARCH_TYPE_MANUL                  = 0x00000001,               /* 手动录像 */
    NETDEV_RECORD_SEARCH_TYPE_EVENT                  = 0x00000002,               /* 通用类告警（NVR暂不支持） */
    NETDEV_RECORD_SEARCH_TYPE_MOTION                 = 0x00000004,               /* 运动检测 */
    NETDEV_RECORD_SEARCH_TYPE_ALARMIN                = 0x00000008,               /* 输入开关量 */
    NETDEV_RECORD_SEARCH_TYPE_VIDEO_LOSS             = 0x00000010,               /* 视频丢失 */
    NETDEV_RECORD_SEARCH_TYPE_AUDIO_DETECT           = 0x00000020,               /* 音频检测 */

    NETDEV_RECORD_SEARCH_TYPE_COMMON                 = 0x00000080,              /* 计划录像(常规录像) */
    NETDEV_RECORD_SEARCH_TYPE_FACE_DETECT            = 0x00000100,              /* 人脸检测 */
    NETDEV_RECORD_SEARCH_TYPE_LINE_DETECT            = 0x00000200,              /* 越界检测 */
    NETDEV_RECORD_SEARCH_TYPE_FIELD_DETECT           = 0x00000400,              /* 区域入侵 */
    NETDEV_RECORD_SEARCH_TYPE_FOCUS_DETECT           = 0x00000800,              /* 虚焦检测 */
    NETDEV_RECORD_SEARCH_TYPE_SCENE_CHANGE           = 0x00001000,              /* 场景变更 */
    NETDEV_RECORD_SEARCH_TYPE_SMART_TRACK            = 0x00002000,              /* 智能运动跟踪事件 */

    NETDEV_RECORD_SEARCH_TYPE_URGENT_BELL            = 0x00004000,              /* 紧急铃 */
    NETDEV_RECORD_SEARCH_TYPE_REMAIN_ARTICLE         = 0x00020000,              /* 物品遗留 */
    NETDEV_RECORD_SEARCH_TYPE_MOVE_ARTICLE           = 0x00040000,              /* 物品搬移 */

    NETDEV_RECORD_SEARCH_TYPE_HUMAN_DETECT           = 0x00200000,              /* 人形检测 */
    NETDEV_RECORD_SEARCH_TYPE_SMART_RECORD           = 0x00263F20,              /* 所有智能类告警  10 0110 0011 1111 0010 0000*/

    NETDEV_RECORD_SEARCH_TYPE_INVALID                = 0XFFFFFFFF             /* 无效值 */
}NETDEV_RECORD_SEARCH_TYPE_E;

/* IP地址类型 */
typedef enum tagNETDEVAddressType
{
    NETDEV_ADDRESS_TYPE_IPV4                    = 0,               /* IPV4 */
    NETDEV_ADDRESS_TYPE_IPV6                    = 1,               /* IPV6 */
    NETDEV_ADDRESS_TYPE_DOMAIN                  = 2,               /* 域名 */
    NETDEV_ADDRESS_TYPE_IPV4_IPV6               = 3,               /* IPV4和IPV6 */

    NETDEV_ADDRESS_TYPE_INVALID                 = 0xFF             /* 无效值 */
}NETDEV_ADDRESS_TYPE_E;

/**
* @enum tagNETDEVVehicleMonitorType
* @brief 车辆布控类型 枚举定义 monitor type Enumeration definition
* @attention 无 None
*/
typedef enum tagNETDEVVehicleMonitorType
{
    NETDEV_VEHICLE_MONITOR_TYPE_ROB_E         = 0,           /* 被抢车 */
    NETDEV_VEHICLE_MONITOR_TYPE_STEAL_E       = 1,           /* 被盗车 */
    NETDEV_VEHICLE_MONITOR_TYPE_SUSPICION_E   = 2,           /* 嫌疑车 */
    NETDEV_VEHICLE_MONITOR_TYPE_ILLEGAL_E     = 3,           /* 交通违法车 */
    NETDEV_VEHICLE_MONITOR_TYPE_SUREILLANCE_E = 4,           /* 紧急查控车 */

    NETDEV_VEHICLE_MONITOR_TYPE_ALL_E         = 255,         /* 所有布控车 */

    NETDEV_VEHICLE_MONITOR_TYPE_INVALID = 0xFFFF             /* 无效值  Invalid value */
}NETDEV_VEHICLE_MONITOR_TYPE_E;

/**
* @enum tagNETDEVPlateColor
* @brief 车牌颜色 枚举定义 plate color Enumeration definition
* @attention 无 None
*/
typedef enum tagNETDEVPlateColor
{
    NETDEV_PLATE_COLOR_BLACK_E           = 0,           /* 黑色 */
    NETDEV_PLATE_COLOR_WHITE_E           = 1,           /* 白色 */
    NETDEV_PLATE_COLOR_GRAY_E            = 2,           /* 灰色 */
    NETDEV_PLATE_COLOR_RED_E             = 3,           /* 红色 */
    NETDEV_PLATE_COLOR_BLUE_E            = 4,           /* 蓝色 */
    NETDEV_PLATE_COLOR_YELLOW_E          = 5,           /* 黄色 */
    NETDEV_PLATE_COLOR_ORANGE_E          = 6,           /* 橙色 */
    NETDEV_PLATE_COLOR_BROWN_E           = 7,           /* 棕色 */
    NETDEV_PLATE_COLOR_GREEN_E           = 8,           /* 绿色 */
    NETDEV_PLATE_COLOR_PURPLE_E          = 9,           /* 紫色 */
    NETDEV_PLATE_COLOR_CYAN_E            = 10,          /* 青色 */
    NETDEV_PLATE_COLOR_PINK_E            = 11,          /* 粉色 */
    NETDEV_PLATE_COLOR_TRANSPARENT_E     = 12,          /* 透明 */
    NETDEV_PLATE_COLOR_SILVERYWHITE_E    = 13,          /* 银白 */
    NETDEV_PLATE_COLOR_DARK_E            = 14,          /* 深色 */
    NETDEV_PLATE_COLOR_LIGHT_E           = 15,          /* 浅色 */
    NETDEV_PLATE_COLOR_COLOURLESS        = 16,          /* 无色 */
    NETDEV_PLATE_COLOR_YELLOWGREEN       = 17,          /* 黄绿双色 */
    NETDEV_PLATE_COLOR_GRADUALGREEN      = 18,          /* 渐变绿色 */
    NETDEV_PLATE_COLOR_OTHER_E           = 99,          /* 其他 */
    NETDEV_PLATE_COLOR_UNKNOW_E          = 100,         /* 未知 */
    NETDEV_PLATE_COLOR_INVALID           = 0xFF         /* 无效值  Invalid value */
}NETDEV_PLATE_COLOR_E;

/**
* @enum tagNETDEVPlateType
* @brief 车牌类型 枚举定义 plate type Enumeration definition
* @attention 无 None
*/
typedef enum tagNETDEVPlateType
{
    NETDEV_PLATE_TYPE_BIG_CAR_E = 0,                     /* 大型汽车号牌 */
    NETDEV_PLATE_TYPE_MINI_CAR_E = 1,                    /* 小型汽车号牌 */
    NETDEV_PLATE_TYPE_EMBASSY_CAR_E = 2,                 /* 使馆汽车号牌 */
    NETDEV_PLATE_TYPE_CONSULATE_CAR_E = 3,               /* 领馆汽车号牌 */
    NETDEV_PLATE_TYPE_OVERSEAS_CAR_E = 4,                /* 境外汽车号牌 */
    NETDEV_PLATE_TYPE_FOREIGN_CAR_E = 5,                 /* 外籍汽车号牌 */
    NETDEV_PLATE_TYPE_COMMON_MOTORBIKE_E = 6,            /* 普通摩托车号牌 */
    NETDEV_PLATE_TYPE_HANDINESS_MOTORBIKE_E = 7,         /* 轻便摩托车号牌 */
    NETDEV_PLATE_TYPE_EMBASSY_MOTORBIKE_E = 8,           /* 使馆摩托车号牌 */
    NETDEV_PLATE_TYPE_CONSULATE_MOTORBIKE_E = 9,         /* 领馆摩托车号牌 */
    NETDEV_PLATE_TYPE_OVERSEAS_MOTORBIKE_E = 10,         /* 境外摩托车号牌 */
    NETDEV_PLATE_TYPE_FOREIGN_MOTORBIKE_E = 11,          /* 外籍摩托车号牌 */
    NETDEV_PLATE_TYPE_LOW_SPEED_CAR_E = 12,              /* 低速车号牌 */
    NETDEV_PLATE_TYPE_TRACTOR_E = 13,                    /* 拖拉机号牌 */
    NETDEV_PLATE_TYPE_TRAILER_E = 14,                    /* 挂车号牌 */
    NETDEV_PLATE_TYPE_COACH_CAR_E = 15,                  /* 教练汽车号牌 */
    NETDEV_PLATE_TYPE_COACH_MOTORBIKE_E = 16,            /* 教练摩托车号牌 */
    NETDEV_PLATE_TYPE_TEMPORARY_ENTRY_CAR_E = 17,        /* 临时入境汽车号牌 */
    NETDEV_PLATE_TYPE_TEMPORARY_ENTRY_MOTORBIKE_E = 18,  /* 临时入境摩托车号牌 */
    NETDEV_PLATE_TYPE_TEMPORARY_DRIVING_E = 19,          /* 临时行驶车号牌 */
    NETDEV_PLATE_TYPE_POLICE_CAR_E = 20,                 /* 警用汽车号牌 */
    NETDEV_PLATE_TYPE_POLICE_MOTORBIKE_E = 21,           /* 警用摩托车号牌 */
    NETDEV_PLATE_TYPE_AGRICULTURAL_E = 22,               /* 原农机号牌 */
    NETDEV_PLATE_TYPE_HONGKONG_ENTRY_EXIT_E = 23,        /* 香港入出境号牌 */
    NETDEV_PLATE_TYPE_MACAO_ENTRY_EXIT_E = 24,           /* 澳门入出境号牌 */
    NETDEV_PLATE_TYPE_ARMED_POLICE_E = 25,               /* 武警号牌 */
    NETDEV_PLATE_TYPE_ARMY_E = 26,                       /* 军队号牌 */

    NETDEV_PLATE_TYPE_OTHER_E = 99,                      /* 其他号牌 */


    NETDEV_PLATE_TYPE_INVALID = 0xFF                     /* 无效值  Invalid value */
}NETDEV_PLATE_TYPE_E;

/**
* @enum tagNETDEVVehicleColor
* @brief 车辆颜色 枚举定义 plate color Enumeration definition
* @attention 无 None
*/
typedef enum tagNETDEVVehicleColor
{
    NETDEV_VEHICLE_COLOR_BLACK_E          = 0,        /* 黑色 */
    NETDEV_VEHICLE_COLOR_WHITE_E          = 1,        /* 白色 */
    NETDEV_VEHICLE_COLOR_GRAY_E           = 2,        /* 灰色 */
    NETDEV_VEHICLE_COLOR_RED_E            = 3,        /* 红色 */
    NETDEV_VEHICLE_COLOR_BLUE_E           = 4,        /* 蓝色 */
    NETDEV_VEHICLE_COLOR_YELLOW_E         = 5,        /* 黄色 */
    NETDEV_VEHICLE_COLOR_ORANGE_E         = 6,        /* 橙色 */
    NETDEV_VEHICLE_COLOR_BROWN_E          = 7,        /* 棕色 */
    NETDEV_VEHICLE_COLOR_GREEN_E          = 8,        /* 绿色 */
    NETDEV_VEHICLE_COLOR_PURPLE_E         = 9,        /* 紫色 */
    NETDEV_VEHICLE_COLOR_CYAN_E           = 10,       /* 青色 */
    NETDEV_VEHICLE_COLOR_PINK_E           = 11,       /* 粉色 */
    NETDEV_VEHICLE_COLOR_TRANSPARENT_E    = 12,       /* 透明 */
    NETDEV_VEHICLE_COLOR_OTHER_E          = 99,       /* 其他 */

    NETDEV_VEHICLE_COLOR_INVALID        = 0xFF      /* 无效值  Invalid value */
}NETDEV_VEHICLE_COLOR_E;

/**
* @enum tagNETDEVVehicleType
* @brief 车辆类型 枚举定义 plate type Enumeration definition
* @attention 无 None
*/
typedef enum tagNETDEVVehicleType
{
    NETDEV_VEHICLE_TYPE_TRICYCLE_E       = 0,                /* 三轮车 */
    NETDEV_VEHICLE_TYPE_MOTOR_BUS_E      = 1,                /* 大客车 */
    NETDEV_VEHICLE_TYPE_MIDDLE_E         = 2,                /* 中型车 */
    NETDEV_VEHICLE_TYPE_SMALL_E          = 3,                /* 小型车 */
    NETDEV_VEHICLE_TYPE_BIG_E            = 4,                /* 大型车 */
    NETDEV_VEHICLE_TYPE_TWOWHEELVEH      = 5,                /* 二轮车 */
    NETDEV_VEHICLE_TYPE_MOTORCYCLE_E     = 6,                /* 摩托车 */
    NETDEV_VEHICLE_TYPE_TRACTOR_E        = 7,                /* 拖拉机 */
    NETDEV_VEHICLE_TYPE_AGRICULTURAL_E   = 8,                /* 农用货车 */
    NETDEV_VEHICLE_TYPE_SEADAN           = 9,                /* 轿车 */
    NETDEV_VEHICLE_TYPE_SUV_E            = 10,               /* SUV */
    NETDEV_VEHICLE_TYPE_VAN_E            = 11,               /* 面包车 */
    NETDEV_VEHICLE_TYPE_SMALLTRUCK_E     = 12,               /* 小货车 */
    NETDEV_VEHICLE_TYPE_MEDIUMCAR_E      = 13,               /* 中巴车/中型客车 */
    NETDEV_VEHICLE_TYPE_LARGEBUS_E       = 14,               /* 大客车/大型客车 */
    NETDEV_VEHICLE_TYPE_LARGETRUCK_E     = 15,               /* 大货车/大型货车 */
    NETDEV_VEHICLE_TYPE_PICKUPTRUCK_E    = 16,               /* 皮卡车 */
    NETDEV_VEHICLE_TYPE_BUSINESSVEH_E    = 17,               /* MPV 商务车 */
    NETDEV_VEHICLE_TYPE_SPORTSCAR_E      = 18,               /* 跑车 */
    NETDEV_VEHICLE_TYPE_MINICAR_E        = 19,               /* 微型轿车 */
    NETDEV_VEHICLE_TYPE_HATCHBACKCAR_E   = 20,               /* 两厢轿车 */
    NETDEV_VEHICLE_TYPE_THREEBOX_E       = 21,               /* 三厢轿车 */
    NETDEV_VEHICLE_TYPE_LIGHTBUS_E       = 22,               /* 轻型客车 */
    NETDEV_VEHICLE_TYPE_MEDIUNTRUCK_E    = 23,               /* 中型货车 */
    NETDEV_VEHICLE_TYPE_TRAILER_E        = 24,               /* 挂车 */
    NETDEV_VEHICLE_TYPE_TANK_E           = 25,               /* 槽罐车 */
    NETDEV_VEHICLE_TYPE_WATERCAR_E       = 26,               /* 洒水车 */
    NETDEV_VEHICLE_TYPE_OTHER_E          = 998,              /* 其他 */
    NETDEV_VEHICLE_TYPE_UNKNOW_E         = 999,              /* 未知 */
    NETDEV_VEHICLE_TYPE_INDISTINGUISH_E  = 1000,             /* 不区分车辆类型 */
    NETDEV_VEHICLE_TYPE_INVALID          = 0xFFFF            /* 无效值  Invalid value */
}NETDEV_VEHICLE_TYPE_E;


/**
* @enum tagNETDEVVehicleSpeedUnit
* @brief 车辆速度单位 枚举定义 vehicle speed unit Enumeration definition
* @attention 无 None
*/
typedef enum tagNETDEVVehicleSpeedUnit
{
    NETDEV_VEHICLE_SPEED_UNIT_KPH_E = 0,                /* 公里/每小时 */
    NETDEV_VEHICLE_SPEED_UNIT_MPH_E = 1,                /* 英里/每小时 */

    NETDEV_VEHICLE_SPEED_UNIT_INVALID = 0xFF            /* 无效值  Invalid value */
}NETDEV_VEHICLE_SPEED_UNIT_E;


/**
 * @enum tagNETDEVAlarmType
 * @brief  告警类型 枚举定义 Alarm Type Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVAlarmTypeLAPI
{
/*               IPC&VMS                                           */
  NETDEV_MOTION_ALARM_ON                        = 0,    /* 运动检测告警 */
  NETDEV_MOTION_ALARM_OFF                       = 1,    /* 运动检测告警恢复 */
  NETDEV_MASK_IMAGE_ALARM_ON                    = 2,    /* 遮挡侦测告警 */
  NETDEV_MASK_IMAGE_ALARM_OFF                   = 3,    /* 遮挡侦测告警恢复 */
  NETDEV_ABNORMAL_AUDIO_ON                      = 4,    /* 音频异常检测告警 */
  NETDEV_ABNORMAL_AUDIO_OFF                     = 5,    /* 音频异常检测告警恢复 */
  NETDEV_LINE_DETECTOR_CROSSED                  = 6,    /* 越界告警 */
  NETDEV_FIELD_DETECTOR_OBJECTS_INSIDE          = 7,    /* 区域入侵 */
  NETDEV_OBJECT_IS_RECOGNIZED                   = 8,    /* 人脸识别 */
  NETDEV_GLOBAL_SCENE_CHANGE                    = 9,    /* 场景变更 */
  NETDEV_IMAGE_TOO_BLURRY_ON                    = 10,   /* 图像虚焦 */
  NETDEV_IMAGE_TOO_BLURRY_OFF                   = 11,   /* 图像虚焦告警恢复 */
  NETDEV_INPUT_ALARM_ON                         = 12,   /* 输入开关量告警 */
  NETDEV_INPUT_ALARM_OFF                        = 13,   /* 输入开关量告警恢复 */

  NETDEV_ENTER_AREA                             = 100,  /* 进入区域 */
  NETDEV_LEAVE_AREA                             = 101,  /* 离开区域 */
  NETDEV_LOITERING                              = 102,  /* 区域徘徊 */
  NETDEV_FENCE_CROSSING                         = 103,  /* 翻越围栏 */
  NETDEV_OBJECT_REMOVED                         = 104,  /* 物品看护 */
  NETDEV_OBJECT_LEFT_BEHIND                     = 105,  /* 物品遗留 */
  NETDEV_PEOPLE_GATHERING                       = 106,  /* 人员聚集 */
  NETDEV_PEOPLE_GATHERING_CLEARED               = 107,  /* 人员聚集恢复 */
  NETDEV_FAST_MOVING                            = 108,  /* 快速移动 */
  NETDEV_PARKING                                = 109,  /* 停车 */
  NETDEV_HEAT_MAP                               = 110,  /* 热度图 */
  NETDEV_AUTO_SMART_TRACK_ON                    = 111,  /* 智能跟踪告警 */
  NETDEV_AUTO_SMART_TRACK_OFF                   = 112,  /* 智能跟踪告警恢复 */

  NETDEV_DISK_OFFLINE                           = 201,  /* 磁盘下线告警 */
  NETDEV_DISK_ABNORMAL                          = 202,  /* 磁盘错误异常告警 */
  NETDEV_ILLEGAL_LOGIN                          = 203,  /* 非法访问 */
  NETDEV_NETWORK_DISCONNECTED                   = 204,  /* 网络断开异常告警 */
  NETDEV_NETWORK_DISCONNECTED_CLEARED           = 205,  /* 网络断开恢复告警 */
  NETDEV_IP_CONFLICT                            = 206,  /* IP冲突异常告警 */
  NETDEV_IP_CONFLICT_CLEARED                    = 207,  /* IP冲突异常告警恢复 */
  NETDEV_STORAGE_FAILURE                        = 208,  /* 存储错误告警 */
  NETDEV_RUNNING_OUT_OF_RECORDING_SPACE         = 209,  /* 存储即将满告警 */
  NETDEV_RECORDING_SAPCE_USED_UP                = 210,  /* 存储满告警 */
  NETDEV_DEVICE_ONLINE                          = 211,  /* 设备上线告警 */
  NETDEV_DEVICE_OFFLINE                         = 212,  /* 设备下线告警 */
  NETDEV_RAID_DISABLED                          = 213,  /* 阵列损坏告警 */
  NETDEV_DISK_ONLINE                            = 214,  /* 磁盘上线告警 */
  NETDEV_RAID_DEGRADED                          = 215,  /* 阵列衰退告警 */
  NETDEV_RAID_RECOVERED                         = 216,  /* 阵列恢复正常 */
  NETDEV_MANUAL_ALARM                           = 217,  /* 手动告警 */
  NETDEV_VIDEO_LOSS_ALARM_ON                    = 218,  /* 视频丢失告警 */
  NETDEV_VIDEO_LOSS_ALARM_OFF                   = 219,  /* 视频丢失告警恢复 */
  NETDEV_SCHEDULED_RECORDING_FAILURE            = 220,  /* 未按计划存储 */
  NETDEV_SCHEDULED_RECORDING_FAILURE_CLEARED    = 221,  /* 未按计划存储恢复 */
  NETDEV_IPC_ONLINE                             = 222,  /* 上线 */
  NETDEV_IPC_OFFLINE                            = 223,  /* 下线 */
  NETDEV_CHANNEL_DELETED                        = 224,  /* 删除*/
  NETDEV_CONTROL_PANEL_ALARM                    = 225,  /* 告警主机告警 */
  NETDEV_ACCESS_CONTROL_ALARM                   = 226,  /* 门禁主机告警 */

  /* Smart信息 */
  NETDEV_SMART_READ_ERROR_RATE                  = 227,  /* 底层数据读取错误率 */
  NETDEV_SMART_SPIN_UP_TIME                     = 228,  /*  主轴起旋时间  */
  NETDEV_SMART_START_STOP_COUNT                 = 229,  /* 启停计数 */
  NETDEV_SMART_REALLOCATED_SECTOR_COUNT         = 230,  /* 重映射扇区计数  */
  NETDEV_SMART_SEEK_ERROR_RATE                  = 231,  /* 寻道错误率 */
  NETDEV_SMART_POWER_ON_HOURS                   = 232,  /* 通电时间累计，出厂后通电的总时间，一般磁盘寿命三万小时 */
  NETDEV_SMART_SPIN_RETRY_COUNT                 = 233,  /* 主轴起旋重试次数 */
  NETDEV_SMART_CALIBRATION_RETRY_COUNT          = 234,  /* 磁头校准重试计数 */
  NETDEV_SMART_POWER_CYCLE_COUNT                = 235,  /* 通电周期计数 */
  NETDEV_SMART_POWEROFF_RETRACT_COUNT           = 236,  /* 断电返回计数 */
  NETDEV_SMART_LOAD_CYCLE_COUNT                 = 237,  /* 磁头加载计数 */
  NETDEV_SMART_TEMPERATURE_CELSIUS              = 238,  /* 温度 */
  NETDEV_SMART_REALLOCATED_EVENT_COUNT          = 239,  /* 重映射事件计数 */
  NETDEV_SMART_CURRENT_PENDING_SECTOR           = 240,  /* 当前待映射扇区计数 */
  NETDEV_SMART_OFFLINE_UNCORRECTABLE            = 241,  /* 脱机无法校正的扇区计数 */
  NETDEV_SMART_UDMA_CRC_ERROR_COUNT             = 242,  /* 奇偶校验错误率  */
  NETDEV_SMART_MULTI_ZONE_ERROR_RATE            = 243,  /* 多区域错误率 */

  NETDEV_SMART_FACE_NOT_MATCH_ALARM             = 244,  /* 人脸对比失败 */
  NETDEV_SMART_FACE_MATCH_ALARM                 = 245,  /* 人脸对比成功 */

  NETDEV_DEVICE_HIGHTEMP_ALARM                  = 246,  /* 异常类：设备高温 */
  NETDEV_DEVICE_LOWTEMP_ALARM                   = 247,  /* 异常类：设备低温 */
  NETDEV_FAN_FAULT_ALARM                        = 248,  /* 异常类：风扇故障 */
  NETDEV_LEDBOX_HIGHTEMP_ALARM                  = 249,  /* 异常类：电箱高温 */
  NETDEV_LEDBOX_SMOKE_ALARM                     = 250,  /* 异常类：电箱烟雾告警 */
  NETDEV_DEVICE_HIGHTEMP_RECOVER_ALARM          = 251,  /* 异常类:设备温度恢复 */
  NETDEV_DEVICE_LOWTEMP_RECOVER                 = 252,  /* 异常类:设备温度恢复 */
  NETDEV_FAN_FAULT_RECOVER                      = 253,  /* 异常类:风扇故障恢复 */
  NETDEV_LEDBOX_HIGHTEMP_RECOVER                = 254,  /* 异常类:电箱高温恢复 */
  NETDEV_LEDBOX_SMOKE_RECOVER                   = 255,  /* 异常类:电箱烟雾告警恢复 */

  NETDEV_UNKOWN_TYPE_ALARM                      =0xFFFF /* 未知告警类型 */

}NETDEV_ALARM_TYPE_LAPI_E;

/**
* @enum tagNETDEVVideoCodeMode
* @brief 视频编码模式 枚举定义  Video encoding Mode Enumeration definition
* @attention 无 None
*/
typedef enum tagNETDEVVideoCodeMode
{
    NETDEV_VIDEO_CODE_MODE_CBR = 0,             /* 恒定比特率 */
    NETDEV_VIDEO_CODE_MODE_VBR = 1              /* 可变比特率 */
}NETDEV_VIDEO_CODE_MODE_E;

/**
* @enum tagNETDEVRecordPlanEnable
* @brief NVR 录像计划使能 枚举定义   NVR Record Plan Enable Enumeration definition
* @attention 无 None
*/
typedef enum tagNETDEVRecordPlanEnable
{
    NETDEV_RECORD_Plan_DISABLE = 0,             /* 不使能 */
    NETDEV_RECORD_Plan_ENABLE = 1               /* 使能 */
}NETDEV_RECORD_Plan_ENABLE_E;

/**
* @enum tagNETDEVRedundantStorage
* @brief NVR 冗余存储计划使能 枚举定义   NVR Redundant Storage Plan Enable Enumeration definition
* @attention 无 None
*/
typedef enum tagNETDEVRedundantStorage
{
    NETDEV_REDUNDANT_STORAGE_DISABLE = 0,             /* 不使能 */
    NETDEV_REDUNDANT_STORAGE_ENABLE = 1               /* 使能 */
}NETDEV_REDUNDANT_STORAGE_ENABLE_E; 

/**
* @enum tagResolution
* @brief 解码分辨率
* @attention  需要与 player_sdk_func.h中的 PLAYER_DECODE_RESOLUTION_E 一一对应 
*/
typedef enum tagNETDEVMemResolution
{
    NETDEV_MEM_RESOLUTION_CIF       = 0,                        /* CIF */
    NETDEV_MEM_RESOLUTION_2CIF      = 1,                        /* 2CIF */
    NETDEV_MEM_RESOLUTION_D1        = 2,                        /* D1 */
    NETDEV_MEM_RESOLUTION_720P      = 3,                        /* 720P */
    NETDEV_MEM_RESOLUTION_1080P     = 4,                        /* 1080P */
    NETDEV_MEM_RESOLUTION_4M        = 5,                        /* 4M */
    NETDEV_MEM_RESOLUTION_8M        = 6,                        /* 8M */
    NETDEV_MEM_RESOLUTION_12M       = 7,                        /* 12M */
    NETDEV_MEM_RESOLUTION_MAX
}NETDEV_MEM_RESOLUTION_E;

/**
* @enum tagDecodePayload
* @brief 解码分辨率
* @attention 需要与 player_sdk_func.h中的 PLAYER_DECODE_PAYLOAD_E 一一对应 
*/
typedef enum tagNETDEVMemPayload
{
    NETDEV_MEM_PAYLOAD_H264         = 0,                           /* H264 */
    NETDEV_MEM_PAYLOAD_H265         = 1,                           /* H265 */
    NETDEV_MEM_PAYLOAD_INVALID      = 0xff
}NETDEV_MEM_PAYLOAD_E;


/**
 * @enum tagNETDEVPLanStoreType
 * @brief 录像存储类型 枚举定义 Recording storage type Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVPLanStoreType
{
    NETDEV_STORE_TYPE_COMMON                        = 0,                /* 常规存储 */  
    NETDEV_STORE_TYPE_DIGITIALINPUT                 = 1,                /* 开关量输入告警存储 */
    NETDEV_STORE_TYPE_MANUL                         = 2,                /* 手动存储 */
    NETDEV_STORE_TYPE_AUDIODETECT                   = 3,                /* 音频检测告警存储 */
    NETDEV_STORE_TYPE_MOTION                        = 4,                /* 运动检测告警存储 */
    NETDEV_STORE_TYPE_DIGITALINPUT                  = 5,                /* 数字输入事件存储  Digital input */
    NETDEV_STORE_TYPE_FACEDETECT                    = 6,                /* 人脸检测告警存储 */
    NETDEV_STORE_TYPE_VIDEO_LOSS                    = 7,                /* 视频丢失存储 */
    NETDEV_STORE_TYPE_LINEDETECT                    = 8,                /* 越界检测告警存储 */
    NETDEV_STORE_TYPE_FIELDDETECT                   = 9,                /* 区域入侵检测告警存储 */
    NETDEV_STORE_TYPE_FOCUSDETECT                   = 10,               /* 图像虚焦告警存储 */
    NETDEV_STORE_TYPE_SCENECHANGE                   = 11,               /* 场景变更告警存储 */
    NETDEV_STORE_TYPE_ALARM                         = 12,               /* 告警 */
    NETDEV_STORE_TYPE_ALARM_AND_MOTION              = 13,               /* 运动检测 和 告警 */
    NETDEV_STORE_TYPE_ALARM_OR_MOTION               = 14,               /* 运动检测 或 告警 */
    NETDEV_STORE_TYPE_CAMERA_DISCONNECT             = 15,               /* 监控点断线 */
    NETDEV_STORE_TYPE_THIRD_STREAM                  = 16,               /* 第三流存储 */
    NETDEV_STORE_TYPE_EVENT_ALL_ALARM               = 17,               /* 事件类型录像，包涵所有告警类型 */
    NETDEV_STORE_TYPE_EVENT_ALL_TYPE                = 18,               /* 事件类型录像，包涵所有录像类型 */
    NETDEV_PLAN_STORE_TYPE_EVENT_WITHOUT_RESUME     = 19,               /* 没有恢复的事件类型存储 */
    NETDEV_STORE_TYPE_SMART_TRACK                   = 20,               /* 智能跟踪 */
    NETDEV_STORE_TYPE_URGENT_BELL                   = 21,               /* 紧急铃 */
    NETDEV_STORE_TYPE_REMAIN_ARTICLE                = 22,               /* 物品遗留 */
    NETDEV_STORE_TYPE_MOVE_ARTICLE                  = 23,               /* 物品搬移 */
    NETDEV_STORE_TYPE_SMART_RECORD                  = 24,               /* 所有智能类告警 */
    NETDEV_PLAN_STORE_TYPE_MAX                      = 25,               /* 存储类型最大值 */
    NETDEV_STORE_TYPE_HUMAN_DETECT                  = 26,               /* 人形检测 */

    NETDEV_STORE_TYPE_INVALID                       = 0xFF              /* 无效值 */
}NETDEV_STORE_TYPE_E;

/**
* @struct tagSysType
* @brief 系统类型。
* @attention 需要与 player_sdk_func.h中的 PLAYER_DECODE_SYSTYPE_E 一一对应 
*/
typedef enum tagNETDEVMenSystem
{
    NETDEV_SYSTEM_WIN7      = 0,                    /* WIN7 */
    NETDEV_SYSTEM_WIN8      = 1,                    /* WIN8 */
    NETDEV_SYSTEM_WIN10     = 2                     /* WIN10 */
}NETDEV_MEM_SYSTEM_E;

/**
* @enum tagNETDEVEventStoreType
* @brief 录像事件存储类型 枚举定义
* @attention 增加枚举时注意更新全局变量gaRecordType
*/
typedef enum tagNETDEVEventStoreType
{
    NETDEV_EVENT_STORE_FIND_TYPE_NORMAL             = 1,      /* 常规存储 */
    NETDEV_EVENT_STORE_FIND_TYPE_MOTIONDETEC        = 2,      /* 运动检测告警存储 */
    NETDEV_EVENT_STORE_FIND_TYPE_DIGITIALINPUT      = 3,      /* 开关量输入告警存储 */
    NETDEV_EVENT_STORE_FIND_TYPE_MANUAL             = 4,      /* 手动存储 */
    NETDEV_EVENT_STORE_FIND_TYPE_SIGNALLOSS         = 5,      /* 视频丢失存储 */
    NETDEV_EVENT_STORE_FIND_TYPE_AUDIODETECT        = 6,      /* 音频检测告警存储 */
    NETDEV_EVENT_STORE_FIND_TYPE_FACEDETECT         = 7,      /* 人脸检测告警存储 */
    NETDEV_EVENT_STORE_FIND_TYPE_LINEDETECT         = 8,      /* 越界检测告警存储 */
    NETDEV_EVENT_STORE_FIND_TYPE_FIELDDETECT        = 9,      /* 区域入侵检测告警存储 */
    NETDEV_EVENT_STORE_FIND_TYPE_FOCUSDETECT        = 10,     /* 图像虚焦告警存储 */
    NETDEV_EVENT_STORE_FIND_TYPE_SCENECHANGE        = 11,     /* 场景变更告警存储 */
    NETDEV_EVENT_STORE_FIND_TYPE_SMARTTRACK         = 12,     /* 智能跟踪告警存储 */
    NETDEV_EVENT_STORE_FIND_TYPE_REMAIN_ARTICLE     = 13,     /* 物品遗留告警存储 */
    NETDEV_EVENT_STORE_FIND_TYPE_ARTICLE_MOVE       = 14,     /* 物品搬移告警存储 */

    NETDEV_EVENT_STORE_FIND_TYPE_BUTT
}NETDEV_EVENT_STORE_TYPE_E;

/**
* @enum tagNETDEVSmartStoreType
* @brief 录像事件存储类型 枚举定义
* @attention 枚举值不能够和NETDEV_EVENT_STORE_TYPE_E中的枚举重复
*/
typedef enum tagNETDEVSmartStoreType
{
    NETDEV_SMART_STORE_FIND_TYPE_MOTIONSMART      = 100,   /* 运动检测智能数据存储 */
    NETDEV_SMART_STORE_FIND_TYPE_BUTT
}NETDEV_SMART_STORE_TYPE_E;


/**
* @enum tagNETDEVEventFindLogic
* @brief 录像事件告警查询类型与或 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVEventFindLogic
{
    NETDEV_EVENT_FIND_LOGIC_AND = 0,     /* 逻辑与 */
    NETDEV_EVENT_FIND_LOGIC_OR  = 1,     /* 逻辑或 */
    NETDEV_EVENT_FIND_LOGIC_BUTT
}NETDEV_EVENT_FIND_LOGIC_E;



/**
* @enum tagNETDEVTransportModeType
* @brief 传输模式 枚举定义
* @attention 无
*/
typedef enum tagNETDEVTransportModeType
{
    NETDEV_TRANSPROTOCAL_RTP_UNICAST    = 0,
    NETDEV_TRANSPROTOCAL_RTP_MULTICAST  = 1,
    NETDEV_TRANSPROTOCAL_RTP_STORE      = 2

}NETDEV_TRANSPORTMODE_E;

/**
* @enum tagNETDEVAudioFlag
* @brief 音频数据类型 枚举定义 Audio data type Enumeration definition
* @attention 无 None
*/
typedef enum tagNETDEVAudioFlag
{
    NETDEV_AUDIO_LOCAL_GATHERED = 0,               /* 本地采集的数据  Locally collected data*/
    NETDEV_AUDIO_DEVICE_SEND    = 1                /* 设备发送过来的语音数据  Audio data sent from device */
} NETDEV_AUDIO_FLAG_E;

/**
* @enum tagNETDEVEventTypeMajor
* @brief 事件主类型 枚举定义 Major types of event Enumeration definition
* @attention 无 None
*/
typedef enum tagNETDEVEventTypeMajor
{
    NETDEV_EVENT_TYPE_MAJOR_ALARM      = 0,          /* 告警 事件类型 CORE其他模块向CORE告警模块订阅 */
    NETDEV_EVENT_TYPE_MAJOR_SYS        = 1,          /* 系统相关事件类型 */
    NETDEV_EVENT_TYPE_MAJOR_PERI_WARN  = 2,          /* 驱动外设事件 CORE告警模块单独向驱动订阅 */
    NETDEV_EVENT_TYPE_MAJOR_MEDIA      = 3,          /* 媒体处理相关事件 */
    NETDEV_EVENT_TYPE_MAJOR_BUTT
}NETDEV_EVENT_TYPE_MAJOR_E;

/**
* @enum tagNETDEVDecPaneNum
* @brief DC支持分屏数 
* @attention DC&&XW公用枚举 None
*/
typedef enum tagNETDEVDecPaneNum
{
    NETDEV_DEC_PANE_ONE             = 1,                /* 1分屏 */
    NETDEV_DEC_PANE_TWO             = 2,                /* 2分屏 */
    NETDEV_DEC_PANE_THREE           = 3,                /* 3分屏 */
    NETDEV_DEC_PANE_FOUR            = 4,                /* 4分屏 */
    NETDEV_DEC_PANE_FIVE            = 5,                /* 5分屏 */
    NETDEV_DEC_PANE_SIX             = 6,                /* 6分屏 */
    NETDEV_DEC_PANE_SEVEN           = 7,                /* 7分屏 */
    NETDEV_DEC_PANE_EIGHT           = 8,                /* 8分屏 */
    NETDEV_DEC_PANE_NINE            = 9,                /* 9分屏 */
    NETDEV_DEC_PANE_SIXTEEN         = 16,               /* 16分屏 */
    NETDEV_DEC_PANE_TWENTYFIVE      = 25,               /* 25分屏 */
    NETDEV_DEC_PANE_THIRTYSIX       = 36,               /* 36分屏 */
    NETDEV_DEC_PANE_SIXTYFOUR       = 64,               /* 64分屏 */

    NETDEV_DEC_PANE_INVALID         = 0xffff
}NETDEV_PANE_NUM_E;


/**
 * @enum tagNETDEVOSDTextType
 * @brief 
 * @attention 无 None
 */
typedef enum tagNETDEVOSDTextType
{
    NETDEV_OSD_TEXT_DATAANDTIME = 0,            /* 日期.时间, 如yyyy-MM-dd.HH:mm:ss, 日期格式参见#NETDEV_OSD_DATE_FORMAT_CAP_E, 时间格式参见#NETDEV_OSD_TIME_FORMAT_CAP_E */
    NETDEV_OSD_TEXT_PLAIN
}NETDEV_OSD_TEXT_TYPE_E;


/**
 * @enum tagNETDEVAlarmPortType
 * @brief 告警监听端口类型
 * @attention 无 None
 */
typedef enum tagNETDEVAlarmPortType
{
    NETDEV_ALARM_PORT_TYPE_LOCAL = 0,            /* 本地监听端口 */
    NETDEV_ALARM_PORT_TYPE_NAT = 1               /* 端口映射后的事件端口 */
}NETDEV_ALARM_PORT_TYPE_E;



/**
* @enum tagNETDEVFaceAnalysisSkill
* @brief 人脸质量优先类型 枚举定义
* @attention 无
*/
typedef enum tagNETDEVFaceAnalysisSkill
{
    NETDEV_FACE_ANALYSIS_SKILL_AGE                 = 0,            /* 年龄 */
    NETDEV_FACE_ANALYSIS_SKILL_GENGER              = 1,            /* 性别 */
    NETDEV_FACE_ANALYSIS_SKILL_RACE                = 2,            /* 种族 */
    NETDEV_FACE_ANALYSIS_SKILL_GLASSES             = 3,            /* 眼镜 */
    NETDEV_FACE_ANALYSIS_SKILL_MASK                = 4,            /* 口罩 */
    NETDEV_FACE_ANALYSIS_SKILL_MUSTACHE            = 5,            /* 胡子 */
    NETDEV_FACE_ANALYSIS_SKILL_HAT                 = 6,            /* 帽子 */
    NETDEV_FACE_ANALYSIS_SKILL_HAIRSTYLE           = 7,            /* 发型 */
    NETDEV_FACE_ANALYSIS_SKILL_EXPRESSION          = 8,            /* 表情 */
    NETDEV_FACE_ANALYSIS_SKILL_FACE                = 9             /* 颜值 */
}NETDEV_FACE_ANALYSIS_SKILL_E;

/**
* @enum tagNETDEVFaceRecognitionType
* @brief 人脸识别类型 枚举定义
* @attention 无
*/
typedef enum tagNETDEVFaceRecognitionType
{
    NETDEV_FACE_RECOGNITION_TYPE_FRONT              = 0,            /* 前端人脸识别 */
    NETDEV_FACE_RECOGNITION_TYPE_CENTER             = 1            /* 中心人脸识别 */

}NETDEV_FACE_RECOGNITION_TYPE_E;



/**
* @enum tagNETDEVObjTracktModeType
* @brief 跟踪模式 枚举定义
* @attention 无
*/
typedef enum tagNETDEVObjTracktModeType
{
    NETDEV_OBJ_TRACK_MODE_FULLVIEW  = 1,                /* 全景模式 */
    NETDEV_OBJ_TRACK_MODE_CRUISE    = 2                /* 巡航跟踪 */
}NETDEV_OBJ_TRACK_MODE_E;


/* 升级状态 */
typedef enum tagNETDEVDeviceUpgradeStatus
{
    NETDEV_UPGRADE_STATUS_INITING        = 0,       /* 初始化中 */
    NETDEV_UPGRADE_STATUS_QUERYING       = 1,       /* 查询中 */
    NETDEV_UPGRADE_STATUS_DOWNLOADING    = 2,       /* 下载中 */
    NETDEV_UPGRADE_STATUS_TRANSMITTING   = 3,       /* 传输中 */
    NETDEV_UPGRADE_STATUS_UPGRATING      = 4,       /* 升级中 */
    NETDEV_UPGRADE_STATUS_UPGRATEERROR   = 5,       /* 升级出错 */
    NETDEV_UPGRADE_STATUS_NEWEST         = 6,       /* 已是最新版本 */
    NETDEV_UPGRADE_STATUS_HAVEHIGHTER    = 7,       /* 有更高版本 */
    NETDEV_UPGRADE_STATUS_UPGRADEOVER    = 8,       /* 升级完成 */
    NETDEV_UPGRADE_STATUS_GETSTATUSFAIL  = 9,       /* 获取升级进度失败 */
    NETDEV_UPGRADE_STATUS_NOTMATCH       = 10,      /* 版本不匹配 */
    NETDEV_UPGRADE_STATUS_NOTMUTIPROCESS = 11,      /* 不能同时加载多个升级进程 */
    NETDEV_UPGRADE_STATUS_UPGRADETIMEOUT = 12,      /* 获取升级进度超时*/
    NETDEV_UPGRADE_STATUS_BUTT
}NETDEV_UPGRADE_STATUS_E;

/* 升级状态 */
typedef enum tagNETDEVUpgradeType
{
    NETDEV_UPGRADE_TYPE_CLOUD    = 1,               /* 云升级 */
    NETDEV_UPGRADE_TYPE_UDISK    = 2,               /* U盘升级 */
    NETDEV_UPGRADE_TYPE_LOCAL    = 3,               /* 本地升级 */
    NETDEV_UPGRADE_TYPE_BUTT
}NETDEV_UPGRADE_TYPE_E;



/* 音频编码格式类型枚举 */
typedef enum tagNETDEVAudioEncodeFormatType
{
    NETDEV_AUDIO_ENCODE_FORMAT_TYPE_MPEG1           = 0,       /* MPEG1 */
    NETDEV_AUDIO_ENCODE_FORMAT_TYPE_G711A           = 1,       /* G.711A */
    NETDEV_AUDIO_ENCODE_FORMAT_TYPE_G711U           = 2,       /* G.711U */
    NETDEV_AUDIO_ENCODE_FORMAT_TYPE_ADPCM           = 3,       /* ADPCM */
    NETDEV_AUDIO_ENCODE_FORMAT_TYPE_OGG             = 4,       /* OGG */
    NETDEV_AUDIO_ENCODE_FORMAT_TYPE_Auto            = 5,       /* Auto */
    NETDEV_AUDIO_ENCODE_FORMAT_TYPE_AACLC           = 6,       /* AAC-LC */
    NETDEV_AUDIO_ENCODE_FORMAT_TYPE_INVALID         = 0xFF     /* 无效值 */
}NETDEV_AUDIO_ENCODE_FORMAT_TYPE_E;

/* 音频采样率枚举 */
typedef enum tagNETDEVAudioSamplingRate
{
    NETDEV_AUDIO_SAMPLING_RATE_8KHZ             = 0,       /* 8KHz */
    NETDEV_AUDIO_SAMPLING_RATE_16KHZ            = 1,       /* 16KHZ */
    NETDEV_AUDIO_SAMPLING_RATE_22_05KHZ         = 2,       /* 22.05KHZ */
    NETDEV_AUDIO_SAMPLING_RATE_24KHZ            = 3,       /* 24KHZ */
    NETDEV_AUDIO_SAMPLING_RATE_32KHZ            = 4,       /* 32KHZ */
    NETDEV_AUDIO_SAMPLING_RATE_44_1KHZ          = 5,       /* 44.1KHZ */
    NETDEV_AUDIO_SAMPLING_RATE_48KHZ            = 6,       /* 48KHZ */
    NETDEV_AUDIO_SAMPLING_RATE_96KHZ            = 7,       /* 96KHZ */
    NETDEV_AUDIO_SAMPLING_RATE_INVALID          = 0xFF     /* 无效值 */
}NETDEV_AUDIO_SAMPLING_RATE_E;

/* 音频输入模式枚举 */
typedef enum tagNETDEVAudioInChlMode
{
    NETDEV_AUDIO_CHL_MODE_LINE              = 0,        /* LINE */
    NETDEV_AUDIO_CHL_MODE_MIC               = 1,        /*  MIC */
    NETDEV_AUDIO_CHL_MODE_RS485             = 2,        /* RS485数字拾音器 */
    NETDEV_AUDIO_CHL_MODE_INVALID           = 0xFF      /* 无效值 */
}NETDEV_AUDIO_CHL_MODE_E;

/* 音频采集口枚举 */
typedef enum tagNETDEVAudioCollectionPortType
{
    NETDEV_AUDIO_COLLECTION_PORT_TYPE_AUDIO_IN              = 0,        /* 音频输入口 */
    NETDEV_AUDIO_COLLECTION_PORT_TYPE_SERIAL_IN             = 1,        /* 串口 */
    NETDEV_AUDIO_COLLECTION_PORT_TYPE_INVALID               = 0xFF      /* 无效值 */
}NETDEV_AUDIO_COLLECTION_PORT_TYPE_E;


/**
 * @enum tagNETDEVWeekPlanEvent
 * @brief 周计划事件枚举
 * @attention 无 None
 */
typedef enum tagNETDEVWeekPlanEvent
{
    NETDEV_WEEK_PLAN_EVENT_MOTION_DETECT    = 1,               /* 运动检测 */
    NETDEV_WEEK_PLAN_EVENT_AUDIO_DETECT     = 2,               /* 声音检测 */
    NETDEV_WEEK_PLAN_EVENT_TAMPER_DETECT    = 3,               /* 遮挡检测 */
    NETDEV_WEEK_PLAN_EVENT_INPUT_SWITCH     = 4,               /* 开关量输入 */
    NETDEV_WEEK_PLAN_EVENT_OUTPUT_SWITCH    = 5,               /* 开关量输出 */
    NETDEV_WEEK_PLAN_EVENT_CROSS_LINE       = 6,               /* 越界检测 */
    NETDEV_WEEK_PLAN_EVENT_INTROSION_ZONE   = 7,               /* 区域入侵 */
    NETDEV_WEEK_PLAN_EVENT_ACCESS_ZONE      = 8,               /* 进入区域 */
    NETDEV_WEEK_PLAN_EVENT_LEAVE_ZONE       = 9,               /* 离开区域 */
    NETDEV_WEEK_PLAN_EVENT_HOVER_ZONE       = 10,              /* 徘徊检测 */
    NETDEV_WEEK_PLAN_EVENT_CARE_ARTICLE     = 11,              /* 物品搬移 */
    NETDEV_WEEK_PLAN_EVENT_REMAIN_ARTICLE   = 12,              /* 物品遗留 */
    NETDEV_WEEK_PLAN_EVENT_GATHER           = 13,              /* 人员聚集 */
    NETDEV_WEEK_PLAN_EVENT_FASTMOVE         = 14,              /* 快速移动 */
    NETDEV_WEEK_PLAN_EVENT_CAR_STOP         = 15,              /* 停车检测 */
    NETDEV_WEEK_PLAN_EVENT_OUT_FOCUS        = 16,              /* 虚焦检测 */
    NETDEV_WEEK_PLAN_EVENT_SCENCECHANGE     = 17,              /* 场景变更 */
    NETDEV_WEEK_PLAN_EVENT_FACE_DETECT      = 18,              /* 人脸检测 */
    NETDEV_WEEK_PLAN_EVENT_ROAD_DETECT      = 19,              /* 道路监控 */
    NETDEV_WEEK_PLAN_EVENT_PEOPLE_COUNT     = 20,              /* 客流量 */
    NETDEV_WEEK_PLAN_EVENT_HEATMAP          = 21,              /* 热度图 */
    NETDEV_WEEK_PLAN_EVENT_SD_STORAGE       = 22               /* SD卡存储 */
}NETDEV_WEEK_PLAN_EVENT_E;


/**
* @enum tagNetDEVFishEyePtzMode
* @brief 鱼眼设备矫正模式枚举变量
* @attention 无
*/
typedef enum tagNetDEVFishEyePtzMode
{
    NETDEV_FISHEYE_MODE_ORIGINAL            = 0,                /* 原始图像 */
    NETDEV_FISHEYE_MODE_180                 = 1,                /* 2*180度模式 */
    NETDEV_FISHEYE_MODE_360_1PTZ            = 2,                /* 360度+1PTZ模式 */
    NETDEV_FISHEYE_MODE_360_6PTZ            = 3,                /* 360度+6PTZ模式 */
    NETDEV_FISHEYE_MODE_3PTZ                = 4,                /* 鱼眼+3PTZ模式 */
    NETDEV_FISHEYE_MODE_MID_ON_4PTZ         = 5,                /* 鱼眼图像在中间且显示+4PTZ模式 */
    NETDEV_FISHEYE_MODE_MID_OFF_4PTZ        = 6,                /* 鱼眼图像在中间但不显示+4PTZ模式 */
    NETDEV_FISHEYE_MODE_LEFT_4PTZ           = 7,                /* 鱼眼左边+4PTZ模式 */
    NETDEV_FISHEYE_MODE_8PTZ                = 8,                /* 鱼眼+8PTZ模式 */
    NETDEV_FISHEYE_MODE_PANORAMA            = 9,                /* 全景模式 */
    NETDEV_FISHEYE_MODE_PR_3PTZ             = 10,               /* 全景+3PTZ模式 */
    NETDEV_FISHEYE_MODE_PR_4PTZ             = 11,               /* 全景+4PTZ模式 */
    NETDEV_FISHEYE_MODE_PR_8PTZ             = 12,               /* 全景+8PTZ模式 */

    NETDEV_FISHEYE_MODE_INVALID             = 0xFF             /* 非法值 */
}NETDEV_FISHEYE_PTZ_MODE_E;

/**
* @enum tagNETDEVfInstallMode
* @brief 设备安装模式
* @attention 无
*/
typedef enum tagNETDEVfInstallMode
{
    NETDEV_INSTALL_MODE_TOP             = 0,            /* 顶部安装 */
    NETDEV_INSTALL_MODE_BOTTOM          = 1,            /* 底部安装 */
    NETDEV_INSTALL_MODE_SIDE            = 2,            /* 侧面安装 */

    NETDEV_INSTALL_MODE_INVALID         = 0xFF          /* 非法值 */
}NETDEV_INSTALL_MODE_E;

/**
* @enum tagNETDEVfMouseMoveMode
* @brief 鼠标移动模式
* @attention 无
*/
typedef enum tagNETDEVfMouseMoveMode
{
    NETDEV_MOUSE_MOVE                   = 0,            /* 鼠标位移 */
    NETDEV_MOUSE_LEFT_BTN_DOWN          = 1,            /* 左键按下 */
    NETDEV_MOUSE_LEFT_BTN_UP            = 2,            /* 左键弹起 */
    NETDEV_MOUSE_WHEEL                  = 3,            /* 滚轮操作 */

    NETDEV_MOUSE_INVALID                = 0xFF          /* 非法值 */
}NETDEV_MOUSE_MOVE_MODE_E;

/**
 * @enum tagNETDEVFindAlarmTypeEn
 * @brief 告警配置操作 枚举定义  Alarm configuration operation Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVFindAlarmTypeEn
{
    NETDEV_FIND_ALARM_DISK_STORAGE_IS_FULL               = 1,            /* 存储满 */
    NETDEV_FIND_ALARM_DISK_STORAGE_WILL_FULL             = 2,            /* 存储即将满 */
    NETDEV_FIND_ALARM_STOR_ERR                           = 3,            /* 存储错误 */
    NETDEV_FIND_ALARM_STOR_ERR_RECOVER                   = 4,            /* 存储错误恢复 */
    NETDEV_FIND_ALARM_MOVE_DETECT                        = 5,            /* 运动检测告警 */
    NETDEV_FIND_ALARM_MOVE_DETECT_RECOVER                = 6,            /* 运动检测告警恢复 */
    NETDEV_FIND_ALARM_VIDEO_TAMPER_DETECT                = 7,            /* 遮挡侦测告警 */
    NETDEV_FIND_ALARM_VIDEO_TAMPER_RECOVER               = 8,            /* 遮挡侦测告警恢复 */
    NETDEV_FIND_ALARM_INPUT_SWITCH                       = 9,            /* 输入开关量告警 */
    NETDEV_FIND_ALARM_INPUT_SWITCH_RECOVER               = 10,           /* 输入开关量告警恢复*/
    NETDEV_FIND_ALARM_BAND_CHANGE                        = 11,           /* 设备出口带宽变更 */
    NETDEV_FIND_ALARM_IMAGE_BLURRY                       = 12,           /* 图像虚焦 */
    NETDEV_FIND_ALARM_IMAGE_BLURRY_RECOVER               = 13,           /* 阵列损坏 */
    NETDEV_FIND_ALARM_SCENE_CHANGE                       = 14,           /* 阵列衰退 */
    NETDEV_FIND_ALARM_ILLEGAL_ACCESS                     = 15,           /* 阵列恢复正常 */
    NETDEV_FIND_ALARM_REPORT_DEV_ONLINE                  = 16,           /* 设备上线 */
    NETDEV_FIND_ALARM_REPORT_DEV_OFFLINE                 = 17,           /* 设备下线 */
    NETDEV_FIND_ALARM_REPORT_DEV_VIDEO_LOSS              = 18,           /* 视频丢失 */
    NETDEV_FIND_ALARM_REPORT_DEV_VIDEO_LOSS_RECOVER      = 19,           /* 视频丢失恢复 */
    NETDEV_FIND_ALARM_COUNT_PEOPLE                       = 20,           /* 人数统计 */
    NETDEV_FIND_ALARM_HEAT_MAP                           = 21,           /* 热度图 */
    NETDEV_FIND_ALARM_LINE_DETECTOR                      = 22,           /* 伴线告警 */
    NETDEV_FIND_ALARM_CELL_MOTION                        = 23,           /* 智能运动检测 */
    NETDEV_FIND_ALARM_LINE_CROSS                         = 24,           /* 越界告警 */
    NETDEV_FIND_ALARM_OBJECTS_INSIDE                     = 25,           /* 区域入侵 */
    NETDEV_FIND_ALARM_ACCESSZONE                         = 26,           /* 进入区域告警 */
    NETDEV_FIND_ALARM_LEAVE_ZONE                         = 27,           /* 离开区域告警 */
    NETDEV_FIND_ALARM_HOVER_ZONE                         = 28,           /* 区域徘徊告警 */
    NETDEV_FIND_ALARM_OVER_ZONE                          = 29,           /* 翻越围栏告警 */
    NETDEV_FIND_ALARM_CARE_ARTICLE                       = 30,           /* 物品看护告警 */
    NETDEV_FIND_ALARM_REMAIN_ARTICLE                     = 31,           /* 物品遗留告警 */
    NETDEV_FIND_ALARM_FACE_DETECTOR                      = 32,           /* 人脸检测 */
    NETDEV_FIND_ALARM_GATHER                             = 33,           /* 人员聚集告警 */
    NETDEV_FIND_ALARM_GATHER_RECOVER                     = 34,           /* 人员聚集告警恢复 */
    NETDEV_FIND_ALARM_FAST_MOVE                          = 35,           /* 快速移动 */
    NETDEV_FIND_ALARM_ILLEGAL_PARKED                     = 36,           /* 违法停车告警 */
    NETDEV_FIND_ALARM_HUMAN_SHAPE_ON                     = 37,           /* 人形检测告警 */
    NETDEV_FIND_ALARM_HUMAN_SHAPE_OFF                    = 38,           /* 人形检测告警恢复 */

    NETDEV_FIND_ALARM_INVALID                            = 0xFFFF        /* 无效值  Invalid value */
}NETDEV_FIND_ALARM_TYPE_E;


/**
* @enum tagNETDEVWndNameDisplay
* @brief 窗口名称显示属性 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVWndNameDisplay
{
    NETDEV_WND_NAME_HIDE    = 0,        /* 窗口名称隐藏 */
    NETDEV_WND_NAME_SHOW    = 1     /* 窗口名称显示 */
} NETDEV_WND_NAME_DISPLAY_E;

/**
* @enum tagNETDEVOperatedMode
* @brief 操作模式 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVOperatedMode
{
    NETDEV_SPLIT_SCREEN_RECOVER    = 0,               /* 恢复到分屏显示 */
    NETDEV_SPLIT_SCREEN_ZOOM       = 1                /* 某个分屏放大到全窗口大小 */
} NETDEV_OPERATED_MODE_E;

 /**
 * @enum tagNETDEVNATType
 * @brief NAT类型枚举 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVNATType
{
    NETDEV_STUN_TYPE_UNKNOWN                 = 0,       /* 未识别 */
    NETDEV_STUN_TYPE_FAILURE                 = 1,       /* 失败 */
    NETDEV_STUN_TYPE_OPEN                    = 2,       /* 没有NAT，公共IP，没有防火墙 */
    NETDEV_STUN_TYPE_BLOCKED                 = 3,       /* UDP受阻 */
    NETDEV_STUN_TYPE_CONE_NAT                = 4,       /* 完全NAT */
    NETDEV_STUN_TYPE_RESTRICTED_NAT          = 5,       /* 受限NAT */
    NETDEV_STUN_TYPE_PORT_RESTRICTED_NAT     = 6,       /* 端口受限NAT */
    NETDEV_STUN_TYPE_SYM_NAT                 = 7,       /* 对称NAT */
    NETDEV_STUN_TYPE_SYM_FIREWALL            = 8        /* 没有NAT，公共IP，但是对称的UDP防火墙 */
}NETDEV_NAT_TYPE_E;


/**
* @enum tagNetDevFaceIDLengthType
* @brief 人脸识别特征ID的数据结构长度
* @attention 无
*/
typedef enum tagNetDevFaceIDLengthType
{
    NETDEV_FACE_IDLENGTH_TYPE_0      = 0,            /*  0 */
    NETDEV_FACE_IDLENGTH_TYPE_2      = 2,            /*  2 */
    NETDEV_FACE_IDLENGTH_TYPE_4      = 4,            /*  4 */
    NETDEV_FACE_IDLENGTH_TYPE_8      = 8             /*  8 */

}NETDEV_FACE_IDLENGTH_TYPE_E;

/**
 * @enum tagNETDEVFaceDBType
 * @brief 人脸库类型
 * @attention 无 None
 */
typedef enum tagNETDEVFaceDBType
{
    NETDEV_FACE_DB_TYPE_BLACK       = 0,        /* 黑名单 */
    NETDEV_FACE_DB_TYPE_WHITE       = 1,        /* 白名单 */
    NETDEV_FACE_DB_TYPE_GRAY        = 2,        /* 灰名单 */

    NETDEV_FACER_DB_TYPE_INVALID    = 0xFF      /* 无效值 */
}NETDEV_FACE_DB_TYPE_E;


/**
* @enum tagNETDEVImageRotationMode
* @brief 图像镜像模式 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVImageRotationMode
{
    NETDEV_IMAGE_ROTATION_MODE_NORMAL       = 0,            /* 正常 */
    NETDEV_IMAGE_ROTATION_MODE_V_FLIPPING   = 1,            /* 垂直翻转 */
    NETDEV_IMAGE_ROTATION_MODE_H_FLIPPING   = 2,            /* 水平翻转 */
    NETDEV_IMAGE_ROTATION_MODE_HV           = 3,            /* 水平+垂直 (顺时针180度) */
    NETDEV_IMAGE_ROTATION_MODE_SPIN90_RIGHT = 4,            /* 右旋90度(顺时针90度) */
    NETDEV_IMAGE_ROTATION_MODE_SPIN90_LEFT  = 5,            /* 左旋90度(顺时针270度) */

    NETDEV_IMAGE_ROTATION_MODE_INVALID      = 0xFF          /* 无效值 */
}NETDEV_IMAGE_ROTATION_MODE_E;

/**
* @enum tagNETDEVExposureMode
* @brief 曝光模式 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVExposureMode
{
    NETDEV_EXPOSURE_MODE_AUTOMATIC          = 0,               /* 自动曝光 */
    NETDEV_EXPOSURE_MODE_CUSTOM             = 1,               /* 自定义曝光 */
    NETDEV_EXPOSURE_MODE_SHUTTER_PRIORITY   = 2,               /* 快门优先 */
    NETDEV_EXPOSURE_MODE_APERTURE_PRIORITY  = 3,               /* 光圈优先 */
    NETDEV_EXPOSURE_MODE_GAIN_PRIORITY      = 4,               /* 增益优先 */
    NETDEV_EXPOSURE_MODE_INDOOR_50_HZ       = 5,               /* 室内50Hz */
    NETDEV_EXPOSURE_MODE_INDOOR_60_HZ       = 6,               /* 室内60Hz */
    NETDEV_EXPOSURE_MODE_MANUAL_OPERATION   = 7,               /* 手动曝光 */
    NETDEV_EXPOSURE_MODE_LOWER_GHOSTING     = 8,               /* 低拖影 */

    NETDEV_EXPOSURE_MODE_INVALID            = 0xFF              /* 无效值 */
}NETDEV_EXPOSURE_MODE_E;

/**
* @enum tagNETDEVLampType
* @brief 补光灯类型 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVLampType
{
    NETDEV_LAMP_TYPE_WITHOUT            = 0,        /* 无补光灯*/
    NETDEV_LAMP_TYPE_WHITE              = 1,        /* 白光灯 */
    NETDEV_LAMP_TYPE_INFRARED           = 2,        /* 红外灯 */
    NETDEV_LAMP_TYPE_LASER_DEVICE       = 3,        /* 激光器*/
    NETDEV_LAMP_TYPE_INFRARED_SHIELD    = 4,        /* 红外护罩灯*/

    NETDEV_LAMP_TYPE_INVALID            = 0xFF      /* 无效值 */
}NETDEV_LAMP_TYPE_E;

/**
* @enum tagNETDEVLampCtrlMode
* @brief 补光灯支持的控制模式 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVLampCtrlMode
{
    NETDEV_LCM_GLOBAL_ATTENTION_AC      = 0,        /* 全局兼顾自动控制*/
    NETDEV_LCM_OVEREXPOSE_INHIBIT_AC    = 1,        /* 过曝抑制自动控制 */
    NETDEV_LCM_PRESET_RCM               = 2,        /* 预置控制-道路模式 */
    NETDEV_LCM_MANUAL_CM                = 3,        /* 手动控制模式*/
    NETDEV_LCM_PRESET_PCM               = 4,        /* 预置控制-园区模式*/
    NETDEV_LCM_PHOTOSENS_AM             = 5,        /* 光敏自动模式*/
    NETDEV_LCM_INDOOR_AM                = 6,        /* 室内自动模式*/
    NETDEV_LCM_MANUAL_FOM               = 7,        /* 手动-强制开启模式*/
    NETDEV_LCM_NIGHT_VIDEO_DET_MODE     = 8,        /* 夜间视频检测模式*/

    NETDEV_LCM_INVALID                  = 0xFF      /* 无效值 */
}NETDEV_LAMP_CTRL_MODE_E;


/**
* @enum tagNETDEVShutterTimeRange
* @brief 快门时间支持的取值 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVShutterTimeRange
{
    NETDEV_SHUTTER_TIME_AUTOMATIC   = 0,            /* 快门时间为自动*/
    NETDEV_SHUTTER_TIME_1           = 1,            /* 1/1 */
    NETDEV_SHUTTER_TIME_1_2         = 2,            /* 1/2 */
    NETDEV_SHUTTER_TIME_1_3         = 3,            /* 1/3 */
    NETDEV_SHUTTER_TIME_1_4         = 4,            /* 1/4 */
    NETDEV_SHUTTER_TIME_1_6         = 6,            /* 1/6 */
    NETDEV_SHUTTER_TIME_1_8         = 8,            /* 1/8 */
    NETDEV_SHUTTER_TIME_1_10        = 10,           /* 1/10*/
    NETDEV_SHUTTER_TIME_1_12        = 12,           /* 1/12*/
    NETDEV_SHUTTER_TIME_1_15        = 15,           /* 1/15*/
    NETDEV_SHUTTER_TIME_1_20        = 20,           /* 1/20*/
    NETDEV_SHUTTER_TIME_1_25        = 25,           /* 1/25*/
    NETDEV_SHUTTER_TIME_1_30        = 30,           /* 1/30*/
    NETDEV_SHUTTER_TIME_1_50        = 50,           /* 1/50*/
    NETDEV_SHUTTER_TIME_1_60        = 60,           /* 1/60*/
    NETDEV_SHUTTER_TIME_1_100       = 100,          /* 1/100*/
    NETDEV_SHUTTER_TIME_1_120       = 120,          /* 1/120*/
    NETDEV_SHUTTER_TIME_1_150       = 150,          /* 1/150*/
    NETDEV_SHUTTER_TIME_1_180       = 180,          /* 1/180*/
    NETDEV_SHUTTER_TIME_1_200       = 200,          /* 1/200*/
    NETDEV_SHUTTER_TIME_1_250       = 250,          /* 1/250*/
    NETDEV_SHUTTER_TIME_1_500       = 500,          /* 1/500*/
    NETDEV_SHUTTER_TIME_1_1000      = 1000,         /* 1/1000*/
    NETDEV_SHUTTER_TIME_1_2000      = 2000,         /* 1/2000*/
    NETDEV_SHUTTER_TIME_1_4000      = 4000,         /* 1/4000*/
    NETDEV_SHUTTER_TIME_1_8000      = 8000,         /* 1/8000*/
    NETDEV_SHUTTER_TIME_1_50000     = 50000,        /* 1/50000*/
    NETDEV_SHUTTER_TIME_1_100000    = 100000,       /* 1/100000*/

    NETDEV_SHUTTER_TIME_INVALID = 0xFF                  /* 无效值 */
}NETDEV_SHUTTER_TIME_RANGE_E;

/**
* @enum tagNETDEVWideDynamicMode
* @brief 测光控制模式 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVWideDynamicMode
{
    NETDEV_WDM_CLOSED   = 0,    /* 关闭*/
    NETDEV_WDM_OPEN     = 1,    /* 开启*/
    NETDEV_WDM_AUTO     = 2,    /* 自动*/

    NETDEV_WDM_INVALID  = 0xFF  /* 无效值 */
}NETDEV_WIDE_DYNAMIC_MODE_E;

/**
* @enum tagNETDEVMeteringMode
* @brief 测光控制模式 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVMeteringMode
{
    NETDEV_METER_MODE_CENTRAL_WEIGHT    = 0,        /* 中央权重*/
    NETDEV_METER_MODE_AREA_METER        = 1,        /* 区域测光*/
    NETDEV_METER_MODE_SLIGHT_INHIBIT    = 2,        /* 强光抑制*/
    NETDEV_METER_MODE_VEHICLE_METER     = 3,        /* 车辆测光*/
    NETDEV_METER_MODE_FACE_METER        = 4,        /* 人脸测光*/
    NETDEV_METER_MODE_SPOT_METER        = 5,        /* 点测光*/

    NETDEV_METER_MODE_INVALID           = 0xFF      /* 无效值 */
}NETDEV_METER_MODE_E;

/**
* @enum tagNETDEVLampType
* @brief 昼夜模式类型 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVDayNightMode
{
    NETDEV_DNM_AUTO                     = 0,        /* 自动模式*/
    NETDEV_DNM_DAY_COLOR                = 1,        /* 白天--彩色 */
    NETDEV_DNM_NIGHT_BAW                = 2,        /* 夜晚--黑白 */
    NETDEV_DNM_LINK_COLOR_TO_BLACK      = 3,        /* 联动彩转黑*/

    NETDEV_DNM_INVALID                  = 0xFF      /* 无效值 */
}NETDEV_DAY_NIGHT_MODE_E;

/**
* @enum tagNETDEVFocusModel
* @brief 对焦模式 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVFocusModel
{
    NETDEV_FOCUS_MODEL_AUTO             = 0,        /* 自动对焦*/
    NETDEV_FOCUS_MODEL_MANUAL           = 1,        /* 手动对焦 */
    NETDEV_FOCUS_MODEL_A_KEY_FOCUS      = 2,        /* 一键对焦：设备在云台进行转动、变倍、调用预置位等操作时触发一次自动聚焦。 */
    NETDEV_FOCUS_MODEL_INFRARED_NIGHT   = 3,        /* 一键对焦（夜间红外）可见光较微弱的低照环境（比如夜间或室内低照等），开启红外灯后使用此对焦模式效果较好。*/
    NETDEV_FOCUS_MODEL_LOCK             = 4,        /* 一键对焦（锁定）只在设备变倍结束后进行一次自动聚焦，其它动作都无法触发对焦。*/
    NETDEV_FOCUS_MODEL_INVALID          = 0xFF      /* 无效值 */
}NETDEV_FOCUS_MODEL_E;

/**
* @enum tagNETDEVFocusScene
* @brief 对焦场景 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVFocusScene
{
    NETDEV_FOCUS_SCENE_ROUTINE          = 0,        /* 常规*/
    NETDEV_FOCUS_SCENE_LONG_OBJDIST     = 1,        /* 超远物距 */
    NETDEV_FOCUS_SCENE_INDOOR_MODEL     = 2,        /* 室内模式 */
    NETDEV_FOCUS_SCENE_INVALID          = 0xFF      /* 无效值 */
}NETDEV_FOCUS_SCENE_E;

/**
* @enum tagNETDEVWhiteBalance
* @brief 白平衡模式 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVWhiteBalance
{
    NETDEV_WBM_AUTO                         = 0,        /*自动模式*/
    NETDEV_WBM_TRIMMING                     = 1,        /*微调模式*/
    NETDEV_WBM_INDOOR                       = 2,        /*室内模式*/
    NETDEV_WBM_OUTDOOR                      = 3,        /*室外模式*/
    NETDEV_WBM_AUTO_MERCURY_LAMP            = 4,        /*自动水银灯模式*/
    NETDEV_WBM_NIGHT_TRIMMING               = 5,        /*夜间微调模式*/
    NETDEV_WBM_AUTO_NA_LAMP                 = 6,        /*自动钠灯模式*/
    NETDEV_WBM_LOCK                         = 7,        /*锁定模式*/
    NETDEV_WBM_SELF_ADAPT_NIGHT_TRIMMING    = 8,        /*自适应夜间微调模式*/
    NETDEV_WBM_AUTO_SECOND                  = 9,        /*自动模式2*/
    NETDEV_WBM_INVALID                      = 0xFF      /* 无效值 */
}NETDEV_WHITE_BALANCE_MODE_E;

/**
 * @enum tagNETDEVXWComType
 * @brief 串口类型
 * @attention 无 None      目前仅支持使用0 和 4
 */
typedef enum tagNETDEVXWComType
{
    NETDEV_XW_COM_TYPE_RS232                    = 0,               /* 232串口 */
    NETDEV_XW_COM_TYPE_RS422HALFDUPLEX          = 1,               /* 422 目前不支持 */
    NETDEV_XW_COM_TYPE_RS422FULLDUPLEX          = 2,               /* 422 目前不支持 */
    NETDEV_XW_COM_TYPE_RS485HALFDUPLEX          = 3,               /* 485 目前不支持 */
    NETDEV_XW_COM_TYPE_RS485FULLDUPLEX          = 4,
    NETDEV_XW_COM_TYPE_GENERIC                  = 5,               /* 目前不支持 */

    NETDEV_XW_COM_TYPE_INVALID                  = 0xFF             /* 无效值 */
}NETDEV_XW_COM_TYPE_E;

/* 流业务类型 */
typedef enum tagNETDEVVideoType
{
    NETDEV_PLAYBACK_REMOTE  = 0,        /* 远端回放 */
    NETDEV_REALPLAY_REMOTE  = 1,        /* 远端实况 */
    NETDEV_REALPLAY_LOCAL   = 2,        /* 本地实况 */
    NETDEV_SEQUENCE_PANE    = 3,        /* 单分屏轮巡 暂未实现*/
    NETDEV_SEQUENCE_WND     = 4,        /* 窗口轮巡 */
    NETDEV_REALPLAY_ALARM   = 5         /* 告警联动实况 */
}NETDEV_XW_VIDEO_TYPE_E;

typedef enum tagNETDEV_PASSIVEDECODE_CMD
{
    PASSIVE_DEC_PAUSE       = 1,   /* 被动解码暂停(仅文件流有效) */
    PASSIVE_DEC_RESUME      = 2,   /* 恢复被动解码(仅文件流有效) */
    PASSIVE_DEC_FAST        = 3,   /* 快速被动解码(仅文件流有效) */
    PASSIVE_DEC_SLOW        = 4,   /* 慢速被动解码(仅文件流有效) */
    PASSIVE_DEC_NORMAL      = 5,   /* 正常被动解码(仅文件流有效) */
    PASSIVE_DEC_ONEBYONE    = 6,   /* 被动解码单帧播放(保留) */
    PASSIVE_DEC_AUDIO_ON    = 7,   /* 音频开启 */
    PASSIVE_DEC_AUDIO_OFF   = 8,   /* 音频关闭 */
    PASSIVE_DEC_RESETBUFFER = 9    /* 清空缓冲区 */
}NETDEV_PASSIVEDECODE_CMD_E;

/* 轮巡状态 */
typedef enum tagNETDEVXWSequenceStatusType
{
    NETDEV_SEQUENCE_STATUS_RUNNING  = 0,        /* 正常运行 */ 
    NETDEV_SEQUENCE_STATUS_PAUSE    = 1,        /* 暂停 */ 
    NETDEV_SEQUENCE_STATUS_INVALID  = 0xff
}NETDEV_XW_SEQUENCE_STATUS_E;

/* 轮巡控制命令 */
typedef enum tagNETDEVXWSequenceCtrlCmd
{
    NETDEV_SEQUENCE_CTRL_CMD_STOP       = 0,        /* 停止 */ 
    NETDEV_SEQUENCE_CTRL_CMD_START      = 1,        /* 启动 */ 
    NETDEV_SEQUENCE_CTRL_CMD_PAUSE      = 2,        /* 暂停 */ 
    NETDEV_SEQUENCE_CTRL_CMD_RECOVER    = 3,        /* 恢复 */ 
    NETDEV_SEQUENCE_CTRL_CMD_PREVIOUS   = 4,        /* 上一屏 */ 
    NETDEV_SEQUENCE_CTRL_CMD_NEXT       = 5,        /* 下一屏 */ 
    NETDEV_SEQUENCE_CTRL_CMD_INVALID    = 0xff
}NETDEV_XW_SEQUENCE_CTRL_CMD_E;

/**
 * @enum tagNETDEVXWWndStreamStatus
 * @brief 建流状态
 * @attention
 */
typedef enum tagNETDEVXWWndStreamStatus
{
    NETDEV_XW_STREAM_STATUS_NO                  = 0,          /*未建流*/
    NETDEV_XW_STREAM_STATUS_SUCCESS             = 1,          /*建流成功*/
    NETDEV_XW_STREAM_STATUS_STREAMING           = 2,          /*建流中*/
    NETDEV_XW_STREAM_STATUS_RESTREAM            = 3,          /*重建流*/
    NETDEV_XW_STREAM_STATUS_FAILED              = 4,          /*建流失败*/
    NETDEV_XW_STREAM_STATUS_CAP_NOT_ENOUGHT     = 5,          /*解码能力不足*/

    NETDEV_XW_STREAM_STATUS_INVALID             = 0xFF        /* 无效值 */
}NETDEV_XW_WND_STREAM_STATUS_E;

/**
* @enum tagNETDEVXWSequencePlayControlCmd
* @brief 轮巡播放控制 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVXWSequencePlayControlCmd
{
    NETDEV_XW_SEQUENCE_PLAY_CTRL_CMD_STOP       = 0,        /* 停止 */
    NETDEV_XW_SEQUENCE_PLAY_CTRL_CMD_START      = 1,        /* 启动 */
    NETDEV_XW_SEQUENCE_PLAY_CTRL_CMD_PAUSE      = 2,        /* 暂停 */
    NETDEV_XW_SEQUENCE_PLAY_CTRL_CMD_RESUME     = 3,        /* 恢复 */
    NETDEV_XW_SEQUENCE_PLAY_CTRL_CMD_PAGEUP     = 4,        /* 上一屏 */
    NETDEV_XW_SEQUENCE_PLAY_CTRL_CMD_PAGEDOWN   = 5,        /* 下一屏 */

    NETDEV_XW_SEQUENCE_PLAY_CTRL_CMD_INVALID    = 0xFF      /* 无效值 */
}NETDEV_XW_SEQUENCE_PLAY_CTRL_CMD_E;

/**
* @enum tagNETDEVXWScenesPlanMode
* @brief 场景轮巡计划模式 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVXWScenesPlanMode
{
    NETDEV_XW_SCENES_PLAN_MODE_TIMER       = 0,            /* 定时切换 */
    NETDEV_XW_SCENES_PLAN_MODE_TIME_TABLE  = 1,            /* 按时间表切换 24小时计划表 */

    NETDEV_XW_SCENES_PLAN_MODE_INVALID     = 0xFF          /* 无效值 */
}NETDEV_XW_SCENES_PLAN_MODE_E;


/**
* @enum tagNETDEVHDDStorageFullStrategy
* @brief 硬盘存储满之后采用的策略
* @attention 
*/
typedef enum tagNETDEVHDDStorageFullStrategy
{
    NETDEV_HDD_STORAGE_FULL_STRATEGY_COVER      = 0,        /* 满覆盖 */
    NETDEV_HDD_STORAGE_FULL_STRATEGY_STOP       = 1,        /* 满停止 */

    NETDEV_HDD_STORAGE_FULL_STRATEGY_INVALID    = 0XFF      /* 无效值 */
}NETDEV_HDD_STORAGE_FULL_STRATEGY_E;



/**
* @enum tagNETDEVCertificateType
* @brief 证件类型
* @attention 无 None
*/
typedef enum tagNETDEVCertificateType
{
    NETDEV_CERTIFICATE_TYPE_ID                  = 0,        /*0:身份证 */
    NETDEV_CERTIFICATE_TYPE_IC                  = 1,        /* 1:IC卡 */
    NETDEV_CERTIFICATE_TYPE_PASSPORT            = 2,        /* 2:护照 */
    NETDEV_CERTIFICATE_TYPE_DRIVING_LICENSE     = 3,        /* 3:行驶证 */
    NETDEV_CERTIFICATE_TYPE_OTHER               = 99,       /* 99:其他 */
    NETDEV_CERTIFICATE_TYPE_INVALID             = 0xFF      /* 无效值 */
}NETDEV_ID_TYPE_E;

/**
* @enum tagNETDEVModelStatus
* @brief 建模状态枚举
* @attention 无 None
*/
typedef enum tagNETDEVModelStatus
{
    NETDEV_MODEL_STATUS_TYPE_UNMODELED                      = 0,        /*0:未建模 */
    NETDEV_MODEL_STATUS_TYPE_SUCCEED                        = 1,        /* 1:已建模 */
    NETDEV_MODEL_STATUS_TYPE_FAILED                         = 2,        /* 2:建模失败 */

    NETDEV_MODEL_STATUS_TYPE_INVALID                         = 0xFF      /* 无效值 */
}NETDEV_MODEL_STATUS_E;

/**
* @enum tagNETDEVPeopleLibType
* @brief 人员库类型
* @attention 无 None
*/
typedef enum tagNETDEVPeopleLibType
{
    NETDEV_PEOPLE_LIB_TYPE_DEFAULT      = 0,        /* 默认无效值 */
    NETDEV_PEOPLE_LIB_TYPE_BLACKLIST    = 1,        /* 黑名单 */
    NETDEV_PEOPLE_LIB_TYPE_STRANGER     = 2,        /* 灰名单/陌生人 */
    NETDEV_PEOPLE_LIB_TYPE_STAFF        = 3,        /* 员工 */
    NETDEV_PEOPLE_LIB_TYPE_VISITOR      = 4,        /* 访客 */
    NETDEV_PEOPLE_LIB_TYPE_INVALID      = 0xFF      /* 无效值 */
}NETDEV_PEOPLE_LIB_TYPE_E;

/**
* @enum tagNETDEVSubType
* @brief 订阅类型
* @attention 无 None
*/
typedef enum tagNETDEVSubType
{
    NETDEV_SUB_TYPE_FACE_COLLECTION = 0,                             /* 人脸采集 */
    NETDEV_SUB_TYPE_PERSON_CHECK    = 1,                             /* 人员核验 */
    NETDEV_SUB_TYPE_TYPE_INVALID    = 0xFF                           /* 无效值 */
}NETDEV_SUB_TYPE_E;

/**
* @enum tagNETDEVSmartAlarmType
* @brief 智能告警类型
* @attention 无
*/
typedef enum tagNETDEVSmartAlarmType
{
    NETDEV_SMART_ALARM_TYPE_FACE_SNAP         = 0,             /* 人脸识别抓图 */
    NETDEV_SMART_ALARM_TYPE_VEHICLE_SNAP      = 1,             /* 车牌识别抓图 */
    NETDEV_SMART_ALARM_TYPE_VIDEO_STRUCT_SNAP = 3,             /* 视频结构化抓图 */
    NETDEV_SMART_ALARM_TYPE_INVALID           = 0xFF           /* 无效值 */
}NETDEV_SMART_ALARM_TYPE_E;

/**
* @enum tagNETDEVSearchType
* @brief 人脸查找类型
* @attention 无
*/
typedef enum tagNETDEVSearchType
{
    NETDEV_SEARCH_TYPE_FACE        = 0,             /* 人脸检索 */
    NETDEV_SEARCH_TYPE_FACE_COMPARE_SUCCESS = 1,    /* 人脸比对成功  */
    NETDEV_SEARCH_TYPE_FACE_COMPARE_FAIL    = 2,    /* 人脸比对失败  */

    NETDEV_SEARCH_TYPE_INVALID              = 0xff  /* 无效值 */
}NETDEV_SEARCH_TYPE_E;


/**
 * @enum tagNETDEVQueryCondType
 * @brief 查询条件类型
 * @attention 无 None
 */
typedef enum tagNETDEVQueryCondType
{
    NETDEV_QUERYCOND_USERNAME          = 0,                /* 查询条件：用户名称 */
    NETDEV_QUERYCOND_ORGNAME           = 1,                /* 查询条件：组织名称 */
    NETDEV_QUERYCOND_DEVNAME           = 2,                /* 查询条件：设备名称 */
    NETDEV_QUERYCOND_CHNNAME           = 3,                /* 查询条件：通道名称 */
    NETDEV_QUERYCOND_TIME              = 4,                /* 查询条件：时间 */
    NETDEV_QUERYCOND_BUSINESSTYPE      = 5,                /* 查询条件：业务类型 */
    NETDEV_QUERYCOND_OPERATETYPE       = 6,                /* 查询条件：操作类型 */
    NETDEV_QUERYCOND_OPEROBJECT        = 7,                /* 查询条件：操作对象 */
    NETDEV_QUERYCOND_ALARMTYPE         = 8,                /* 查询条件：告警类型 参见枚举NETDEV_ALARM_TYPE_E*/
    NETDEV_QUERYCOND_ALARMSRCNAME      = 9,                /* 查询条件：告警源名称 */
    NETDEV_QUERYCOND_ALARMLEVEL        = 10,               /* 查询条件：告警级别 */
    NETDEV_QUERYCOND_ALARMCHECKED      = 11,               /* 查询条件：告警是否确认 */
    NETDEV_QUERYCOND_ALARMCHECKUSER    = 12,               /* 查询条件：告警确认用户 */
    NETDEV_QUERYCOND_ALARMCHECKTIME    = 13,               /* 查询条件：告警确认时间 */
    NETDEV_QUERYCOND_ALARM_DEVID       = 14,               /* 查询条件：告警设备ID */
    NETDEV_QUERYCOND_ALARM_CHNID       = 15,               /* 查询条件：告警通道ID */
    NETDEV_QUERYCOND_ALARM_SUBTYPE     = 16,               /* 查询条件：告警子类型 */
    NETDEV_QUERYCOND_ALARM_SERVER      = 17,               /* 查询条件：归属服务器 */
    NETDEV_QUERYCOND_DOOR_NUM          = 18,               /* 查询条件：门编号 */
    NETDEV_QUERYCOND_CARD_NUM          = 19,               /* 查询条件：卡号 */
    NETDEV_QUERYCOND_ALARM_GENDER      = 20,               /* 查询条件：性别 */
    NETDEV_QUERYCOND_ALARM_BIRTHDAY    = 21,               /* 查询条件：出生年月 */
    NETDEV_QUERYCOND_MONITOY_REASON    = 22,               /* 查询条件：布控原因 */
    NETDEV_QUERYCOND_PLATE_NUM         = 23,               /* 查询条件：车牌号码 */
    NETDEV_QUERYCOND_VEHICLE_TYPE      = 24,               /* 查询条件：车辆类型 */
    NETDEV_QUERYCOND_PLATE_COLOR       = 25,               /* 查询条件：车牌颜色 */
    NETDEV_QUERYCOND_VEHICLE_COLOR     = 26,               /* 查询条件：车身颜色 */
    NETDEV_QUERYCOND_PERSON_NUMBER     = 27,               /* 查询条件：员工编号*/
    NETDEV_QUERYCOND_PERSON_TYPE       = 28,               /* 查询条件：人员类型*/
    NETDEV_QUERYCOND_DIRECT            = 29,               /* 查询条件：方向*/
    NETDEV_QUERYCOND_ORGID             = 30,               /* 组织ID */
    NETDEV_QUERYCOND_ORGPID            = 31,               /* 组织PID */
    NETDEV_QUERYCOND_DEVICEID          = 32,               /* 设备ID */
    NETDEV_QUERYCOND_DEVICE_TYPE       = 33,               /* 设备类型 */
    NETDEV_QUERYCOND_DEVICE_SUBTYPE    = 34,               /* 设备子类型 */
    NETDEV_QUERYCOND_CHANNELID         = 35,               /* 通道ID */
    NETDEV_QUERYCOND_CHANNEL_TYPE      = 36,               /* 通道类型 */
    NETDEV_QUERYCOND_ONLINE_STATE      = 37,               /* 在线状态 */
    NETDEV_DATABASE_ID                 = 38,               /* 查询条件：库ID */
    NETDEV_QUERY_TYPE_PLATECLASS       = 39,               /* 查询条件：车牌类型 */ 
    NETDEV_QUERYCOND_RANGE             = 40,               /* 查询条件：告警查询范围 0是设备，1是服务器*/
    NETDEV_QUERYCOND_BEGIN_TIME          = 41,             /* 查询条件：访客预约开始时间*/
    NETDEV_QUERYCOND_END_TIME            = 42,             /* 查询条件：访客预约结束时间*/
    NETDEV_QUERYCOND_INTERVIEWEE_NAME    = 43,             /* 查询条件：受访人姓名*/
    NETDEV_QUERYCOND_INTERVIEWEE_STATUS  = 44,             /* 查询条件：受访人状态*/
    NETDEV_QUERYCOND_PARK_NAME         = 45,               /* 查询条件：停车场名称 */
    NETDEV_QUERYCOND_CONFIDENCE_LEVEL  = 46,               /* 查询条件：置信度 */
    NETDEV_QUERYCOND_PARK_TIME         = 47,               /* 查询条件：停车时长 */
    NETDEV_QUERYCOND_CONTRACT_RULE     = 48,               /* 查询条件：包期规则 */
    NETDEV_QUERYCOND_PAYMENT_METHOD    = 49,               /* 查询条件：付款方式 */
    NETDEV_QUERYCOND_PASSING_DIRECTION = 50,               /* 查询条件：过车方向 */
    NETDEV_QUERYCOND_VEHICLE_ATTR      = 51,               /* 查询条件：车辆属性 */
    NETDEV_QUERYCOND_STATISTICS_UNITS  = 52,               /* 查询条件：统计单位 */
    NETDEV_QUERYCOND_EXITENTRANCE_NAME = 53,               /* 查询条件：出入口名称 */
    NETDEV_QUERYCOND_PICTURE_DATA      = 54,               /* 查询条件：图片数据 */
    NETDEV_QUERYCOND_PERSON_NAME       = 55,               /* 查询条件：人员姓名 */
    NETDEV_QUERYCOND_SIMILARITY        = 56,               /* 查询条件：相似度 */
    NETDEV_QUERYCOND_SEARCH_TYPE       = 57,               /* 查询条件：检索类型，参见枚举值NETDEV_SEARCH_TYPE_E */
    NETDEV_QUERYCOND_ID_NUMBER         = 58,               /* 查询条件：证件号 */
    NETDEV_QUERYCOND_AGERANGE          = 59,               /* 查询条件：年龄段 */
    NETDEV_QUERYCOND_ETHIC             = 60,               /* 查询条件：民族 */
    NETDEV_QUERYCOND_GLASSES_STYLE     = 61,               /* 查询条件：眼镜款式 */
    NETDEV_QUERYCOND_SLEEVES_LENGTH    = 62,               /* 查询条件：上衣长短款式 */
    NETDEV_QUERYCOND_COAT_COLOR        = 63,               /* 查询条件：上衣颜色 */
    NETDEV_QUERYCOND_TROUSERS_STYLE    = 64,               /* 查询条件：下衣长短款式 */
    NETDEV_QUERYCOND_TROUSERS_COLOR    = 65,               /* 查询条件：下衣颜色 */
    NETDEV_QUERYCOND_SNAP_TOWARD       = 66,               /* 查询条件：抓拍朝向 */
    NETDEV_QUERYCOND_SHOES_TUBE_LENGTH = 67,               /* 查询条件：鞋子长短款式 */
    NETDEV_QUERYCOND_HAIR_LENGTH       = 68,               /* 查询条件：发型长短 */
    NETDEV_QUERYCOND_BAG_FLAG          = 69,               /* 查询条件：是否携包 */
    NETDEV_QUERYCOND_SPEED_TYPE        = 70,               /* 查询条件：速度类型 */
    NETDEV_QUERYCOND_NON_VEH_TYPE      = 71,               /* 查询条件：非机动车类型 */
    NETDEV_QUERYCOND_VEH_BRAND         = 72,               /* 查询条件：车辆品牌 */
    NETDEV_QUERYCOND_VEH_DATA_TYPE     = 73,               /* 查询条件：车辆数据类型（0：普通抓拍数据，1：结构化抓拍数据） */
    NETDEV_QUERYCOND_PROTOCOL_TYPE             = 74,       /* 查询条件：设备接入协议 */
    NETDEV_QUERYCOND_RELEVANT_ROOM             = 75,       /* 查询条件：关联房间 */
    NETDEV_QUERYCOND_LOCK_SIGNAL               = 76,       /* 查询条件：智能锁信号 */
    NETDEV_QUERYCOND_BIND_RELATION_DOORLOCK    = 77,       /* 查询条件：门锁绑定关系 */
    NETDEV_QUERYCOND_BIND_RELATION_PERSON_CARD = 78,       /* 查询条件：人卡绑定关系 */
    NETDEV_QUERYCOND_PERSONID                  = 79,       /* 查询条件：人员ID */
    NETDEV_QUERYCOND_PARKINGLOTID              = 80,       /* 查询条件：停车场ID */
    NETDEV_QUERYCOND_ENTREXITID                = 81,       /* 查询条件：出入口ID */
    NETDEV_QUERYCOND_RECORDID                  = 82,       /* 查询条件：记录ID */
    NETDEV_QUERYCOND_VEH_GROUPINGID            = 83,       /* 查询条件：车辆分组ID */
    NETDEV_QUERYCOND_KEYWORD                   = 84,       /* 查询条件：关键字 */
    NETDEV_QUERYCOND_PUBULISH_TYPE             = 85,       /* 查询条件：发布类型 (0：即时发布, 1：排程发布) */
    NETDEV_QUERYCOND_PROGRAM_NAME              = 86,       /* 查询条件：节目名称 */
    NETDEV_QUERYCOND_ORG_TYPE                  = 87,       /* 查询条件：组织类型 见 NETDEV_ORG_TYPE_E */
    NETDEV_QUERYCOND_VALID_DATE                = 88,       /* 查询条件：有效日期 */
    NETDEV_QUERYCOND_VALID_TIME                = 89,       /* 查询条件：有效时间 */
    NETDEV_QUERYCOND_VALID_WEEK                = 90,       /* 查询条件：有效星期 */
    NETDEV_QUERYCOND_MASK_FLAG                 = 92,       /* 查询条件：口罩标志(0：未知，1：不戴，2：戴) */
    NETDEV_QUERYCOND_TEMPERATURE               = 93,       /* 查询条件：人员体温 */
	
	NETDEV_QUERYCOND_MODEL_STATUS_TYPE         = 91,        /* 查询条件：人脸建模状态, 参见 NETDEV_MODEL_STATUS_E */
	
    NETDEV_QUERYCOND_INVALID           = 0xFF              /* 无效 */
}NETDEV_QUERYCOND_TYPE_E;

/**
 * @enum tagNETDEVQueryCondLogic
 * @brief 查询条件逻辑类型
 * @attention 无 None
 */
typedef enum tagNETDEVQueryCondLogic
{
    NETDEV_QUERYCOND_LOGIC_EQUAL             = 0,                /* 查询条件逻辑类型：等于 */
    NETDEV_QUERYCOND_LOGIC_GREATER           = 1,                /* 查询条件逻辑类型：大于 */
    NETDEV_QUERYCOND_LOGIC_LESS              = 2,                /* 查询条件逻辑类型：小于 */
    NETDEV_QUERYCOND_LOGIC_NO_LESS           = 3,                /* 查询条件逻辑类型：不小于 */
    NETDEV_QUERYCOND_LOGIC_NO_GREATER        = 4,                /* 查询条件逻辑类型：不大于 */
    NETDEV_QUERYCOND_LOGIC_NO_EQUAL          = 5,                /* 查询条件逻辑类型：不等于 */
    NETDEV_QUERYCOND_LOGIC_DIM_QUERY         = 6,                /* 查询条件逻辑类型：模糊查询 */
    NETDEV_QUERYCOND_LOGIC_CONTAIN           = 7,                /* 查询条件逻辑类型：包括 */
    NETDEV_QUERYCOND_LOGIC_ASC_ORDER         = 8,                /* 查询条件逻辑类型：升序 */
    NETDEV_QUERYCOND_LOGIC_DESC_ORDER        = 9                 /* 查询条件逻辑类型：降序 */
}NETDEV_QUERYCOND_LOGICTYPE_E;

/**
* @enum tagNETDEVFaceMatchAlarmType
* @brief 人脸抓拍匹配告警枚举
* @attention 无
*/
typedef enum tagNETDEVFaceMatchAlarmType
{
    NETDEV_FACE_MATCH_TYPE_SNAPSHOT      = 1,               /* 人脸抓拍 */
    NETDEV_FACE_MATCH_ALARM              = 2,               /* 人脸匹配告警 */
    NETDEV_FACE_NOT_MATCH_ALARM          = 4,               /* 人脸不匹配告警 */

    NETDEV_FACET_MATCH_TYPE_INVALID     = 0xFF              /* 无效值 */
}NETDEV_FACE_MATCH_ALARM_TYPE_E;

/* 录像标签错误码 */
typedef enum tagNETDEVRecodeLabelResult
{
    NETDEV_RECODE_LABEL_SUCCESS     = 0,        /* 成功 */
    NETDEV_RECODE_LABEL_FAIL_MAX    = 1,        /* 标签数量达到达到最大值 */
    NETDEV_RECODE_LABEL_FAIL_OTHER  = 2         /* 其他错误 */
}NETDEV_RECODE_LABEL_RESULT_E;


typedef enum tagNETDEVAccessProtocol
{
    NETDEV_ACCESS_PROTOCOL_ONVIF                = 1,                /* onvif协议 */
    NETDEV_ACCESS_PROTOCOL_UNV                  = 2,                /* 私有协议 */
    NETDEV_ACCESS_PROTOCOL_GB                   = 3,                /* 国标 */
    NETDEV_ACCESS_PROTOCOL_RTSP                 = 4,                /* RTSP */

    NETDEV_ACCESS_PROTOCOL_INVALID              = 0xFF              /* 无效值 */
}NETDEV_ACCESS_PROTOCOL_E;

/**
 * @enum tagNETDEVChnOffReason
 * @brief 接入设备离线原因类型枚举
 * @attention 无 None
 */
typedef enum tagNETDEVChnOffReason
{
    NETDEV_CHN_OFF_REASON_CONNECTING                = 0,                /* 连接中 */
    NETDEV_CHN_OFF_REASON_ONLINE                    = 1,                /* 在线 */
    NETDEV_CHN_OFF_REASON_WRONG_PWD                 = 2,                /* 用户名密码错误 */
    NETDEV_CHN_OFF_REASON_NETWORK_ERROR             = 3,                /* 网络不通 */
    NETDEV_CHN_OFF_REASON_SET_LIVE_STREAM_ERROR     = 4,                /* 设置实况流失败 */
    NETDEV_CHN_OFF_REASON_START_LIVE_STREAM_ERROR   = 5,                /* 启动实况流失败 */
    NETDEV_CHN_OFF_REASON_STREAM_INTERUP            = 6,                /* 媒体流中断 */
    NETDEV_CHN_OFF_REASON_TIMEOUT                   = 7,                /* 超时 */
    NETDEV_CHN_OFF_REASON_WAIT_REGIST               = 8,                /* 国标IPC等待注册报文 */
    NETDEV_CHN_OFF_REASON_MODIFY_LIVE_STREAM_ERROR  = 9,                /* 国标IPC修改流传输协议 */
    NETDEV_CHN_OFF_REASON_POE_POWER_ERROR           = 10,               /* PoE口供电异常 */
    NETDEV_CHN_OFF_REASON_BW_RECV_NOT_ENOUGH        = 11,               /* 带宽不足 */
    NETDEV_CHN_OFF_REASON_WEAK_PWD_ERROR            = 12,               /* 弱密码拒绝访问 */

    NETDEV_CHN_OFF_REASON_INVALID                   = 0xFF              /* 无效值 */
}NETDEV_CHN_OFF_REASON_E;


/**
 * @enum tagNETDEVPoEStatus
 * @brief POE口状态类型枚举
 * @attention 无 None
 */
typedef enum tagNETDEVPoEStatus
{
    NETDEV_POE_STATUS_NORMAL                = 1,                /* 正常 */
    NETDEV_POE_STATUS_POWER_SHORTAGE        = 2,                /* 功率不足 */
    NETDEV_POE_STATUS_POWER_OVERLOAP        = 4,                /* 端口负载功率超过额定功率 */
    NETDEV_POE_STATUS_NONEED_POWER          = 8,                /* 端口无需供电*/

    NETDEV_POE_STATUS_INVALID               = 0xFF              /* 无效值 */
}NETDEV_POE_STATUS_E;

/**
 * @enum tagNETDEVVideoChnFindType
 * @brief 视频通道信息查找类型枚举
 * @attention 无 None
 */
typedef enum tagNETDEVVideoChnFindType
{
    NETDEV_VIDEO_CHN_FIND_TYPE_ALL              = 0,         /* 查找所有 */
    NETDEV_VIDEO_CHN_FIND_TYPE_DEV_ORG_ID       = 1,         /* 按指定组织ID和指定设备ID查找 */
    NETDEV_VIDEO_CHN_FIND_TYPE_DEV_ID           = 2,         /* 按指定设备ID查找 */
    NETDEV_VIDEO_CHN_FIND_TYPE_ORG_ID           = 3,         /* 按指定组织ID查找 */


    NETDEV_VIDEO_CHN_FIND_TYPE_INVALID          = 0XFF       /* 无效值 */
}NETDEV_VIDEO_CHN_FIND_TYPE_E;

/**
 * @enum tagNETDEVOrgFindMode
 * @brief 组织查找模式枚举
 * @attention 无 None
 */
typedef enum tagNETDEVOrgFindMode
{
    NETDEV_ORG_FIND_MODE_ID          = 0,            /* 组织ID */
    NETDEV_ORG_FIND_MODE_TYPE        = 1,            /* 组织类型 */


    NETDEV_ORG_FIND_MODE_INVALID            = 0XFF       /* 无效值 */
}NETDEV_ORG_FIND_MODE_E;

/**
 * @brief 设备子类型
 * @attention 无 None
 */
typedef enum tagNETDEVDeviceSubType
{
    NETDEV_DTYPE_SUB_NVR                = 0,                /* NVR */
    NETDEV_DTYPE_SUB_IPC                = 1,                /* IPC */
    NETDEV_DTYPE_SUB_DC_INNER           = 2,                /* 内置DC */ 
    NETDEV_DTYPE_SUB_DC_EXT             = 3,                /* 外置DC */
    NETDEV_DTYPE_SUB_EC                 = 4,                /* EC */
    NETDEV_DTYPE_SUB_VMS                = 5,                /* 一体机 */ 
    NETDEV_DTYPE_SUB_DA                 = 6,                /* 代理设备 */ 
    NETDEV_DTYPE_SUB_ADU                = 7,                /* ADU拼控设备 */
    NETDEV_DTYPE_SUB_FISHEYE_IPC        = 8,                /* 鱼眼设备 */
    NETDEV_DTYPE_SUB_DECARD             = 9,                /* 解码卡设备 */
    NETDEV_DTYPE_SUB_FACE_IPC           = 10,               /* 人脸识别相机 */
    NETDEV_DTYPE_SUB_ALARMHOST          = 11,               /* 报警主机设备 */
    NETDEV_DTYPE_SUB_ACS                = 12,               /* 第三方门禁设备 */
    NETDEV_DTYPE_SUB_FG                 = 13,               /* 人脸速通门设备*/
    NETDEV_DTYPE_SUB_FACE_ACS           = 14,               /* 人脸门禁设备 */
    NETDEV_DTYPE_SUB_UNV_GENERAL_ACS    = 15,               /* 宇视通用门禁设备 */
    NETDEV_DTYPE_SUB_UNV_ALARMHOST      = 16,               /* 宇视报警主机设备 */
    NETDEV_DTYPE_SUB_LOCK_DEV           = 17,               /* 锁设备 */

    NETDEV_DTYPE_SUB_UNKNOW             = 0xFF              /* 未知设备 */
}NETDEV_DEVICE_SUB_TYPE_E;

/**
 * @enum tagNETDEVLayoutType
 * @brief 布局类型/分屏模式
 * @attention 无 None
 */
typedef enum tagNETDEVLayoutType
{
    /* Layout=aabb, aa代表分屏数 bb区分相同分屏数下不同的分屏类型 */

    NETDEV_LAYOUT_TYPE_01          =  100, /* 1      */
    NETDEV_LAYOUT_TYPE_02          =  200, /* 2      */
    NETDEV_LAYOUT_TYPE_03          =  300, /* 3      */
    NETDEV_LAYOUT_TYPE_04_1        =  400, /* 4      */
    NETDEV_LAYOUT_TYPE_04_2        =  401, /* 1+1+2  */
    NETDEV_LAYOUT_TYPE_05_1        =  500, /* 1+3+1   */
    NETDEV_LAYOUT_TYPE_05_2        =  501, /* 1+1+3   */
    NETDEV_LAYOUT_TYPE_06          =  600, /* 1+5    */
    NETDEV_LAYOUT_TYPE_07          =  700, /* 1+6    */
    NETDEV_LAYOUT_TYPE_08          =  800, /* 1+7    */
    NETDEV_LAYOUT_TYPE_09          =  900, /* 9      */
    NETDEV_LAYOUT_TYPE_10_1        = 1000, /* 1+9    */
    NETDEV_LAYOUT_TYPE_10_2        = 1001, /* 2+9    */
    NETDEV_LAYOUT_TYPE_13          = 1300, /* 1+12   */
    NETDEV_LAYOUT_TYPE_16          = 1600, /* 16     */
    NETDEV_LAYOUT_TYPE_17          = 1700, /* 1+16   */
    NETDEV_LAYOUT_TYPE_25          = 2500, /* 25     */
    NETDEV_LAYOUT_TYPE_32          = 3200, /* 3+1+28 */
    NETDEV_LAYOUT_TYPE_36          = 3600, /* 36     */
    NETDEV_LAYOUT_TYPE_64          = 6400, /* 64     */
    NETDEV_LAYOUT_TYPE_10001       = 10001,/* 自定义分屏1 */
    NETDEV_LAYOUT_TYPE_10002       = 10002,/* 自定义分屏2 */
    NETDEV_LAYOUT_TYPE_10003       = 10003,/* 自定义分屏3 */
    NETDEV_LAYOUT_TYPE_10004       = 10004,/* 自定义分屏4 */
    NETDEV_LAYOUT_TYPE_10005       = 10005,/* 自定义分屏5 */
    NETDEV_LAYOUT_TYPE_10006       = 10006,/* 自定义分屏6 */
    NETDEV_LAYOUT_TYPE_10007       = 10007,/* 自定义分屏7 */
    NETDEV_LAYOUT_TYPE_10008       = 10008,/* 自定义分屏8 */


    NETDEV_LAYOUT_TYPE_INVALID
}NETDEV_LAYOUT_TYPE_E;


/**
* @enum tagNETDEVDCSeqStatus
* @brief DC轮巡状态
* @attention 无 None
*/
typedef enum tagNETDEVDCSeqStatus
{
    NETDEV_DC_SEQSTATUS_START           = 0,            /* 轮巡执行状态：启动 */
    NETDEV_DC_SEQSTATUS_PAUSE           = 1,            /* 轮巡执行状态：暂停 */
    NETDEV_DC_SEQSTATUS_STOP            = 2,            /* 轮巡执行状态：停止 */

    NETDEV_DC_SEQSTATUS_INVALID         = 0xff          /* 无效值 */
}NETDEV_DC_SEQ_STATUS_E;


/**
 * @enum tagNETDEVDCVideoFormat
 * @brief DC 视频编码格式
 * @attention 无 None
 */
typedef enum tagNETDEVDCVideoFormat
{
    NETDEV_DC_VF_PAL        = 0,
    NETDEV_DC_VF_NTSC       = 1,
    NETDEV_DC_VF_720P24     = 2,
    NETDEV_DC_VF_720P25     = 3,
    NETDEV_DC_VF_720P30     = 4,
    NETDEV_DC_VF_720P50     = 5,
    NETDEV_DC_VF_720P60     = 6,
    NETDEV_DC_VF_1080I48    = 7,
    NETDEV_DC_VF_1080I50    = 8,
    NETDEV_DC_VF_1080I60    = 9,
    NETDEV_DC_VF_1080P24    = 10,
    NETDEV_DC_VF_1080P25    = 11,
    NETDEV_DC_VF_1080P30    = 12,
    NETDEV_DC_VF_1080P50    = 13,
    NETDEV_DC_VF_1080P60    = 14,
    NETDEV_DC_VF_XGA60      = 15,
    NETDEV_DC_VF_SXGA60     = 16,
    NETDEV_DC_VF_UXGA60     = 17,
    NETDEV_DC_VF_SXGAP60HZ  = 18,
    NETDEV_DC_VF_WXGAP60HZ  = 19,
    NETDEV_DC_VF_WSXGA60HZ  = 20,
    NETDEV_DC_VF_4K30       = 21,
    NETDEV_DC_VF_4K60       = 22,
    NETDEV_DC_VF_MUXGA60HZ  = 23,

    NETDEV_DC_VF_QXGA60     = 41,
    NETDEV_DC_VF_WQXGA60    = 42,
    NETDEV_DC_VF_4M60       = 43,
    
    NETDEV_DC_VF_INVALID    = 0xff
}NETDEV_DC_VIDEOFORMAT_E;

/**
 * @enum tagNETDEVAlarmPlanType
 * @brief 告警布防预案类型
 * @attention 无 None
 */
typedef enum tagNETDEVAlarmPlanType
{
    NETDEV_ALARM_PLAN_TYPE_STORE        = 0,            /* 存储计划 */
    NETDEV_ALARM_PLAN_TYPE_BS           = 1,            /* B/S */
    NETDEV_ALARM_PLAN_TYPE_CS           = 2,            /* C/S */

    NETDEV_ALARM_PLAN_TYPE_INVALID      = 0xff          /* 无效值 */
}NETDEV_ALARM_PLAN_TYPE_E;
/**
 * @enum tagNETDEVPaneOperateType
 * @brief 告警布防预案类型
 * @attention 无 None
 */
typedef enum tagNETDEVPaneOperateType
{
    NETDEV_PANE_OPERATE_TYPE_BIND_CHANNEL        = 0,            /* 绑定通道 */
    NETDEV_PANE_OPERATE_TYPE_UNBIND_CHANNEL      = 1,            /* 解绑通道 */

    NETDEV_PANE_OPERATE_TYPE_INVALID             = 0xff          /* 无效值 */
}NETDEV_PANE_OPERATE_TYPE_E;

/**
 * @enum tagNETDEVTimeTemplateType
 * @brief 时间模板类型
 * @attention 无 None
 */
typedef enum tagNETDEVTimeTemplateType
{
    NETDEV_TIMETEMPLATE_TYPE_RECORD     = 0,                /* 录像计划 */
    NETDEV_TIMETEMPLATE_TYPE_ALARM      = 1,                /* 告警计划 */
    /* 2和3CS暂不使用，web端使用 2是用户时间模板， 3是微信小程序使用 */
    NETDEV_TIMETEMPLATE_TYPE_SEQUENCE   = 4,                /* 轮巡 */
    NETDEV_TIMETEMPLATE_TYPE_ACS        = 5,                /* 门禁管理 */
    NETDEV_TIMETEMPLATE_TYPE_INVALID    = 0xFF              /* 无效 */
}NETDEV_TIME_TEMPLATE_TYPE_E;

/**
 * @enum tagNETDEVAlarmLinkType
 * @brief 告警联动类型
 * @attention 无 None
 */
typedef enum tagNETDEVAlarmLinkType
{
    NETDEV_ALARM_LINK_TYPE_STORE        = 0X01,         /* 联动存储 */
    NETDEV_ALARM_LINK_TYPE_PRESET       = 0X02,         /* 联动预置位 */
    NETDEV_ALARM_LINK_TYPE_MONITOR      = 0X04,         /* 联动实况 */
    NETDEV_ALARM_LINK_TYPE_SWITCHOUT    = 0X08,         /* 联动报警输出 */
    NETDEV_ALARM_LINK_TYPE_EMAIL        = 0X10,         /* 联动邮件 */
    NETDEV_ALARM_LINK_TYPE_WALL         = 0X20,         /* 联动上墙 */
    NETDEV_ALARM_LINK_TYPE_BUZZER       = 0X40,         /* 联动一体机设备蜂鸣器 */
    NETDEV_ALARM_LINK_TYPE_LOCALAUDIO   = 0X80,         /* 联动本地声音告警 */

    NETDEV_ALARM_LINK_TYPE_INVALID      = 0xFF          /* 无效 */
}NETDEV_ALARM_LINK_TYPE_E;



/**
 * @enum tagNETDEVEMapPicType
 * @brief 电子地图图片类型
 * @attention 无 None
 */
typedef enum tagNETDEVEMapPicType
{
    NETDEV_EMAP_PIC_TYPE_MAP        = 0,                    /* 地图 */
    NETDEV_EMAP_PIC_TYPE_MARKER     = 1,                    /* 图标 */

    NETDEV_EMAP_PIC_TYPE_INVALID    = 0xFF                  /* 无效值 */
}NETDEV_EMAP_PIC_TYPE;

/**
 * @enum tagNETDEVEMapPicSubType
 * @brief 电子地图图片子类型
 * @attention 无 None
 */
typedef enum tagNETDEVEMapPicSubType
{
    NETDEV_EMAP_PIC_SUBTYPE_HOTAREA        = 0,                    /* 热区图标 */
    NETDEV_EMAP_PIC_SUBTYPE_PTZ_IPC        = 1,                    /* 云台摄像机热点图标 */
    NETDEV_EMAP_PIC_SUBTYPE_NON_PTZ_IPC    = 2,                    /* 非云台摄像机热点图标 */
    NETDEV_EMAP_PIC_SUBTYPE_ALARM          = 3,                    /* 报警热点图标 */
    NETDEV_EMAP_PIC_SUBTYPE_ACS            = 4,                    /* 门禁热点图标 */
    NETDEV_EMAP_PIC_SUBTYPE_INVALID        = 0xFF                  /* 无效值 */
}NETDEV_EMAP_PIC_SUBTYPE;

/**
 * @enum tagNETDEVEMapMarkerType
 * @brief 电子地图标记类型
 * @attention 无 None
 */
typedef enum tagNETDEVEMapMarkerType
{
    NETDEV_EMAP_MARKER_TYPE_HOTAREA       = 0,                    /* 热区 */
    NETDEV_EMAP_MARKER_TYPE_VIDEO         = 1,                    /* 视频热点 */
    NETDEV_EMAP_MARKER_TYPE_ALARMIN       = 2,                    /* 报警热点 */
    NETDEV_EMAP_MARKER_TYPE_ACS           = 3,                    /* 门禁热点 */
    NETDEV_EMAP_MARKER_TYPE_INVALID       = 0xFF                  /* 无效值 */
}NETDEV_EMAP_MARKER_TYPE_E;

/**
 * @enum tagNETDEVEMapMarkerColor
 * @brief 电子地图标记颜色
 * @attention 无 None
 */
typedef enum tagNETDEVEMapMarkerColor
{
    NETDEV_EMAP_MARKER_COLOR_GREEN       = 0,                    /* 绿色 */
    NETDEV_EMAP_MARKER_COLOR_WHITE       = 1,                    /* 白色 */
    NETDEV_EMAP_MARKER_COLOR_RED         = 2,                    /* 红色 */
    NETDEV_EMAP_MARKER_COLOR_YELLOW      = 3,                    /* 黄色 */
    NETDEV_EMAP_MARKER_COLOR_BLUE        = 4,                    /* 蓝色 */
    NETDEV_EMAP_MARKER_COLOR_GRAY        = 5,                    /* 灰色 */
    NETDEV_EMAP_MARKER_COLOR_BLACK       = 6,                    /* 黑色 */
    NETDEV_EMAP_MARKER_COLOR_INVALID     = 0xFF                  /* 无效值 */
}NETDEV_EMAP_MARKER_COLOR_E;

/**
 * @enum tagNETDEVViewResType
 * @brief 视图资源类型
 * @attention 无 None
 */
typedef enum tagNETDEVViewResType
{
    NETDEV_VIEW_TYPE_SCHEME     = 0,                        /* 轮巡 */
    NETDEV_VIEW_TYPE_REALPLAY   = 1,                        /* 实况*/

    NETDEV_VIEW_TYPE_INVALID    = 0xFF                      /* 无效 */
}NETDEV_VIEW_TYPE_E;

/* 一级权限 */
typedef enum tagNETDEVRoleMajorRight
{
    /* 设备权限 */
    NETDEV_MAJOR_DEV_VIDEO_CHANNEL                  = 1,               /* 视频通道权限    见 NETDEV_MINOR_RIGHT_VIDEO_CHANNEL_E */
    NETDEV_MAJOR_DEV_AUDIO_CHANNEL                  = 2,               /* 音频通道权限    见 NETDEV_MINOR_RIGHT_AUDIO_CHANNEL_E */
    NETDEV_MAJOR_DEV_ALARM_POINT_CHANNEL            = 5,               /* 报警主机权限    见 NETDEV_MINOR_RIGHT_ALARM_POINT_CHANNEL_E */
    NETDEV_MAJOR_DEV_DOOR_CHANNEL                   = 6,               /* 门禁通道权限    见 NETDEV_MINOR_RIGHT_DOOR_CHANNEL_E */
    NETDEV_ROLE_MAJOR_DEV_TVWALL_RIGHT              = 7,               /* 电视墙权限      见 NETDEV_MINOR_RIGHT_TVWALL_E */
    NETDEV_ROLE_MAJOR_DEV_PARKINGLOT_RIGHT          = 8,               /* 停车场权限      见 NETDEV_MINOR_RIGHT_PARKINGLOT_E */
    NETDEV_MAJOR_DEV_MAX                            = 9,

    /* 操作权限 */
    NETDEV_MAJOR_OPER_PREVIEW                       = 100,              /* 操作端预览     见 NETDEV_MINOR_RIGHT_OPER_PREVIEW_E */
    NETDEV_MAJOR_OPER_ALARM                         = 101,              /* 操作端告警     见 NETDEV_MINOR_RIGHT_OPER_ALARM_E */
    NETDEV_MAJOR_OPER_EMAP                          = 102,              /* 操作端电子地图 见 NETDEV_MINOR_RIGHT_OPER_EMAP_E */
    NETDEV_MAJOR_OPER_VOICE                         = 103,              /* 操作端语音     见 NETDEV_MINOR_RIGHT_OPER_VOICE_E */
    NETDEV_MAJOR_OPER_TVWALL                        = 104,              /* 操作端电视墙   见 NETDEV_MINOR_RIGHT_OPER_TVWALL_E */
    NETDEV_MAJOR_OPER_MONITOR_SCHEME                = 105,              /* 操作端轮巡预案 见 NETDEV_MINOR_RIGHT_OPER_MONITOR_SCHEME_E */
    NETDEV_MAJOR_OPER_SEQUENCE_RESOURCE             = 106,              /* 操作端轮巡资源 见 NETDEV_MINOR_RIGHT_OPER_SEQUENCE_RESOURCE_E */
    NETDEV_MAJOR_OPER_INTELLIGENT                   = 107,              /* 操作端智能     见 NETDEV_MINOR_RIGHT_OPER_INTELLIGENT_E */
    NETDEV_MAJOR_OPER_ALARM_POINT_CONFIG            = 108,              /* 操作端报警主机 */
    NETDEV_MAJOR_OPER_DOOR_CONFIG                   = 109,              /* 操作端门禁管理 见 NETDEV_MINOR_RIGHT_OPER_DOOR_CONFIG_E */
    NETDEV_MAJOR_OPER_FACE_RECOGNITION              = 110,              /* 操作端人脸识别 见 NETDEV_MINOR_RIGHT_OPER_FACE_RECOGNITION_E */
    NETDEV_MAJOR_OPER_VEHICLE_RECOGNITION           = 111,              /* 操作端车牌识别 见 NETDEV_MINOR_RIGHT_OPER_VEHICLE_RECOGNITION_E */
    NETDEV_MAJOR_OPER_MONITOR_VIEWPLAN              = 112,              /* 操作端视图计划 见 NETDEV_MINOR_RIGHT_OPER_VIEWPLAN_E */
    NETDEV_MAJOR_OPER_PARKINGLOT                    = 113,              /* 操作端停车场   见 NETDEV_MINOR_RIGHT_OPER_PARKINGLOT */
    NETDEV_MAJOR_OPER_MONITOR_MIXEDDETECTION        = 114,              /* 操作端混行检测 见 NETDEV_MINOR_RIGHT_OPER_MIXEDDETECTION_E */
    NETDEV_MAJOR_OPER_MAX                           = 115,

    /* 管理 */
    NETDEV_MAJOR_MGR_BAS_CONFIG                     = 200,              /* 管理端基本配置 见 NETDEV_MINOR_RIGHT_MGR_BASE_E */
    NETDEV_MAJOR_MGR_SVC_CONFIG                     = 201,              /* 管理端业务配置 见 NETDEV_MINOR_RIGHT_MGR_SVC_E */
    NETDEV_MAJOR_MGR_SYS_CONFIG                     = 202,              /* 管理端系统配置 见 NETDEV_MINOR_RIGHT_MGR_SYS_E */
    NETDEV_MAJOR_MGR_STATISTICS                     = 203,              /* 管理端运维统计 见 NETDEV_MINOR_RIGHT_MGR_STAT_E */
    NETDEV_ROLE_MAJOR_MGR_VIDEO_APPLICATION         = 204,              /* 管理端视频应用 见 NETDEV_MINOR_RIGHT_MGR_VIDEO_E */
    NETDEV_ROLE_MAJOR_MGR_ACS_CONFIG                = 205,              /* 管理端门禁管理 见 NETDEV_MINOR_RIGHT_MGR_ACS_E */
    NETDEV_ROLE_MAJOR_MGR_PARKING_LOT               = 206,              /* 管理端停车场   见 NETDEV_MINOR_RIGHT_MGR_PARK_LOT_CFG_E */
    NETDEV_MAJOR_MGR_MAX                            = 207,

    NETDEV_MAJOR_BULT                               = 300
}NETDEV_MAJOR_RIGHT_E;

/* 设备视频通道二级权限 */
typedef enum tagNETDEVDevVChlRight
{
    NETDEV_MINOR_VIDEO_CHANNEL_LIVE          = BIT0,            /* 实况预览 */
    NETDEV_MINOR_VIDEO_CHANNEL_PLAYBACK      = BIT1,            /* 录像回放 */
    NETDEV_MINOR_VIDEO_CHANNEL_DOWNLOAD      = BIT2,            /* 录像下载 */
    NETDEV_MINOR_VIDEO_CHANNEL_PTZ           = BIT3,            /* 云台控制 */
    NETDEV_MINOR_VIDEO_CHANNEL_CENTER_RECORD = BIT4,            /* 中心录像 */

    NETDEV_MINOR_VIDEO_CHANNEL_ALL           = ((UINT32)(~0UL))
}NETDEV_MINOR_RIGHT_VIDEO_CHANNEL_E;

/* 设备音频通道二级权限 */
typedef enum tagNETDEVDevAChlRight
{
    NETDEV_MINOR_AUDIO_CHANNEL_TALK             = BIT0,        /* 语音对讲 */
    NETDEV_MINOR_AUDIO_CHANNEL_BROADCAST        = BIT1,        /* 语音广播 */
    NETDEV_MINOR_AUDIO_CHANNEL_ASSOCIATEAUDIO   = BIT2,        /* 随路音频 */

    NETDEV_MINOR_AUDIO_CHANNEL_ALL              = BIT32_MAX
}NETDEV_MINOR_RIGHT_AUDIO_CHANNEL_E;

/* 设备报警点通道二级权限 */
typedef enum tagNETDEVDevAPChlRightE
{
    NETDEV_MINOR_ALARM_POINT_CHANNEL_CONTROL = BIT0, /* 报警点通道手动控制 */

    NETDEV_MINOR_ALARM_POINT_CHANNEL_ALL     = BIT32_MAX
}NETDEV_MINOR_RIGHT_ALARM_POINT_CHANNEL_E;

/* 设备门禁通道二级权限 */
typedef enum tagNETDEVDevDoorChlRightE
{
    NETDEV_MINOR_DOOR_CHANNEL_CONTROL = BIT0, /* 门禁通道手动控制 */

    NETDEV_MINOR_DOOR_CHANNEL_ALL     = BIT32_MAX
}NETDEV_MINOR_RIGHT_DOOR_CHANNEL_E;

/* 电视墙二级权限 */
typedef enum tagNetDevTvwallRightE
{
    NETDEV_ROLE_MINOR_TVWALL_CHANNEL_CONTROL         = BIT0, /* 电视墙 */
    NETDEV_ROLE_MINOR_TVWALL_CHANNEL_ALL             = BIT32_MAX
}NETDEV_MINOR_RIGHT_TVWALL_E;

/* 停车场二级权限 */
typedef enum tagNetDevParkingLotRightE
{
    NETDEV_ROLE_MINOR_PARKINGLOT_ENTRANCE_BIND = BIT0, /* 出入口绑定 */
    NETDEV_ROLE_MINOR_PARKINGLOT_ALL = BIT32_MAX
}NETDEV_MINOR_RIGHT_PARKINGLOT_E;

/* 操作端预览二级权限 */
typedef enum tagNETDEVOperPreviewRight
{
    NETDEV_MINOR_OPER_PREVIEW_LIVE          = BIT0,            /* 实况 */
    NETDEV_MINOR_OPER_PREVIEW_PLAYBACK      = BIT1,            /* 回放 */

    NETDEV_MINOR_OPER_PREVIEW_ALL           = BIT32_MAX
}NETDEV_MINOR_RIGHT_OPER_PREVIEW_E;

/* 操作端告警管理二级权限 */
typedef enum tagNETDEVOperAlarmRight
{
    NETDEV_MINOR_OPER_ALARM_CONFIG          = BIT0,            /* 预案配置 */

    NETDEV_MINOR_OPER_ALARM_ALL             = BIT32_MAX
}NETDEV_MINOR_RIGHT_OPER_ALARM_E;

/* 操作端电子地图二级权限 */
typedef enum tagNETDEVOperEmapRight
{
    NETDEV_MINOR_OPER_EMAP_CONFIG           = BIT0,            /* 配置 */
    NETDEV_MINOR_OPER_EMAP_OPERATE          = BIT1,            /* 操作 */

    NETDEV_MINOR_OPER_EMAP_ALL              = BIT32_MAX
}NETDEV_MINOR_RIGHT_OPER_EMAP_E;

/* 操作端语音二级权限 */
typedef enum tagNETDEVOperVoiceRight
{
    NETDEV_MINOR_OPER_VOICE_TALK            = BIT0,            /* 语音对讲 */
    NETDEV_MINOR_OPER_VOICE_BROADCAST       = BIT1,            /* 语音广播 */

    NETDEV_MINOR_OPER_VOICE_ALL             = BIT32_MAX
}NETDEV_MINOR_RIGHT_OPER_VOICE_E;

/* 操作端电视墙二级权限 */
typedef enum tagNETDEVOperTvwallRight
{
    NETDEV_MINOR_OPER_TVWALL_CONFIG         = BIT0,            /* 配置 */
    NETDEV_MINOR_OPER_TVWALL_OPERATE        = BIT1,            /* 操作 */

    NETDEV_MINOR_OPER_TVWALL_ALL            = BIT32_MAX
}NETDEV_MINOR_RIGHT_OPER_TVWALL_E;

/* 操作端轮巡预案二级权限 */
typedef enum tagNETDEVOperMonitorSchemeRight
{
    NETDEV_MINOR_OPER_MONITOR_SCHEME_CONFIG  = BIT0,           /* 配置 */
    NETDEV_MINOR_OPER_MONITOR_SCHEME_OPERATE = BIT1,           /* 操作 */

    NETDEV_MINOR_OPER_MONITOR_SCHEME_ALL     = BIT32_MAX
}NETDEV_MINOR_RIGHT_OPER_MONITOR_SCHEME_E;

/* 操作端轮巡资源二级权限 */
typedef enum tagNETDEVOperSequenceResourceRight
{
    NETDEV_MINOR_OPER_SEQUENCE_RESOURCE_CONFIG  = BIT0,        /* 配置 */
    NETDEV_MINOR_OPER_SEQUENCE_RESOURCE_OPERATE = BIT1,        /* 操作 */

    NETDEV_MINOR_OPER_SEQUENCE_RESOURCE_ALL     = BIT32_MAX
}NETDEV_MINOR_RIGHT_OPER_SEQUENCE_RESOURCE_E;

/* 操作端智能二级权限 */
typedef enum tagNETDEVOperIntelligentRight
{
    NETDEV_MINOR_OPER_INTELLIGENT_PASSENGER_RFLOW   = BIT0,    /* 客流量查询 */
    NETDEV_MINOR_OPER_INTELLIGENT_VCA_ALARM_PIC     = BIT1,    /* 智能告警图片查询 */

    NETDEV_MINOR_OPER_INTELLIGENT_ALL = BIT32_MAX
}NETDEV_MINOR_RIGHT_OPER_INTELLIGENT_E;

/* 操作端门禁管理二级权限 */
typedef enum tagNETDEVOperDoorConfigRightE
{
    NETDEV_MINOR_OPER_DOOR_CONFIG                              = BIT0,     /* 门禁管理 */
    NETDEV_MINOR_OPER_DOOR_ACCESS_RECORD_AND_ATTENDANCE_RECORD = BIT1,     /* 出入记录和考勤统计 */
    NETDEV_MINOR_OPER_DOOR_PEOPLE_MANAGEMENT                   = BIT2,     /* 人员管理 */
    NETDEV_MINOR_OPER_PERMISSION_GROUP_AND_VISITOR_BLACKLIST   = BIT3,     /* 权限组和黑名单 */

    NETDEV_MINOR_OPER_DOOR_ALL                                 = BIT32_MAX
}NETDEV_MINOR_RIGHT_OPER_DOOR_CONFIG_E;

/* 操作端人脸识别二级权限 */
typedef enum tagNETDEVOperFaceRecognitionE
{
    NETDEV_MINOR_OPER_REAL_TIME_MONITORING      = BIT0,     /* 实时监控 */
    NETDEV_MINOR_OPER_DATABASE_MANAGE           = BIT1,     /* 人脸库管理 */
    NETDEV_MINOR_OPER_DISPATCH_TASK             = BIT2,     /* 布控任务 */
    NETDEV_MINOR_OPER_ALARM_RECORD              = BIT3,     /* 告警记录 */
    NETDEV_MINOR_OPER_SMARTNVR_CONFIG           = BIT4,     /* 智能NVR配置 */
    NETDEV_MINOR_OPER_HISTORY_RECORD            = BIT5,     /* 过人记录 */

    NETDEV_MINOR_OPER_FACE_RECOGNITION_ALL      = BIT32_MAX
}NETDEV_MINOR_RIGHT_OPER_FACE_RECOGNITION_E;

/* 操作端车牌识别管理二级权限 */
typedef enum tagNETDEVOperVehicleRecognitionE
{
    NETDEV_MINOR_OPER_VEHICLE_REAL_TIME_MONITORING   = BIT0,          /* 实时监控 */
    NETDEV_MINOR_OPER_VEHICLE_PASSING_RECORD         = BIT1,          /* 过车记录 */
    NETDEV_MINOR_OPER_VEHICLE_DISPATCH_TASK          = BIT2,          /* 布控任务 */
    NETDEV_MINOR_OPER_VEHICLE_HISTORY_RECORD         = BIT3,          /* 历史告警记录 */
    NETDEV_MINOR_OPER_VEHICLE_DATABASE_MANAGE        = BIT4,          /* 车牌库管理 */

    NETDEV_MINOR_OPER_VEHICLE_RECOGNITION_ALL = BIT32_MAX
}NETDEV_MINOR_RIGHT_OPER_VEHICLE_RECOGNITION_E;

/* 操作端视图计划二级权限 */
typedef enum tagNetDevOperSequencePlanRightE
{
    NETDEV_ROLE_MINOR_OPER_VIEWPLAN_CONFIG  = BIT0,             /* 配置 */
    NETDEV_ROLE_MINOR_OPER_VIEWPLAN_OPERATE = BIT1,             /* 操作 */
    NETDEV_ROLE_MINOR_OPER_VIEWPLAN_ALL     = BIT32_MAX
} NETDEV_MINOR_RIGHT_OPER_VIEWPLAN_E;

/* 操作端停车场管理二级权限 */
typedef enum tagNetDevOperParkingLotRightE
{
    NETDEV_ROLE_MINOR_OPER_PARKINGLOT_ENTRANCE_CHARGE     = BIT0,    /* 出口收费 */
    NETDEV_ROLE_MINOR_OPER_PARKINGLOT_CHARGE_RECORD       = BIT1,    /* 收费记录 */
    NETDEV_ROLE_MINOR_OPER_PARKINGLOT_PASSING_RECORD      = BIT2,    /* 过车记录 */
    NETDEV_ROLE_MINOR_OPER_PARKINGLOT_ALL   = BIT32_MAX
}NETDEV_MINOR_RIGHT_OPER_PARKINGLOT;

/* 操作端混行检测管理二级权限 */
typedef enum tagNetDevOperMixDetectionRightE
{
    NETDEV_ROLE_MINOR_OPER_MIXEDDETECTION_REAL_TIME_MONITORING   = BIT0,    /* 实时监控 */
    NETDEV_ROLE_MINOR_OPER_MIXEDDETECTION_PASSING_RECORD         = BIT1,    /* 通行记录 */
    NETDEV_ROLE_MINOR_OPER_MIXEDDETECTION_ALL   = BIT32_MAX
}NETDEV_MINOR_RIGHT_OPER_MIXEDDETECTION_E;

/* 管理端基础配置二级权限 */
typedef enum tagNETDEVMgrBaseRight
{
    NETDEV_MINOR_MGR_ORG                 = BIT0,             /* 组织管理 */
    NETDEV_MINOR_MGR_USER                = BIT1,             /* 用户管理 */
    NETDEV_MINOR_MGR_USER_ROLE           = BIT2,             /* 角色管理 */
    NETDEV_MINOR_MGR_DEV                 = BIT3,             /* 设备管理 */
    NETDEV_MINOR_MGR_DEV_CHANNEL         = BIT4,             /* 通道管理 */
    NETDEV_MINOR_MGR_SERVER              = BIT5,             /* 服务器管理 */
    NETDEV_MINOR_MGR_LOGICORG            = BIT6,             /* 虚拟组织管理 */
    NETDEV_MINOR_MGR_MGR_RES_RELATION    = BIT7,             /* 关联资源配置 */
    NETDEV_MINOR_MGR_THIRD_ALARM         = BIT8,             /* 第三方告警 */
    NETDEV_MINOR_MGR_USER_TEMPLATE       = BIT9,             /* 用户模板 */

    NETDEV_MINOR_MGR_BASE_ALL            = BIT32_MAX
}NETDEV_MINOR_RIGHT_MGR_BASE_E;

/* 管理端业务配置二级权限 */
typedef enum tagNETDEVMgrSvcRight
{
    NETDEV_MINOR_MGR_RECORD_PLAN               = BIT0,          /* 录像计划 */
    NETDEV_MINOR_MGR_RECORD_PLAN_TEMPLATE      = BIT1,          /* 录像模板 */
    NETDEV_MINOR_MGR_ALARM_CONFIG              = BIT2,          /* 告警配置 */
    NETDEV_MINOR_MGR_ALARM_PLAN_TEMPLATE       = BIT3,          /* 告警模板 */
    NETDEV_MINOR_MGR_ALARM_CONTACTS            = BIT4,          /* 通讯录 */
    NETDEV_MINOR_MGR_ALARM_NOTIFY_CONFIG       = BIT5,          /* 告警通知配置 */
    NETDEV_MINOR_MGR_ALARM_LEVEL_CUSTOM        = BIT6,          /* 自定义告警级别 */
    NETDEV_MINOR_MGR_BACKUP_PLAN               = BIT7,          /* 备份计划 */
    NETDEV_MINOR_MGR_USB_RECORD_BACKUP         = BIT8,          /* 本地录像备份 */

    NETDEV_MINOR_MGR_SVC_ALL                   = BIT32_MAX
}NETDEV_MINOR_RIGHT_MGR_SVC_E;

/* 管理端系统配置二级权限 */
typedef enum tagNETDEVMgrSysRight
{
    NETDEV_MINOR_MGR_SYS_BASIC              = BIT0,            /* 基本配置 */
    NETDEV_MINOR_MGR_SYS_DISK               = BIT1,            /* 硬盘配置 */
    NETDEV_MINOR_MGR_SYS_NETWORK            = BIT2,            /* 网络配置 */
    NETDEV_MINOR_MGR_SYS_MAINTAIN           = BIT3,            /* 系统维护 */
    NETDEV_MINOR_MGR_SYS_SECURITY           = BIT4,            /* 安全配置 */
    NETDEV_MINOR_MGR_SYS_BATCH              = BIT5,            /* 批量配置 */
    NETDEV_MINOR_MGR_SYS_ALL                = BIT32_MAX
}NETDEV_MINOR_RIGHT_MGR_SYS_E;

/* 管理端运维统计二级权限 */
typedef enum tagNETDEVMgrStatRight
{
    NETDEV_MINOR_MGR_STAT_SERVER_DISK       = BIT0,         /* 硬盘状态 */
    NETDEV_MINOR_MGR_STAT_SERVER_NETWORK    = BIT1,         /* 网络状态 */
    NETDEV_MINOR_MGR_STAT_SERVER_USER       = BIT2,         /* 用户状态 */
    NETDEV_MINOR_MGR_STAT_DEVICE            = BIT3,         /* 设备状态 */
    NETDEV_MINOR_MGR_STAT_SYS_ALARM_LOG     = BIT4,         /* 服务器报警日志*/
    NETDEV_MINOR_MGR_STAT_DEVICE_RECORD     = BIT5,         /* 录像状态 */
    NETDEV_MINOR_MGR_STAT_DEV_ALARM_LOG     = BIT6,         /* 设备报警日志 */
    NETDEV_MINOR_MGR_STAT_OPER_LOG          = BIT7,         /* 操作日志 */
    NETDEV_MINOR_MGR_STAT_PKTLOSS_RATE      = BIT8,         /* 丢包率 */
    NETDEV_MINOR_MGR_STAT_DEVICE_RESOURCE   = BIT9,         /* 服务器性能 */
    NETDEV_MINOR_MGR_STAT_BACKUP_CAP        = BIT10,        /* 备份存储能力 */
    NETDEV_MINOR_MGR_STAT_OVERVIEW          = BIT11,        /* 概览 */
    NETDEV_MINOR_MGR_STAT_ALL               = BIT32_MAX

}NETDEV_MINOR_RIGHT_MGR_STAT_E;

/* 管理端视频应用二级权限 */
typedef enum tagNetDevMgrVideoRightE
{
    NETDEV_ROLE_MINOR_MGR_PREVIEW_LIVE        = BIT0,       /* 实况 */
    NETDEV_ROLE_MINOR_MGR_PREVIEW_PLAYBACK    = BIT1,       /* 回放 */
    NETDEV_ROLE_MINOR_MGR_PREVIEW_ALL         = BIT32_MAX
} NETDEV_MINOR_RIGHT_MGR_VIDEO_E;

/* 管理端门禁管理二级权限 */
typedef enum tagNetDevMgrAcsMgrRightE
{
    NETDEV_ROLE_MINOR_MGR_PEOPLE_MANAGEMENT          = BIT0,     /* 人员管理 */
    NETDEV_ROLE_MINOR_MGR_ROLETIME_TEMPLATE          = BIT1,     /* 时间模板 */
    NETDEV_ROLE_MINOR_MGR_ACCESSROLE_GROUP           = BIT2,     /* 门禁权限组 */
    NETDEV_ROLE_MINOR_MGR_AUTHORIZED_BY_PERSON       = BIT3,     /* 按人授权 */
    NETDEV_ROLE_MINOR_MGR_AUTHORIZED_BY_DOOR         = BIT4,     /* 按门授权 */
    NETDEV_ROLE_MINOR_MGR_CARD_MANAGEMENT            = BIT5,     /* 门卡管理 */
    NETDEV_ROLE_MINOR_MGR_ACS_ALL                    = BIT32_MAX
} NETDEV_MINOR_RIGHT_MGR_ACS_E;

/* 管理端出入口操作二级权限 */
typedef enum tagNetDevMgrParkLotCfgRightE
{
    NETDEV_ROLE_MINOR_MGR_PARKING_LOT             = BIT0,    /* 停车场管理*/
    NETDEV_ROLE_MINOR_MGR_REGULAR_VEHICLE         = BIT1,    /* 固定车辆管理 */
    NETDEV_ROLE_MINOR_MGR_VEHICLE_BLACK           = BIT2,    /* 黑名单车辆管理 */
    NETDEV_ROLE_MINOR_MGR_VEHICLE_FLOW            = BIT3,    /* 车流量统计  */
    NETDEV_ROLE_MINOR_MGR_CHARGE_STATISTIC        = BIT4,    /* 收费统计 */
    NETDEV_ROLE_MINOR_MGR_PAYMENT_CONF            = BIT5,    /* 参数配置-支付配置*/
    NETDEV_ROLE_MINOR_MGR_PARAM_CONF              = BIT6,    /* 参数配置-基本配置*/
    NETDEV_ROLE_MINOR_MGR_GATE_SHIFT              = BIT7,    /* 班次 */
    NETDEV_ROLE_MINOR_MGR_VEHICLE_INPARKINGLOT    = BIT8,    /* 场内车辆记录 */
    NETDEV_ROLE_MINOR_MGR_PARKING_PAY             = BIT9,    /* 充值记录 */
    NETDEV_ROLE_MINOR_MGR_CHARGE_RULE             = BIT10,   /* 收费规则 */
    NETDEV_ROLE_MINOR_MGR_TMP_CHARGE_RULE         = BIT11,   /* 临时车收费规则 */    
    NETDEV_ROLE_MINOR_MGR_REG_CHARGE_RULE         = BIT12,   /* 固定车收费规则 */
    NETDEV_ROLE_MINOR_MGR_ABNORMAL_CHARGE_RULE    = BIT13,   /* 异常收费规则 */
    NETDEV_ROLE_MINOR_MGR_VEHICLE_PASSRECORD      = BIT14,   /* 过车记录 */
    NETDEV_ROLE_MINOR_MGR_TMPVEHICLE_CHARGE       = BIT15,   /* 临时车缴费记录 */
    NETDEV_ROLE_MINOR_MGR_ALL                     = BIT32_MAX
}NETDEV_MINOR_RIGHT_MGR_PARK_LOT_CFG_E;

/* 操作端混行检测管理二级权限 */
typedef enum tagNETDEVMinorOperViewplan
{
    NETDEV_MONOR_OPER_MIXEDDETECTION_REAL_TIME_MONITORING   = 1,           /* 实时监控 */
    NETDEV_MONOR_OPER_MIXEDDETECTION_PASSING_RECORD         = 2,           /* 通行记录 */
    NETDEV_MONOR_OPER_MIXEDDETECTION_MIXEDDETECTION_ALL     = 0xff
}NETDEV_MONOR_OPER_VIEWPLAN_E;

/* 热备模式(默认为0) */
typedef enum tagNETDEVVmsHotStandbyModeE
{
    NETDEV_HOTSTANDBY_MODE_DISABLE            = 0,    /* 禁用 */
    NETDEV_HOTSTANDBY_MODE_ACTIVITE           = 1,    /* 激活模式 */
    NETDEV_HOTSTANDBY_MODE_BACKUP             = 2     /* 备份模式 */
}NETDEV_VMS_HOTSTANDBYMODE_E;

/* 主从服务器状态 */
typedef enum tagNETDEVVmsStatusE
{
    NETDEV_VMS_OFFLINE               = 0,      /* 离线 */
    NETDEV_VMS_ONLINE                = 1,      /* 在线 */
    NETDEV_VMS_VERSION_INCONSISTENT  = 2,      /* 版本不一致 */
    NETDEV_VMS_SLAVE_REACH_LIMIT     = 3,      /* 从机达到上限 */
    NETDEV_VMS_SLAVE_UNREGISTER      = 4,      /* 从机未注册 */
    NETDEV_VMS_IN_STANDBY_MODE       = 5       /* 服务器处于备机状态 */
}NETDEV_VMS_STATUS_E;

/* 一体机主从模式 */
typedef enum tagNETDEVVmsModeE
{
    NETDEV_VMS_MASTER      = 0,    /* 主一体机 */
    NETDEV_VMS_SLAVE       = 1     /* 从一体机 */
}NETDEV_VMS_MODE_E;

/* 报警日志数据清除标志,默认为1 */
typedef enum tagNETDEVAlarmLogCleanupFlagE
{
    NETDEV_ALARM_LOG_CLEANUP      = 0,    /* 清除 */
    NETDEV_ALARM_LOG_NOT_CLEANUP  = 1     /* 不清除 */
}NETDEV_ALARM_LOG_CLEANUP_FLAG_E;

/**
 * @enum tagNETDEVPTZCruiseCmd
 * @brief 云台巡航操作命令 枚举定义 PTZ patrol operation commands Enumeration Definition
 * @attention 无 None
 */
typedef enum tagNETDEVPTZTRACKCmd
{
    NETDEV_PTZ_TRACKCRUISE_START     = 0,      /* 开始轨迹巡航  Start route patrol*/
    NETDEV_PTZ_TRACKCRUISE_STOP      = 1,      /* 停止轨迹巡航  Stop route patrol*/
    NETDEV_PTZ_TRACKCRUISE_REC       = 2,      /* 开始录制轨迹  Start recording route */
    NETDEV_PTZ_TRACKCRUISE_RECSTOP   = 3,      /* 停止录制轨迹  Stop recording route */
    NETDEV_PTZ_TRACKCRUISE_ADD       = 4,      /* 添加巡航轨迹  Add patrol route  一体机服务器暂不支持该接口，轨迹巡航ID写死为16 */
    NETDEV_PTZ_TRACKCRUISE_DEL       = 5       /* 删除轨迹巡航  Delete patrol route */
}NETDEV_PTZ_TRACKCMD_E;

typedef enum tagNETDEVPTZGuardMode
{
    NETDEV_PTZ_GUARD_MODE_PRESET    = 0,       /* 预置位模式 */
    NETDEV_PTZ_GUARD_MODE_CRUISE    = 1,       /* 预置位巡航模式 */
    NETDEV_PTZ_GUARD_MODE_TRACK     = 2         /* 轨迹巡航模式 */
}NETDEV_PTZ_GUARD_MODE_E;

/**
 * @enum tagNETDEVPTZTrackStatus
 * @brief 巡航状态 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVPTZTrackStatus
{
    NETDEV_PTZ_TRACK_STATUS_FREE           = 0,                        /* 空闲（未巡航且未录制） */
    NETDEV_PTZ_TRACK_STATUS_RUN            = 1,                        /* 正在巡航*/
    NETDEV_PTZ_TRACK_STATUS_START_RECORD   = 2                         /*正在录制*/
}NETDEV_PTZ_TRACK_STATUS_E;

/**
 * @struct tagNETDEVPTZGuardCmd
 * @brief 云台守望配置命令
 * @attention 无 None
 */
typedef enum tagNETDEVPTZGuardCmd
{
    NETDEV_PTZ_GUARD_CMD_GET = 0,       /* 获取指定通道的云台守望信息 */
    NETDEV_PTZ_GUARD_CMD_SET = 1        /* 设置指定通道的云台守望信息 */
}NETDEV_PTZ_GUARD_CMD_E;


/* 响应状态类型枚举 */
typedef enum tagNETDEVOrgResponseStatus
{
    NETDEV_ORG_RESPONSE_SUCCESS           = 0,            /* 响应成功 */
    NETDEV_ORG_RESPONSE_FAIL              = 1             /* 响应失败 */
}NETDEV_ORG_RESPONSE_STAUTE_E;

/* 组织类型枚举 */
typedef enum tagNETDEVOrgType
{
    NETDEV_ORG_TYPE_GENERAL            = 0,            /* 普通组织 */
    NETDEV_ORG_TYPE_CLOUD              = 1,            /* 云端组织 */
    NETDEV_ORG_TYPE_VIRTUAL            = 2,            /* 逻辑组织 */
    NETDEV_ORG_TYPE_FAVORITES          = 3,            /* 收藏夹 */
    NETDEV_ORG_TYPE_DOMAIN             = 4,            /* 域名组织 */
    NETDEV_ORG_TYPE_DOORGROUP          = 5,            /* 门组 */
    NETDEV_ORG_TYPE_DEPT               = 6,            /* 部门组织 */
    NETDEV_ORG_TYPE_APARTMENT          = 7,            /* 公寓组织 */

    NETDEV_ORG_TYPE_INVALID            = 0XFF          /* 无效值 */
}NETDEV_ORG_TYPE_E;

/* 轮巡计划方式枚举 */
typedef enum tagNETDEVPlansMode
{
    NETDEV_PLANS_MODE_TIMING            = 0,             /* 定时切换 */
    NETDEV_PLANS_MODE_24HOUR            = 1,             /* 24小时计划表 */
    NETDEV_PLANS_MODE_INVALID           = 0XFF           /* 无效值 */
}NETDEV_PLANS_MODE_E;


/**
 * @enum tagNETDEVTimeTemplatePlanType
 * @brief 时间模板计划类型
 */
typedef enum tagNETDEVTimeTemplatePlanType
{
    NETDEV_TIME_TEMPLATE_PLAN_COMMON                        = 0,                /* 常规存储 */  
    NETDEV_TIME_TEMPLATE_PLAN_MOTION                        = 1,                /* 运动检测存储 */
    NETDEV_TIME_TEMPLATE_PLAN_ALARM                         = 2,                /* 告警存储 */
    NETDEV_TIME_TEMPLATE_PLAN_MOTION_AND_ALARM              = 3,                /* 运动检测和告警存储 */
    NETDEV_TIME_TEMPLATE_PLAN_MOTION_OR_ALARM               = 4,                /* 运动检测或告警存储 */
    NETDEV_TIME_TEMPLATE_PLAN_MANUL                         = 5,                /* 手动存储 */
    NETDEV_TIME_TEMPLATE_PLAN_DISCONNECT                    = 6,                /* 断网报警 */
    NETDEV_TIME_TEMPLATE_PLAN_THIRD_STREAM                  = 7,                /* 第三流存储 */
    NETDEV_TIME_TEMPLATE_PLAN_VIDEO_LOSS                    = 8,                /* 视频丢失告警 */
    NETDEV_TIME_TEMPLATE_PLAN_AUDIODETECT                   = 9,                /* 音频检测 */
    NETDEV_TIME_TEMPLATE_PLAN_EVENT_ALL_ALARM               = 10,               /* 事件类型，包涵所有告警类型 */
    NETDEV_TIME_TEMPLATE_PLAN_ALL_RECORD_TYPE               = 11,               /* 所有录像类型 */

    NETDEV_TIME_TEMPLATE_PLAN_INVALID                       = 0xFF              /* 无效值 */
}NETDEV_TIME_TEMPLATE_PLAN_TYPE_E;


/**
 * @brief XW设备窗口漫游能力枚举
 * @attention
 */
typedef enum tagNETDEVTVWallType
{
    NETDEV_TVWALL_TYPE_DECODER = 0,                                 /* 解接器电视墙 */
    NETDEV_TVWALL_TYPE_SPLICER = 1,                                 /* 拼接器电视墙 */
    NETDEV_TVWALL_TYPE_DECARD  = 2                                  /* 解码卡电视墙 */
}NETDEV_TVWALL_TYPE_E;



/**
 * @enum tagNETDEVLeftRightAlignment
 * @brief 左右对齐方式枚举
 * @attention
 */
typedef enum tagNETDEVLeftRightAlignment
{
    NETDEV_FONT_LR_ALIGNMENT_LEFT     = 1,                  /* 左对齐 */
    NETDEV_FONT_LR_ALIGNMENT_MID      = 2,                  /* 居中对齐 */
    NETDEV_FONT_LR_ALIGNMENT_RIGHT    = 3                   /* 右对齐 */
}NETDEV_XW_LEFT_RIGHT_ALIGNMENT_E;

/**
 * @enum tagNETDEVUpDownAlignment
 * @brief 上下对齐方式枚举
 * @attention
 */
typedef enum tagNETDEVUpDownAlignment
{
    NETDEV_FONT_UD_ALIGNMENT_UP      = 1,                   /* 上对齐 */
    NETDEV_FONT_UD_ALIGNMENT_MID     = 2,                   /* 居中对齐 */
    NETDEV_FONT_UD_ALIGNMENT_DOWN    = 3                    /* 下对齐 */
}NETDEV_XW_UP_DOWN_ALIGNMENT_E;



/**
 * @enum tagNETDEVXWVirtualLEDInfo
 * @brief 轮巡状态枚举
 * @attention
 */
typedef enum tagNETDEVSeqStatus
{
    NETDEV_SEQ_STATUS_EMPTY    = 0,                          /* 未轮巡 */
    NETDEV_SEQ_STATUS_RUNNING = 1,                           /* 正在轮巡 */
    NETDEV_SEQ_STATUS_STOP   = 2,                            /* 停止轮巡 */

    NETDEV_SEQ_STATUS_INVALID = 0xFF                         /* 无效状态 */
}NETDEV_SEQ_STATUS_E;

/**
 * @enum tagNETDEVLapiTransProtocal
 * @brief 媒体传输协议 枚举定义  Media transport protocol Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVLapiTransProtocal
{
    NETDEV_LAPI_TRANS_PROTOCAL_TCP     = 0,              /* TCP */
    NETDEV_LAPI_TRANS_PROTOCAL_UDP     = 1               /* UDP */
}NETDEV_LAPI_TRANS_PROTOCAL_E;


 /**
 * @enum tagNETDEVXWVirtualLEDInfo
 * @brief 轮巡状态枚举
 * @attention
 */
typedef enum tagNETDEVTVWallWndType
{
    NETDEV_WINDOWS_TYPE_NORMAL    = 0,                          /* 普通窗口 */
    NETDEV_WINDOWS_TYPE_ALARM = 1,                              /* 告警窗口 */

    NETDEV_WINDOWS_TYPE_INVALID = 0xFF                          /* 无效状态 */
}NETDEV_TVWALL_WND_TPYE_E;


/**
 * @enum tagNETDEVXWPlayBackCond
 * @brief 轮巡操作枚举
 * @attention
 */
typedef enum tagNETDEVXWSeqCmd
{
    NETDEV_XW_SEQ_CMD_STOP = 0,                            /* 停止轮巡业务 */
    NETDEV_XW_SEQ_CMD_START  = 1,                          /* 开启轮巡业务 */
    NETDEV_XW_SEQ_CMD_PAUSE  = 2,                          /* 轮巡暂停 */
    NETDEV_XW_SEQ_CMD_CONTINUE = 3,                        /* 暂停后启动 */

    NETDEV_XW_SEQ_CMD_INVALID = 0xFF                       /* 无效命令 */
}NETDEV_XW_SEQ_CMD_E;

/**
 * @enum tagNETDEVXWSeqResourceType
 * @brief 轮巡资源枚举
 * @attention
 */
typedef enum tagNETDEVXWSeqResourceType
{
    NETDEV_XW_SEQ_RESOURCE_WND = 0,                                /* 窗口资源 */
    NETDEV_XW_SEQ_RESOURCE_GROUP_WND = 1,                          /* 组轮巡资源 */

    NETDEV_XW_SEQ_RESOURCE_INVALID = 0xFF                          /* 无效命令 */
}NETDEV_XW_SEQ_RESOURCE_TYPE_E;

/**
 * @enum tagNETDEVLangType
 * @brief 语言类型枚举
 * @attention
 */
typedef enum tagNETDEVLangType
{
    NETDEV_LANG_TYPE_CHINESE             = 0,                           /* 中文 */
    NETDEV_LANG_TYPE_ENGLISH             = 1,                           /* 英文 */
    NETDEV_LANG_TYPE_TRADITIONAL_CHINESE = 2,                           /* 繁体中文 */
    NETDEV_LANG_TYPE_FRENCH              = 3,                           /* 法语 */
    NETDEV_LANG_TYPE_GERMAN              = 4,                           /* 德语 */
    NETDEV_LANG_TYPE_SPANISH             = 5,                           /* 西班牙语 */
    NETDEV_LANG_TYPE_ITALIAN             = 6,                           /* 意大利语 */
    NETDEV_LANG_TYPE_PORTUGUESE          = 7,                           /* 葡萄牙语 */
    NETDEV_LANG_TYPE_RUSSIAN             = 8,                           /* 俄文 */
    NETDEV_LANG_TYPE_UKRAINIAN           = 9,                           /* 乌克兰语 */
    NETDEV_LANG_TYPE_GRUANIAN            = 10,                          /* 格鲁尼亚语 */
    NETDEV_LANG_TYPE_DUTCH               = 11,                          /* 荷兰语 */
    NETDEV_LANG_TYPE_DANISH              = 12,                          /* 丹麦语 */
    NETDEV_LANG_TYPE_FINNISH             = 13,                          /* 芬兰语 */
    NETDEV_LANG_TYPE_SWEDISH             = 14,                          /* 瑞典语 */
    NETDEV_LANG_TYPE_NORWEGIAN           = 15,                          /* 挪威语 */
    NETDEV_LANG_TYPE_LCELANDIC           = 16,                          /* 冰岛语 */
    NETDEV_LANG_TYPE_POLISH              = 17,                          /* 波兰语 */
    NETDEV_LANG_TYPE_LITHUANIAN          = 18,                          /* 立陶宛语 */
    NETDEV_LANG_TYPE_GREEK               = 19,                          /* 希腊语 */
    NETDEV_LANG_TYPE_CZECH               = 20,                          /* 捷克语 */
    NETDEV_LANG_TYPE_SLOVAK              = 21,                          /* 斯洛伐克语 */
    NETDEV_LANG_TYPE_HUNGARIAN           = 22,                          /* 匈牙利语 */
    NETDEV_LANG_TYPE_ROMAN               = 23,                          /* 罗马语 */
    NETDEV_LANG_TYPE_SERBIAN             = 24,                          /* 塞尔维亚语 */
    NETDEV_LANG_TYPE_CROATIAN            = 25,                          /* 克罗地亚语 */
    NETDEV_LANG_TYPE_SLOVENIAN           = 26,                          /* 斯洛文尼亚语 */
    NETDEV_LANG_TYPE_BULGARIAN           = 27,                          /* 保加利亚语 */
    NETDEV_LANG_TYPE_BELARUSIAN          = 28,                          /* 白俄罗斯语 */
    NETDEV_LANG_TYPE_TURKISH             = 29,                          /* 土耳其语 */
    NETDEV_LANG_TYPE_ARABIC              = 30,                          /* 阿拉伯语 */
    NETDEV_LANG_TYPE_HEBREW              = 31,                          /* 希伯来语 */
    NETDEV_LANG_TYPE_HINDI               = 32,                          /* 印度语 */
    NETDEV_LANG_TYPE_BENGALI             = 33,                          /* 孟加拉语 */
    NETDEV_LANG_TYPE_PERSIAN             = 34,                          /* 波斯语 */
    NETDEV_LANG_TYPE_JAPANESE            = 35,                          /* 日语 */
    NETDEV_LANG_TYPE_KOREAN              = 36,                          /* 韩语 */
    NETDEV_LANG_TYPE_THAI                = 37,                          /* 泰语 */
    NETDEV_LANG_TYPE_MALAYSIAN           = 38,                          /* 马来西亚语 */
    NETDEV_LANG_TYPE_INDONESIAN          = 39,                          /* 印度尼西亚语 */
    NETDEV_LANG_TYPE_FILIPINO            = 40,                          /* 菲律宾语 */
    NETDEV_LANG_TYPE_LAO                 = 41,                          /* 老挝语 */
    NETDEV_LANG_TYPE_VIETNAMESE          = 42,                          /* 越南语 */
    NETDEV_LANG_TYPE_MONGOLIAN           = 43,                          /* 蒙古国语 */
    NETDEV_LANG_TYPE_ALBANIAN            = 44,                          /* 阿尔巴尼亚语 */
    NETDEV_LANG_TYPE_AZERBAIJANI         = 45,                          /* 阿塞拜疆语 */
    NETDEV_LANG_TYPE_GAELIC              = 46,                          /* 盖尔语 */
    NETDEV_LANG_TYPE_ESTONIAN            = 47,                          /* 爱沙尼亚语 */
    NETDEV_LANG_TYPE_BOSNIAN             = 48,                          /* 波斯尼亚语 */
    NETDEV_LANG_TYPE_LOWLAND_SAXON       = 49,                          /* 低地撒克逊语 */
    NETDEV_LANG_TYPE_PERUVIAN            = 50,                          /* 秘鲁语 */
    NETDEV_LANG_TYPE_LATVIAN             = 51,                          /* 拉脱维亚语 */

    NETDEV_LANG_TYPE_INVALID             = 0xFF                         /* 无效命令 */
}NETDEV_LANG_TYPE_E;


/**
 * @enum tagNETDEVRegionType
 * @brief 区域类型枚举
 * @attention
 */
typedef enum tagNETDEVRegionType
{
    NETDEV_REGION_TYPE_ENGINEERING  = 0,                          /* 工程 */
    NETDEV_REGION_TYPE_DISTRIBUTION = 1,                          /* 分销 */
    NETDEV_REGION_TYPE_OVERSEAS     = 2,                          /* 海外 */

    NETDEV_REGION_TYPE_INVALID      = 0xFF                        /* 无效命令 */
}NETDEV_REGION_TYPE_E;

/**
 * @enum tagNETDEVCustomType
 * @brief 定制类型枚举
 * @attention
 */
typedef enum tagNETDEVCustomType
{
    NETDEV_CUSTOM_TYPE_GUARD   = 0,                               /* 白牌 */
    NETDEV_CUSTOM_TYPE_UNV_OLD = 1,                               /* 老版本宇视 */
    NETDEV_CUSTOM_TYPE_UNV_NEW = 2,                               /* 新版本宇视 */
    NETDEV_CUSTOM_TYPE_CUSTOM  = 3,                               /* 定制 */

    NETDEV_CUSTOM_TYPE_INVALID = 0xFF                             /* 无效命令 */
}NETDEV_CUSTOM_TYPE_E;

/**
 * @enum tagNETDEVManualRecordStatus
 * @brief 手动录像状态
 * @attention
 */
typedef enum tagNETDEVManualRecordStatus
{
    NETDEV_MANUAL_RECORD_STATUS_FREE = 0,                            /* 未录像 */
    NETDEV_MANUAL_RECORD_STATUS_RECORDING  = 1,                      /* 录像中 */

    NETDEV_MANUAL_RECORD_STATUS_INVALID = 0xFF                       /* 无效命令 */
}NETDEV_MANUAL_RECORD_STATUS_E;



/**
 * @enum tagNETDEVXWSerialType
 * @brief 串口类型
 * @attention 无 None      
 */
typedef enum tagNETDEVXWSerialType
{
    NETDEV_XW_SERIAL_TYPE_RS232                    = 0,               /* 232串口 */
    NETDEV_XW_SERIAL_TYPE_RS422                    = 1,               /* 422 */
    NETDEV_XW_SERIAL_TYPE_RS485                    = 2,               /* 485 */

    NETDEV_XW_SERIAL_TYPE_INVALID                  = 0xFF             /* 无效值 */
}NETDEV_XW_SERIAL_TYPE_E;

/**
 * @enum tagNETDEVXWSerialMode
 * @brief 串口模式
 * @attention 无 None      
 */
typedef enum tagNETDEVXWSerialMode
{
    NETDEV_XW_SERIAL_MODE_BIG_CONTROL              = 0,               /* 大屏控制 */
    NETDEV_XW_SERIAL_MODE_CENTER_CONTROL           = 1,               /* 中控控制 */
    NETDEV_XW_SERIAL_MODE_CONSOLE                  = 2,               /* Console */

    NETDEV_XW_SERIAL_MODE_INVALID                  = 0xFF             /* 无效值 */
}NETDEV_XW_SERIAL_MODE_E;

/**
 * @enum tagNETDEVXWWorkMode
 * @brief 工作模式
 * @attention 无 None      
 */
typedef enum tagNETDEVXWWorkMode
{
    NETDEV_XW_WORK_MODE_ALL                       = 0,               /* 全双工模式 */
    NETDEV_XW_WORK_MODE_SINGLE                    = 1,               /* 半双工模式 */

    NETDEV_XW_WORK_MODE_INVALID                   = 0xFF             /* 无效值 */
}NETDEV_XW_WORK_MODE_E;


/**
 * @enum tagNETDEVXWParityType
 * @brief 校验位 校验方式
 * @attention 无 None      
 */
typedef enum tagNETDEVXWParityType
{
    NETDEV_XW_PARITY_TYPE_NONE                    = 0,               /* 无 */
    NETDEV_XW_PARITY_TYPE_ODD                     = 1,               /* 奇校验 */
    NETDEV_XW_PARITY_TYPE_EVEN                    = 2,               /* 偶校验 */

    NETDEV_XW_PARITY_TYPE_INVALID                 = 0xFF             /* 无效值 */
}NETDEV_XW_PARITY_TYPE_E;

/**
 * @enum tagNETDEVXWFlowCtrl
 * @brief 流控位
 * @attention 无 None      
 */
typedef enum tagNETDEVXWFlowCtrl
{
    NETDEV_XW_FLOW_CTRL_NONE                        = 0,               /* 无 */
    NETDEV_XW_FLOW_CTRL_SOFTWARE                    = 1,               /* 软件流控 */
    NETDEV_XW_FLOW_CTRL_HARDWARE                    = 2,               /* 硬件流控 */

    NETDEV_XW_FLOW_CTRL_INVALID                     = 0xFF             /* 无效值 */
}NETDEV_XW_FLOW_CTRL_E;



/**
 * @enum tagNETDEVAlarmPointActionType
 * @brief 报警点通道控制命令
 * @attention
 */
typedef enum tagNETDEVAlarmPointActionType
{
    NETDEV_ALARMPOINT_ACTION_TYPE_ARM             = 0,                /* 布防 */
    NETDEV_ALARMPOINT_ACTION_TYPE_DISARM          = 1,                /* 撤防 */
    NETDEV_ALARMPOINT_ACTION_TYPE_BYPASS          = 2,                /* 旁路 */
    NETDEV_ALARMPOINT_ACTION_TYPE_DISBYPASS       = 3,                /* 旁路恢复 */

    NETDEV_ALARMPOINT_ACTION_TYPE_INVALID         = 0xFF              /* 无效值 */
}NETDEV_ALARMPOINT_ACTION_TYPE_E;


/**
 * @enum tagNETDEVAlarmPointActionType
 * @brief 报警点通道控制命令
 * @attention
 */
typedef enum tagNETDEVDoorCtrlActionType
{
    NETDEV_DOORCTRL_ACTION_TYPE_OPEN             = 0,                /* 开门 */
    NETDEV_DOORCTRL_ACTION_TYPE_CLOSE            = 1,                /* 关门 */

    NETDEV_DOORCTRL_ACTION_TYPE_INVALID          = 0xFF              /* 无效值 */
}NETDEV_DOORCTRL_ACTION_TYPE_E;

/**
 * @enum tagNETDEVACSPersonCommondType
 * @brief 门禁人员管理命令(添加和删除使用批量接口)
 * @attention
 */
typedef enum tagNETDEVACSPersonCommondType
{
    NETDEV_ACS_PERSON_COMMOND_TYPE_GET            = 0,                /* 获取 */
    NETDEV_ACS_PERSON_COMMOND_TYPE_MOD            = 1,                /* 修改 */

    NETDEV_ACS_PERSON_COMMOND_TYPE_INVALID        = 0xFF              /* 无效值 */
}NETDEV_ACS_PERSON_COMMOND_TYPE_E;

/**
 * @enum tagNETDEVGenderType
 * @brief 成员性别
 * @attention 无 None
 */
typedef enum tagNETDEVGenderType
{
    NETDEV_GENDER_TYPE_UNKNOW       = 0,        /* 0-未知的性别 */
    NETDEV_GENDER_TYPE_MAN          = 1,        /* 1-男 */
    NETDEV_GENDER_TYPE_WOMAN        = 2,        /* 2-女 */
    NETDEV_GENDER_TYPE_UNEXPLAINED  = 9,        /* 9-未说明的性别 */
    NETDEV_GENDER_TYPE_INVALID      = 0xFF      /* 无效值 */
}NETDEV_GENDER_TYPE_E;

/**
 * @enum tagNETDEVFaceMemberIDType
 * @brief 人脸成员证件类型
 * @attention 无 None
 */
typedef enum tagNETDEVFaceMemberIDType
{
    NETDEV_FACE_MEMBER_ID_TYPE_ID_CARD                 = 0,               /* 身份证 */
    NETDEV_FACE_MEMBER_ID_TYPE_IC_CARD                 = 1,               /* IC卡 */
    NETDEV_FACE_MEMBER_ID_TYPE_PASSPORT                = 2,               /* 护照 */
    NETDEV_FACE_MEMBER_ID_TYPE_DRIVING                 = 3,               /* 驾照 */
    NETDEV_FACE_MEMBER_ID_TYPE_OTHER                   = 99,              /* 其他 */

    NETDEV_FACE_MEMBER_ID_TYPE_INVALID                 = 0xFF             /* 无效值 */
}NETDEV_FACE_MEMBER_ID_TYPE_E;


/**
 * @enum tagNETDEVACSPersonType
 * @brief 人员类型
 * @attention 无 None
 */
typedef enum tagNETDEVACSPersonType
{
    NETDEV_ACS_PERSON_TYPE_STAFF                      = 0,               /* 员工 */
    NETDEV_ACS_PERSON_TYPE_VISITOR                    = 1,               /* 访客 */
    NETDEV_ACS_PERSON_TYPE_STRANGER                   = 2,               /* 陌生人 */

    NETDEV_ACS_PERSON_TYPE_INVALID                    = 0xFF             /* 无效值 */
}NETDEV_ACS_PERSON_TYPE_E;

/**
 * @enum tagNETDEVACSVisitStaus
 * @brief 访客状态
 * @attention 无 None
 */
typedef enum tagNETDEVACSVisitStaus
{
    NETDEV_ACS_VISIT_STATUS_SCHEDULE                 = 0,               /* 预约 */
    NETDEV_ACS_VISIT_STATUS_VISITING                 = 1,               /* 在访 */
    NETDEV_ACS_VISIT_STATUS_LEAVE                    = 2,               /* 离访 */
    NETDEV_ACS_VISIT_STATUS_SCHEDULE_CANCEL          = 3,               /* 预约取消 */
    NETDEV_ACS_VISIT_STATUS_TIMEOUT                  = 4,               /* 超时 */

    NETDEV_ACS_VISIT_STATUS_INVALID                  = 0xFF             /* 无效值 */
}NETDEV_ACS_VISIT_STATUS_E;


/**
 * @enum tagNETDEVAlarmActionType
 * @brief 输出开关量操作
 * @attention
 */
typedef enum tagNETDEVAlarmActionType
{
    NETDEV_ALARM_ACTION_TYPE_CLOSE            = 0,                /* 关闭告警 */
    NETDEV_ALARM_ACTION_TYPE_OPEN             = 1,                /* 触发告警 */

    NETDEV_ALARM_ACTION_TYPE_INVALID          = 0xFF              /* 无效值 */
}NETDEV_ALARM_ACTION_TYPE_E;

/**
 * @enum tagNETDEVAlarmStatusType
 * @brief 开关量输出告警状态
 * @attention
 */
typedef enum tagNETDEVAlarmStatusType
{
    NETDEV_ALARM_STATUS_TYPE_INACTIVE           = 0,                /* 未告警 */
    NETDEV_ALARM_STATUS_TYPE_ACTIVE             = 1,                /* 告警 */

    NETDEV_ALARM_STATUS_TYPE_INVALID            = 0xFF              /* 无效值 */
}NETDEV_ALARM_STATUS_TYPE_E;

/**
 * @enum tagNETDEVEmergencyBellType
 * @brief 紧急铃类型
 * @attention
 */
typedef enum tagNETDEVEmergencyBellType
{
    NETDEV_EMERGENCY_BELL_TYPE_SEHO    = 0,                          /* 韩国紧急铃 */
    NETDEV_EMERGENCY_BELL_TYPE_HITEC   = 1,                          /* Hitec紧急铃 */

    NETDEV_EMERGENCY_BELL_TYPE_INVALID = 0xFF                        /* 无效铃 查询单个通道不传紧急铃类型时下发此值*/
}NETDEV_EMERGENCY_BELL_TYPE_E; 


/**
 * @enum tagNETDEVMonitorType
 * @brief 布控任务类型
 * @attention 无 None
 */
typedef enum tagNETDEVMonitorType
{
    NETDEV_MONITOR_TYPE_FACE                       = 0,                /* 人脸 */
    NETDEV_MONITOR_TYPE_VEHICLE                    = 1,                /* 车牌 */
    NETDEV_MONITOR_TYPE_INVALID                    = 0xFF              /* 无效值*/
}NETDEV_MONITOR_TYPE_E;


/**
 * @enum tagNETDEVDiskModeType
 * @brief 硬盘模式
 * @attention 无 None
 */
typedef enum tagNETDEVDiskModeType
{
    NETDEV_DISK_MODE_TYPE_OLD            = 0,                /* 旧存储格式硬盘 */
    NETDEV_DISK_MODE_TYPE_NEW            = 1,                /* 新存储格式硬盘 */

    NETDEV_DISK_MODE_TYPE_INVALID        = 0xFF              /* 无效值 */
}NETDEV_DISK_MODE_TYPE_E;


/**
 * @enum tagNETDEVEncodeChnStatus
 * @brief 编码通道状态
 * @attention 无 None
 */
typedef enum tagNETDEVChnStatus
{
    NETDEV_CHN_STATUS_OFFLINE          = 0,                /* 离线 offline */
    NETDEV_CHN_STATUS_ONLINE           = 1,                /* 在线 online */
    NETDEV_CHN_STATUS_VIDEO_LOSE       = 2,                /* 视频丢失 video lose */

    NETDEV_CHN_STATUS_INVALID       = 0xFF
}NETDEV_CHN_STATUS_E;


/**
 * @enum tagNETDEVAlarmInChnStatus
 * @brief 告警输入通道状态
 * @attention 无 None
 */
typedef enum tagNETDEVAlarmRunode
{
    NETDEV_ALARM_RUNMODE_OPEN       = 0,                /* 常开  Always open */
    NETDEV_ALARM_RUNMODE_CLOSE      = 1,                /* 常闭  Always closed */
    NETDEV_ALARM_RUNMODE_INVALID    = 0xFF
}NETDEV_ALARM_RUNMODE_E;

/**
 * @enum tagNETDEVAlarmOutChnStatus
 * @brief 告警输出通道状态
 * @attention 无 None
 */
typedef enum tagNETDEVAlarmOutChnStatus
{
    NETDEV_ALARMOUT_CHN_ACTIVE      = 0,
    NETDEV_ALARMOUT_CHN_INACTIVE    = 1,
    NETDEV_ALARMOUT_CHN_INVALID     = 0xFF
}NETDEV_ALARMOUT_CHN_STATUS_E;

/**
 * @enum tagNETDEVRecordLocation
 * @brief 录像存储类型 枚举定义 Record location Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVRecordLocation
{
    NETDEV_RECORD_LOCATION_ALL                        = 0,                /* 存储位置：所有 */  
    NETDEV_RECORD_LOCATION_VMS                        = 1,                /* 存储位置：VMS */  
    NETDEV_RECORD_LOCATION_NVR                        = 2,                /* 存储位置：NVR */
    NETDEV_RECORD_LOCATION_BACKUP                     = 3,                /* 存储位置：备份 */

    NETDEV_RECORD_LOCATION_INVALID                    = 0xFF              /* 无效值 */
}NETDEV_RECORD_LOCATION_E;

/**
 * @enum tagNETDEVDeviceMainType
 * @brief 设备类型枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVDeviceMainType
{
    NETDEV_DTYPE_MAIN_ENCODE            = 0,                /* 编码设备 */
    NETDEV_DTYPE_MAIN_DECODE            = 1,                /* 解码设备 */
    NETDEV_DTYPE_MAIN_VMS               = 2,                /* 一体机设备 */
    NETDEV_DTYPE_MAIN_DA                = 3,                /* 代理设备 */
    NETDEV_DTYPE_MAIN_CLOUD             = 4,                /* 云端编码设备  */
    NETDEV_DTYPE_MAIN_BAYONET           = 5,                /* 卡口设备 */
    NETDEV_DTYPE_MAIN_ACS               = 6,                /* 门禁主机设备 */
    NETDEV_DTYPE_MAIN_ALARMHOST         = 7,                /* 报警主机设备 */
    NETDEV_DTYPE_MAIN_EXITENTRANCE      = 8,                /* 出入口设备 */
    NETDEV_DTYPE_MAIN_LOCK              = 9,                /* 锁设备 */

    NETDEV_DTYPE_MAIN_PLAYER_MANAGER    = 10,               /* 播放盒管理设备 */
    NETDEV_DTYPE_MAIN_PLAYER            = 11,               /* 播放盒 */
    NETDEV_DTYPE_MAIN_UNKNOWN           = 0XFF              /* 未知设备 */
}NETDEV_DEVICE_MAIN_TYPE_E;

typedef enum tagNETDEVDeviceStatus
{
    NETDEV_DEV_STATUS_OFFLINE                   = 0,                /* 离线 */
    NETDEV_DEV_STATUS_ONLINE                    = 1,                /* 在线 */
    NETDEV_DEV_STATUS_CONNECTING                = 2,                /* 连接中 */
    NETDEV_DEV_STATUS_PWD_ERROR                 = 3,                /* 用户名或密码错误 */
    NETDEV_DEV_STATUS_NOT_SUPPORT               = 4,                /* 设备不支持 */
    NETDEV_DEV_STATUS_TIMEOUT                   = 5,                /* 设备连接超时 */
    NETDEV_DEV_STATUS_WEAK_PWD_ERROR            = 6,                /* 远程用户弱密码错误 */
    NETDEV_DEV_STATUS_NO_DYNAMIC_PWD            = 7,                /* 设备不支持动态密码 */

    NETDEV_DEV_STATUS_INVALID                   = 0XFF              /* 无效值 */
}NETDEV_DEVICE_STATUS_E;

typedef enum tagNETDEVDeviceAccessMode
{
    NETDEV_DEV_ACCESS_MODE_IP_DOMAIN            = 0,                /* IP、域名接入 */ 
    NETDEV_DEV_ACCESS_MODE_P2P                  = 1,                /* P2P接入 */
    NETDEV_DEV_ACCESS_MODE_UNP                  = 2,                /* UNP接入 */

    NETDEV_DEV_ACCESS_MODE_INVALID              = 0XFF              /* 无效值 */
}NETDEV_DEVICE_ACCESS_MODE_E;

typedef enum tagNETDEVChlType
{
    NETDEV_CHN_TYPE_ENCODE              = 0,                /* 编码通道, 通道状态参见NETDEV_CHN_STATUS_E */
    NETDEV_CHN_TYPE_ALARMIN             = 1,                /* 告警输入通道, 通道状态参见NETDEV_ALARM_RUNMODE_E */
    NETDEV_CHN_TYPE_ALARMOUT            = 2,                /* 告警输出通道, 通道状态参见NETDEV_ALARMOUT_CHN_STATUS_E */
    NETDEV_CHN_TYPE_DECODE              = 3,                /* 解码通道 */
    NETDEV_CHN_TYPE_AUDIO               = 4,                /* 音频通道 */
    NETDEV_CHN_TYPE_NIC                 = 5,                /* 网卡通道 */
    NETDEV_CHN_TYPE_ALARMPOINT          = 6,                /* 报警点 */
    NETDEV_CHN_TYPE_DOOR                = 7,                /* 门 */
    NETDEV_CHN_TYPE_ADU_ENCODE          = 8,                /* ADU本地编码通道, 通道状态参见NETDEV_CHN_STATUS_E 获取详细信息见#NETDEV_DEV_CHN_XW_ENCODE_INFO_S */
    NETDEV_CHN_TYPE_EMERGENCY           = 9,                /* 紧急铃通道 */

    NETDEV_CHN_TYPE_INVALID             = 0xFF              /* 无效值 */
}NETDEV_CHN_TYPE_E;


/**
 * @enum tagNETDEVAlarmPointStatusType
 * @brief 告警点位状态枚举 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVAlarmPointStatusType
{
    NETDEV_ALARM_POINT_STATUS_TYPE_UNKNOWN     = 0,             /* 未知 */
    NETDEV_ALARM_POINT_STATUS_TYPE_ARM         = 1,             /* 布防 */
    NETDEV_ALARM_POINT_STATUS_TYPE_DISARM      = 2,             /* 撤防 */
    NETDEV_ALARM_POINT_STATUS_TYPE_DISBYPASS   = 3,             /* 非旁路 */
    NETDEV_ALARM_POINT_STATUS_TYPE_BYPASS      = 4,             /* 旁路 */
    NETDEV_ALARM_POINT_STATUS_TYPE_ZONEFAILURE = 5,             /* 防区失效 */

    NETDEV_ALARM_POINT_STATUS_TYPE_INVALID     = 0xFF           /* 无效值 */
}NETDEV_ALARM_POINT_STATUS_TYPE_E;

/**
 * @enum tagNETDEVDoorStatusType
 * @brief 告警点位状态枚举 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVDoorStatusType
{
    NETDEV_DOOR_STATUS_TYPE_UNKNOWN     = 0,             /* 未知 */
    NETDEV_DOOR_STATUS_TYPE_CLOSE       = 1,             /* 关门 */
    NETDEV_DOOR_STATUS_TYPE_OPEN        = 2,             /* 开门 */

    NETDEV_DOOR_STATUS_TYPE_INVALID     = 0xFF           /* 无效值 */
}NETDEV_DOOR_STATUS_TYPE_E;


 /**
 * @enum tagNETDEVVideoSrcType
 * @brief 视频输入类型枚举 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVVideoSrcType
{
    NETDEV_VIDEO_SRC_TYPE_BNC            = 0,                /* BNC输入*/
    NETDEV_VIDEO_SRC_TYPE_VGA            = 1,                /* VGA输入*/
    NETDEV_VIDEO_SRC_TYPE_HDMI           = 2,                /* HDMI输入 */
    NETDEV_VIDEO_SRC_TYPE_DVI_D          = 3,                /* DVI_D输入*/
    NETDEV_VIDEO_SRC_TYPE_DVI_I          = 4,                /* DVI_I输入*/
    NETDEV_VIDEO_SRC_TYPE_DP             = 5,                /* DP输入*/
    NETDEV_VIDEO_SRC_TYPE_SDI            = 6,                /* SDI输入*/
    NETDEV_VIDEO_SRC_TYPE_INVALID      = 0xFF                /* 无效值 */
}NETDEV_VIDEO_SRC_TYPE_E;

/**
 *@enum tagNETDEVTrafficStatisticsFormType
 *@brief 客流量报表类型 枚举定义
 *@attention 无 None
 */
typedef enum tagNETDEVTrafficStatisticsFormType
{
    NETDEV_TRAFFIC_STAT_FORM_BY_MINUTE = 0,                  /* 按分钟*/
    NETDEV_TRAFFIC_STAT_FORM_BY_HOUR = 1,                    /* 按小时*/
    NETDEV_TRAFFIC_STAT_FORM_BY_DAY = 2,                     /* 按天*/
    NETDEV_TRAFFIC_STAT_FORM_BY_MONTH = 3,                   /* 按月*/
    NETDEV_TRAFFIC_STAT_FORM_BY_BUTT
}NETDEV_TRAFFIC_STATIC_FORM_TYPE_E;



/* 车辆事件上报类型 */
typedef enum tagNETDEVVehicleEventType
{
    NETDEV_VEHCILE_EVENT_TYPE_SNAPSHOT        = 0,       /* 车辆抓拍 */
    NETDEV_VEHCILE_EVENT_TYPE_MATCHALARM      = 1,       /* 车辆匹配告警 */
    NETDEV_VEHCILE_EVENT_TYPE_MISMATCHALARM   = 2,       /* 车辆不匹配告警 */
    NETDEV_VEHCILE_EVENT_TYPE_BUTT            = 0xFF     /* 无效值 */
}NETDEV_VEHICLE_EVENT_TYPE_E;

/* 人脸事件上报类型 */
typedef enum tagNETDEVFaceEventType
{
    NETDEV_FACE_EVENT_TYPE_SNAPSHOT       = 0,        /* 人脸抓拍 */
    NETDEV_FACE_EVENT_TYPE_MATCH_ALARM    = 1,        /* 人脸匹配告警 */
    NETDEV_FACE_EVENT_TYPE_MISMATCH_ALARM = 2,        /* 人脸不匹配告警 */
    NETDEV_FACE_EVENT_TYPE_BUTT           = 0xFF      /* 无效值 */
}NETDEV_FACE_EVENT_TYPE_E;

/**
 * @enum tagNETDEVEventActionType
 * @brief 事件动作类型枚举 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVEventActionType
{
    NETDEV_EVENT_ACTION_TYPE_ADD            = 0,                /* 事件动作类型：增加 */
    NETDEV_EVENT_ACTION_TYPE_DELETE         = 1,                /* 事件动作类型：删除 */
    NETDEV_EVENT_ACTION_TYPE_MODIFY         = 2,                /* 事件动作类型：修改 */
    NETDEV_EVENT_ACTION_TYPE_ONLINE         = 3,                /* 事件动作类型：上线 */
    NETDEV_EVENT_ACTION_TYPE_OFFLINE        = 4,                /* 事件动作类型：离线 */
    NETDEV_EVENT_ACTION_TYPE_EMAP_ALARM     = 5,                /* 事件动作类型：电子地图告警 */

    NETDEV_EVENT_ACTION_TYPE_INVALID        = 0xFF              /* 无效值 */
}NETDEV_EVENT_ACTION_TYPE_E;


/**
 * @enum tagNETDEVProtocal
 * @brief 媒体传输协议 枚举定义  Media transport protocol Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVTransProtocal
{
    NETDEV_TRANS_PROTOCAL_UDP     = 0,            /* UDP */
    NETDEV_TRANS_PROTOCAL_TCP     = 1             /* TCP */
}NETDEV_TRANS_PROTOCAL_E;

/**
 * @enum tagNETDEVSessionType
 * @brief 分屏业务类型 枚举定义 
 * @attention 无 None
 */
typedef enum tagNETDEVSessionType
{
    NETDEV_SESSION_TYPE_FREE             = 0,             /* 空闲 */
    NETDEV_SESSION_TYPE_LIVE_ON_WALL     = 1,             /* 实况上墙 */ 
    NETDEV_SESSION_TYPE_PLAYBACK_ON_WALL = 2,             /* 回放上墙 */ 
    NETDEV_SESSION_TYPE_TURNING_ON_WALL  = 3             /* 轮巡上墙 */ 
}NETDEV_SESSION_TYPE_E;


/* 传输类型 */
typedef enum tagNETDEVTransType
{
    NETDEV_TRANS_TYPE_FORWORD     = 0,                        /* 一体机转发 */
    NETDEV_TRANS_TYPE_STRAIGHT    = 1                         /* 下行设备直连*/
}NETDEV_TRANS_TYPE_E;


/**
 * @enum tagNETDEVCloudConnectMode
 * @brief 云端设备连接模式 
 * @attention 无 None
 */
typedef enum tagNETDEVCloudConnectMode
{
    NETDEV_CLOUD_CONNECT_MODE_ALL       = 0,         /* 本地直连->广域网直连->打洞->转发 */
    NETDEV_CLOUD_CONNECT_MODE_P2P_TURN  = 1,         /* 本地直连->广域网直连->打洞+转发(转发延迟500ms) */
    NETDEV_CLOUD_CONNECT_MODE_P2P       = 2,         /* 直接打洞 */
    NETDEV_CLOUD_CONNECT_MODE_TURN      = 3          /* 直接转发 */
}NETDEV_CLOUD_CONNECT_MODE_E;


/**
*@enum tagNETDEVMyCloudOffErr
*@brief 下线原因类型枚举
*@attention 无
*/
typedef enum tagNETDEVMyCloudOffErr
{
    NETDEV_MYCLOUD_OFF_ERR_OK                 = 0,      /* MyCloud正常 */
    NETDEV_MYCLOUD_OFF_ERR_NOT_REGISTER       = 1,      /* 未在MyCloud网站添加设备 */
    NETDEV_MYCLOUD_OFF_ERR_NET_UNREACHABLE    = 2,      /* 网络不可达 */

    NETDEV_MYCLOUD_OFF_ERR_MAPPING_ON_MSG_NO_RETURN           = 3,      /* 故障：端口映射已启用，UDP消息无法通过路由器返回，请检查路由器配置 */
    NETDEV_MYCLOUD_OFF_ERR_MAPPING_ON_MSG_NO_SEND             = 4,      /* 故障：端口映射已启用，UDP消息无法通过路由器发出，请检查路由器配置 */
    NETDEV_MYCLOUD_OFF_ERR_MAPPING_OFF_MSG_NO_RETURN          = 5,      /* 故障：端口映射未启用，UDP消息无法通过路由器返回，请检查路由器配置 */
    NETDEV_MYCLOUD_OFF_ERR_MAPPING_OFF_MSG_NO_SEND            = 6,      /* 故障：端口映射未启用，UDP消息无法通过路由器发出，请检查路由器配置 */
    NETDEV_MYCLOUD_OFF_ERR_MAPPING_EXCP_MSG_NO_RETURN         = 7,      /* 故障：端口映射异常，UDP消息无法通过路由器返回，请检查路由器配置 */
    NETDEV_MYCLOUD_OFF_ERR_MAPPING_EXCP_MSG_NO_SEND           = 8       /* 故障：端口映射异常，UDP消息无法通过路由器发出，请检查路由器配置 */

}NETDEV_MYCLOUD_OFF_ERR_E;

typedef enum tagNETDEVRegisterStatus
{
    NETDEV_REGISTER_STATUS_OFFLINE            = 0,      /* 离线 */
    NETDEV_REGISTER_STATUS_ONLINE             = 1,      /* 在线 */
    NETDEV_REGISTER_STATUS_CANCELING          = 2,      /* 注销中 */

    NETDEV_REGISTER_STATUS_INVALID            = 0XFF    /* 无效值 */
}NETDEV_REGISTER_STATUS_E;

/**
* @brief 通道权限枚举
* @attention 按位表示 若拥有该通道实况和对讲权限和云台控制权限，该字段填3
*/
typedef enum tagNETDEVChnPermission
{
    NETDEV_CHN_PERMISSION_LIVE                  = BIT0,                 /* 实况和语音对讲 */
    NETDEV_CHN_PERMISSION_PTZ                   = BIT1,                 /* 云台控制 */
    NETDEV_CHN_PERMISSION_PLAYBACK              = BIT2,                 /* 回放 */
    NETDEV_CHN_PERMISSION_MANU_RECORD           = BIT3,                 /* 手动录像 */
    NETDEV_CHN_PERMISSION_LOCAL_BACK            = BIT4,                 /* 本地备份 */

    NETDEV_CHN_PERMISSION_INVALID               = 0XFFFFFFFF        /* 无效值 */
}NETDEV_CHN_PERMISSION_TYPE_E;

/**
* @brief 用户级别,仅管理员用户可以修改权限
* @attention 无
*/
typedef enum tagNETDEVUserLevel
{
    NETDEV_USER_LEVEL_ADMINISTRATOR  = 0,           /* 管理员 不可配置*/
    NETDEV_USER_LEVEL_OPERATOR       = 1,           /* 操作员 */
    NETDEV_USER_LEVEL_USER           = 2,           /* 普通用户 */
    NETDEV_USER_LEVEL_Default        = 3,           /* 默认用户 不可配置 */
    NETDEV_USER_LEVEL_PUBLISH        = 4            /* 节目发布员 */
}NETDEV_USER_LEVEL_E;

/**
* @brief 基本权限
* @attention 无 
*/
typedef enum tagNETDEVUserBasePermission
{
    NETDEV_USER_BASE_PER_CONFIG           = BIT0,           /* 配置*/
    NETDEV_USER_BASE_PER_UPGRADE          = BIT1,           /* 升级 */
    NETDEV_USER_BASE_PER_LOG              = BIT2,           /* 日志查看和导出 */
    NETDEV_USER_BASE_PER_REBOOT           = BIT3            /* 重启 */
}NETDEV_USER_BASE_PERMISSION_E;

/**
* @enum tagNETDEVFactoryResetModeType
* @brief 出厂设置恢复模式的枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVFactoryResetModeType
{
    NETDEV_FACTORY_RESET_SOFT             = 0,              /* 软恢复模式（简单恢复，保留网络配置和用户配置）*/
    NETDEV_FACTORY_RESET_HARD             = 1,              /* 硬恢复模式（完全恢复，恢复到出厂配置）*/

    NETDEV_FACTORY_RESET_INVALID          = 0xFF            /* 无效值 */
}NETDEV_FACTORY_RESET_MODE_TYPE_E;


/**
 * @enum tagNETDEVCloudDeviceType
 * @brief 云端设备类型
 * @attention 无 None
 */
typedef enum tagNETDEVCloudDeviceType
{
    NETDEV_CLOUD_DEV_TYPE_IPC                 = 0,          /* IPC设备 */
    NETDEV_CLOUD_DEV_TYPE_NVR                 = 1,          /* NVR设备 */
    NETDEV_CLOUD_DEV_TYPE_VMS                 = 2,          /* 一体机设备 */
    NETDEV_CLOUD_DEV_TYPE_DVR                 = 3,          /* DVR设备 */
    NETDEV_CLOUD_DEV_TYPE_EC                  = 4,          /* 编码器设备 */
    NETDEV_CLOUD_DEV_TYPE_DC                  = 5,          /* 解码器设备 */
    NETDEV_CLOUD_DEV_TYPE_INVALID            = 0xff         /* 无效值 */
}NETDEV_CLOUD_DEVICE_TYPE;

/**
 * @brief 视频分发协议类型
 * @attention
 */
typedef enum tagNETDEVCDNProt
{
    NETDEV_CDN_PROT_PRIVATE     = 0,       /* 私有 */
    NETDEV_CDN_PROT_RTMP        = 1        /* RTMP协议 */

}NETDEV_CDN_PROT_E;

/**
* @enum tagNETDEVFileType
* @brief 文件信息
* @attention 无 None
*/
typedef enum tagNETDEVFileType
{
    NETDEV_TYPE_FOLDER  = 0,    /* 文件夹 */
    NETDEV_TYPE_FILE    = 1,    /* 文件 */
    NETDEV_TYPE_INVALID = 0xff  /* 文件夹 */
}NETDEV_FILE_TYPE_E;

/**
 * @brief 轮询资源业务类型
 * @attention
 */
typedef enum tagNETDEVSeqResType
{
    NETDEV_TYPE_SEQ_RES_REMOTE = 0,                                      /* 远端实况 */
    NETDEV_TYPE_SEQ_RES_LOCAL  = 1,                                      /* 本地实况 */

    NETDEV_TYPE_SEQ_RES_INVALID                         = 0xff           /* 无效值 */
}NETDEV_SEQ_RES_TYPE_E;

/**
* @struct tagNETDEVFacePassRecordType
* @brief 人脸通行记录类型
* @attention 无 None
*/
typedef enum tagNETDEVFacePassRecordType
{
    NETDEV_TYPE_FACE_PASS_COM_SUCCESS       = 1,                /* 比对成功告警 */
    NETDEV_TYPE_FACE_PASS_COM_FAIL          = 2,                /* 比对失败告警 */
    NETDEV_TYPE_FACE_PASS_INVALID           = 0xff              /* 无效值 */
}NETDEV_FACE_PASS_RECORD_TYPE_E;

/**
* @enum tagNETDEVPersonResultCode
* @brief 人脸处理结果状态码
* @attention 无 None
*/
typedef enum tagNETDEVPersonResultCode
{
    NETDEV_PERSON_CODE_SUCCEED                        = 0,               /* 成功 */
    NETDEV_PERSON_CODE_COMMON_FAIL                    = 1,               /* 通用执行失败 */
    NETDEV_PERSON_CODE_SENDING                        = 2,               /* 下发中 */
    NETDEV_PERSON_CODE_DEV_NOT_SUPPORT                = 4,               /* 设备不支持 */
    NETDEV_PERSON_CODE_ARGORITHM_INIT_FAIL            = 1000,            /* 算法初始化失败 */
    NETDEV_PERSON_CODE_FACE_DETECT_FAIL               = 1001,            /* 人脸检测失败 */
    NETDEV_PERSON_CODE_PICTURE_NO_FACE                = 1002,            /* 图片未检测到人脸 */
    NETDEV_PERSON_CODE_JPEG_DECODE_FAIL               = 1003,            /* jpeg照片解码失败 */
    NETDEV_PERSON_CODE_PICTURE_QUALITY_LOW            = 1004,            /* 图片质量分数不满足 */
    NETDEV_PERSON_CODE_PICTURE_ZOOM_FAIL              = 1005,            /* 图片缩放失败 */
    NETDEV_PERSON_CODE_INTELLECT_DISABLE              = 1006,            /* 未启用智能 */
    NETDEV_PERSON_CODE_PICTURE_TOO_SMALL              = 1007,            /* 导入图片过小 */
    NETDEV_PERSON_CODE_PICTURE_TOO_LARGE              = 1008,            /* 导入图片过大 */
    NETDEV_PERSON_CODE_RESOLUTION_TOO_LARGE           = 1009,            /* 导入图片分辨率超过1920*1080 */
    NETDEV_PERSON_CODE_PICTURE_NON_EXISTENT           = 1010,            /* 导入图片不存在 */
    NETDEV_PERSON_CODE_FACE_ELEMENTS_LIMIT            = 1011,            /* 人脸元素个数已达到上限 */
    NETDEV_PERSON_CODE_INTELLECT_MODULE_MISMATCH      = 1012,            /* 智能棒算法模型不匹配 */
    NETDEV_PERSON_CODE_DOCUMENT_ID_INVLID             = 1013,            /* 人脸导入库成员证件号非法 */
    NETDEV_PERSON_CODE_PICTURE_FORMAT_ERROR           = 1014,            /* 人脸导入库成员图片格式错误 */
    NETDEV_PERSON_CODE_MONITOR_DEVICE_LIMIT           = 1015,            /* 通道布控已达设备能力上限 */
    NETDEV_PERSON_CODE_FACE_LIBRARY_LOCKED            = 1016,            /* 其它客户端正在进行操作人脸库 */
    NETDEV_PERSON_CODE_FACE_LIBRARY_UPDATING          = 1017,            /* 人脸库文件正在更新中 */
    NETDEV_PERSON_CODE_JSON_DESERIALIZE_FAIL          = 1018,            /* Json反序列化失败 */
    NETDEV_PERSON_CODE_BASE64_DECODE_FAIL             = 1019,            /* Base64解码失败 */
    NETDEV_PERSON_CODE_PICTURE_SIZE_MISMATCH          = 1020,            /* 人脸照片，编码后的大小和实际接收到的长度不一致 */
    NETDEV_PERSON_CODE_DEV_PROTOCOL_DIFFER            = 1021,            /* 布控任务只能选择相同图片接入协议的设备 */
    NETDEV_PERSON_CODE_INVALID                        = 0xff             /* 无效值 */
}NETDEV_PERSON_RESULT_CODE_E;

/**
 * @enum tagNETDEVPersonMonitorOptResCode
 * @brief 人脸布控操作结果错误码
 * @attention 仅VMS支持
 */
typedef enum tagNETDEVPersonMonitorOptResCode
{
    NETDEV_PERSON_MONITOR_CODE_INIT_DETECT_FAIL             = 11702,           /* 初始化检测失败 */
    NETDEV_PERSON_MONITOR_CODE_FACE_DETECT_FAIL             = 11703,           /* 人脸检测失败 */
    NETDEV_PERSON_MONITOR_CODE_IMAGE_NOT_FIND_FACE          = 11704,           /* 图片未检测到人脸 */
    NETDEV_PERSON_MONITOR_CODE_JPEG_PARSE_FAIL              = 11705,           /* jpeg照片解码失败 */
    NETDEV_PERSON_MONITOR_CODE_IMAGE_MASS_NOT_ENOUGH        = 11706,           /* 人脸图片质量分数不满足 */
    NETDEV_PERSON_MONITOR_CODE_IMAGE_ZOOM_FAIL              = 11707,           /* 图片缩放失败 */
    NETDEV_PERSON_MONITOR_CODE_NOT_START_SMART              = 11708,           /* 未启用智能 */
    NETDEV_PERSON_MONITOR_CODE_PICTURE_TOO_SMALL            = 11709,           /* 导入图片过小 */
    NETDEV_PERSON_MONITOR_CODE_CREATE_FACE_LIB_FAIL         = 11710,           /* 创建人脸库失败 */
    NETDEV_PERSON_MONITOR_CODE_CREATE_MONITOR_FAIL          = 11711,           /* 创建布控任务失败 */
    NETDEV_PERSON_MONITOR_CODE_PICTURE_TOO_LARGE            = 11714,           /* 导入图片过大 */
    NETDEV_PERSON_MONITOR_CODE_RESOLUTION_TOO_LARGE         = 11715,           /* 导入图片分辨率超过1920*1080 */
    NETDEV_PERSON_MONITOR_CODE_PICTURE_NON_EXISTENT         = 11716,           /* 导入图片不存在 */
    NETDEV_PERSON_MONITOR_CODE_FACE_ELEMENTS_LIMIT          = 11717,           /* 人脸元素个数已达到上限 */
    NETDEV_PERSON_MONITOR_CODE_INTELLECT_MODULE_MISMATCH    = 11718,           /* 智能棒算法模型不匹配 */
    NETDEV_PERSON_MONITOR_CODE_DOCUMENT_ID_INVLID           = 11719,           /* 人脸导入库成员证件号非法 */
    NETDEV_PERSON_MONITOR_CODE_PICTURE_FORMAT_ERROR         = 11720,           /* 人脸导入库成员图片格式错误 */
    NETDEV_PERSON_MONITOR_CODE_MONITOR_DEVICE_LIMIT         = 11721,           /* 通道布控已达设备能力上限 */
    NETDEV_PERSON_MONITOR_CODE_FACE_LIBRARY_LOCKED          = 11722,           /* 其它客户端正在进行操作人脸库 */
    NETDEV_PERSON_MONITOR_CODE_FACE_LIBRARY_UPDATING        = 11723,           /* 人脸库文件正在更新中 */
    NETDEV_PERSON_MONITOR_CODE_JSON_DESERIALIZE_FAIL        = 11724,           /* Json反序列化失败 */
    NETDEV_PERSON_MONITOR_CODE_BASE64_DECODE_FAIL           = 11725,           /* Base64解码失败 */
    NETDEV_PERSON_MONITOR_CODE_PICTURE_SIZE_MISMATCH        = 11726            /* 人脸照片，编码后的大小和实际接收到的长度不一致 */
}NETDEV_PERSON_MONITOR_OPT_RES_CODE_E;

/**
 * @brief 5ePTZ显示模式 枚举定义  5ePTZ display mode Enumeration definition
 * @attention 无 None
 */
typedef enum tagNETDEVPTZDisplayMode
{
    NETDEV_PTZ_DISPLAY_ORIGINAL = 0,    /*原始图像*/
    NETDEV_PTZ_DISPLAY_5PTZ     = 1,    /*全景+5ePTZ模式*/

    NETDEV_PTZ_DISPLAY_INVALID  = 0xff  /* 无效值 */
}NETDEV_PTZ_DISPLAY_MODE_E;

/**
 * @enum tagNETDEVVehLaneType
 * @brief 车道类型
 * @attention 无 None
 */
typedef enum tagNETDEVVehLaneType
{
    NETDEV_VEH_LANE_TYPE_ENTRANCE                = 0,               /* 入口 */
    NETDEV_VEH_LANE_TYPE_EXIT_NOCHARGE           = 1,               /* 出口，不收费 */
    NETDEV_VEH_LANE_TYPE_EXITE_CHARGE            = 2,               /* 出口，收费 */
    NETDEV_VEH_LANE_TYPE_INVALID                 = 0xFF             /* 无效值 */
}NETDEV_VEH_LANE_TYPE_E;

/**
 * @enum tagNETDEVChgRuleType
 * @brief 收费规则类型
 * @attention 无 None
 */
typedef enum tagNETDEVChgRuleType
{
    NETDEV_CHG_RULE_TYPE_E_TEMPCHARGE              = 0,             /* 临时车收费规则 */
    NETDEV_CHG_RULE_TYPE_E_RECHARGE                = 1,             /* 固定车充值规则 */
    NETDEV_CHG_RULE_TYPE_E_ABNCHARGE               = 2,             /* 异常收费规则 */
    NETDEV_CHG_RULE_TYPE_E_INVALID                 = 0xFF           /* 无效值 */
}NETDEV_CHG_RULE_TYPE_E;

/**
 * @enum tagNETDEVVehReleaseType
 * @brief 车辆放行类型
 * @attention 无 None
 */
typedef enum tagNETDEVVehReleaseType
{
    NETDEV_VEH_RELEASE_TYPE_AUTO                 = 0,               /* 自动放行 */
    NETDEV_VEH_RELEASE_TYPE_MANUAL               = 1,               /* 手动放行 */
    NETDEV_VEH_RELEASE_TYPE_INVALID              = 0xFF             /* 无效值 */
}NETDEV_VEH_RELEASE_TYPE_E;

/**
 * @enum tagNETDEVVehAttrType
 * @brief 车辆属性(停车场专用)
 * @attention 无 None
 */
typedef enum tagNETDEVVehAttrType
{
    NETDEV_VEH_ATTR_FIXED                         = 0,                /* 固定车 */
    NETDEV_VEH_ATTR_TEMPORARY                     = 1,                /* 临时车 */
    NETDEV_VEH_ATTR_FIXEDOVERDUE                  = 2,                /* 固定车过期 */
    NETDEV_VEH_ATTR_INVALID                       = 0xFF              /* 无效值 */
}NETDEV_VEH_ATTR_TYPE_E;

/**
 * @enum tagNETDEVChgType
 * @brief 收费类型
 * @attention 无 None
 */
typedef enum tagNETDEVChgType
{
    NETDEV_CHG_TYPE_CASH                             = 0,                /* 现金收费 */
    NETDEV_CHG_TYPE_ALIPY                            = 1,                /* 支付宝收费 */
    NETDEV_CHG_TYPE_WECHAT                           = 2,                /* 微信收费 */
    NETDEV_CHG_TYPE_UNIONPAY                         = 3,                /* 银联收费 */
    NETDEV_CHG_TYPE_INVALID                          = 0xFF              /* 无效值 */
}NETDEV_CHG_TYPE_E;

/**
 * @enum tagNETDEVDateFormatType
 * @brief 日期格式类型
 * @attention 无 None
 */
typedef enum tagNETDEVDateFormatType
{
    NETDEV_DATE_FORMAT_TYPE_YMD                     = 0,                /* 年月日 */
    NETDEV_DATE_FORMAT_TYPE_MDY                     = 1,                /* 月日年 */
    NETDEV_DATE_FORMAT_TYPE_DMY                     = 2,                /* 日月年 */
    NETDEV_DATE_FORMAT_TYPE_INVALID                 = 0xFF              /* 无效值 */
}NETDEV_DATE_FORMAT_TYPE_E;

/**
 * @enum tagNETDEVAgeRange
 * @brief 年龄段
 * @attention 
 */
typedef enum tagNETDEVAgeRange
{
    NETDEV_AGE_RANGE_UNKNOW                                = 0,                /* 未知 */
    NETDEV_AGE_RANGE_CHILD                                 = 1,                /* 儿童 */
    NETDEV_AGE_RANGE_JUVENILE                              = 2,                /* 少年 */
    NETDEV_AGE_RANGE_Youth                                 = 3,                /* 青年 */
    NETDEV_AGE_RANGE_MIDDLEAGE                             = 4,                /* 中年 */
    NETDEV_AGE_RANGE_OLDAGE                                = 5,                /* 老年 */
    NETDEV_AGE_RANGE_INVALID                               = 0xFF              /* 无效年龄段 */
}NETDEV_AGE_RANGE_E;

/**
 * @enum tagNETDEVEthicCode
 * @brief 民族代码
 * @attention 
 */
typedef enum tagNETDEVEthicCode
{
    NETDEV_ETHIC_CODE_UNKNOW                               = 0,                /* 未知 */
    NETDEV_ETHIC_CODE_UYGUR                                = 1,                /* 维吾尔族 */
    NETDEV_ETHIC_CODE_OTHER                                = 2,                /* 其它 */
    NETDEV_ETHIC_CODE_INVALID                              = 0xFF              /* 无效值 */
}NETDEV_ETHIC_CODE_E;

/**
 * @enum tagNETDEVGlassFlag
 * @brief 是否戴眼镜标志
 * @attention 
 */
typedef enum tagNETDEVGlassFlag
{
    NETDEV_GLASS_FLAG_UNKNOW                              = 0,                 /* 未知 */
    NETDEV_GLASS_FLAG_NO                                  = 1,                 /* 不戴 */
    NETDEV_GLASS_FLAG_YES                                 = 2,                 /* 戴 */
    NETDEV_GLASS_FLAG_INVALID                             = 0xFF               /* 无效值 */
}NETDEV_GLASS_FLAG_E;

/**
 * @enum tagNETDEVGlassesStyle
 * @brief 眼镜款式
 * @attention 
 */
typedef enum tagNETDEVGlassesStyle
{
    NETDEV_GLASSES_STYLE_UNKNOW                            = 0,                 /* 未知 */
    NETDEV_GLASSES_STYLE_GENERAL                           = 1,                 /* 普通眼镜 */
    NETDEV_GLASSES_STYLE_SUNLIGHT                          = 2,                 /* 太阳眼镜 */
    NETDEV_GLASSES_STYLE_OTHER                             = 99,                /* 其它 */
    NETDEV_GLASSES_STYLE_INVALID                           = 0xFF               /* 无效值 */
}NETDEV_GLASSES_STYLE_E;

/**
 * @enum tagNETDEVMaskFlag
 * @brief 是否戴口罩
 * @attention 
 */
typedef enum tagNETDEVMaskFlag
{
    NETDEV_MASK_FLAG_UNKNOW                        = 0,                 /* 未知 */
    NETDEV_MASK_FLAG_NOT_WEAR                      = 1,                 /* 不戴 */
    NETDEV_MASK_FLAG_WEAR                          = 2,                 /* 戴 */
    NETDEV_MASK_FLAG_INVALID                       = 0xFF               /* 无效值 */
}NETDEV_MASK_FLAG_E;

/**
 * @enum tagNETDEVSleevesLength
 * @brief 上衣长短款式
 * @attention 
 */
typedef enum tagNETDEVSleevesLength
{
    NETDEV_SLEEVES_LENGTH_UNKNOW                           = 0,                 /* 未知 */
    NETDEV_SLEEVES_LENGTH_SHORT                            = 1,                 /* 短袖 */
    NETDEV_SLEEVES_LENGTH_LONG                             = 2,                 /* 长袖 */
    NETDEV_SLEEVES_LENGTH_INVALID                          = 0xFF               /* 无效值 */
}NETDEV_SLEEVES_LENGTH_E;

/**
 * @enum tagNETDEVTrousersLength
 * @brief 下衣长短款式
 * @attention 
 */
typedef enum tagNETDEVTrousersLength
{
    NETDEV_TROUSERS_LENGTH_UNKNOW                           = 0,                 /* 未知 */
    NETDEV_TROUSERS_LENGTH_SHORT                            = 1,                 /* 短裤 */
    NETDEV_TROUSERS_LENGTH_LONG                             = 2,                 /* 长裤 */
    NETDEV_TROUSERS_LENGTH_INVALID                          = 0xFF               /* 无效值 */
}NETDEV_TROUSERS_LENGTH_E;

/**
 * @enum tagNETDEVBodyToward
 * @brief 身体抓拍朝向
 * @attention 
 */
typedef enum tagNETDEVBodyToward
{
    NETDEV_BODY_TOWARD_UNKNOW                              = 0,                 /* 未知 */
    NETDEV_BODY_TOWARD_POSITIVE                            = 1,                 /* 正面 */
    NETDEV_BODY_TOWARD_SIDE                                = 2,                 /* 侧面 */
    NETDEV_BODY_TOWARD_BACK                                = 3,                 /* 背面 */
    NETDEV_BODY_TOWARD_INVALID                             = 0xFF               /* 无效值 */
}NETDEV_BODY_TOWARD_E;

/**
 * @enum tagNETDEVShoesTubeLength
 * @brief 鞋子长短款式
 * @attention 
 */
typedef enum tagNETDEVShoesTubeLength
{
    NETDEV_SHOES_TUBE_LENGTH_UNKNOW                       = 0,                  /* 未知 */
    NETDEV_SHOES_TUBE_LENGTH_LONG                         = 1,                  /* 长筒靴 */
    NETDEV_SHOES_TUBE_LENGTH_SHORT                        = 2,                  /* 短筒靴/普通鞋 */
    NETDEV_SHOES_TUBE_LENGTH_INVALID                      = 0xFF                /* 无效值 */
}NETDEV_SHOES_TUBE_LENGTH_E;

/**
 * @enum tagNETDEVHairLength
 * @brief 发型长短
 * @attention 
 */
typedef enum tagNETDEVHairLength
{
    NETDEV_HAIR_LENGTH_UNKNOW                            = 0,                   /* 未知 */
    NETDEV_HAIR_LENGTH_LONG                              = 1,                   /* 长发 */
    NETDEV_HAIR_LENGTH_SHORT                             = 2,                   /* 短发 */
    NETDEV_HAIR_LENGTH_INVALID                           = 0xFF                 /* 无效值 */
}NETDEV_HAIR_LENGTH_E;

/**
 * @enum tagNETDEVBagFlag
 * @brief 是否携包标志
 * @attention 
 */
typedef enum tagNETDEVBagFlag
{
    NETDEV_BAG_FLAG_NO                                   = 0,                   /* 未带包 */
    NETDEV_BAG_FLAG_CARRY                                = 1,                   /* 拎包 */
    NETDEV_BAG_FLAG_BACK                                 = 2,                   /* 背包 */
    NETDEV_BAG_FLAG_INVALID                              = 0xFF                 /* 无效值 */
}NETDEV_BAG_FLAG_E;

/**
 * @enum tagNETDEVSpeedType
 * @brief 结构化场景中非机动车速度类型
 * @attention 
 */
typedef enum tagNETDEVSpeedType
{
    NETDEV_SPEED_TYPE_UNKNOW                             = 0,                   /* 未知 */
    NETDEV_SPEED_TYPE_STATIC                             = 1,                   /* 静止 */
    NETDEV_SPEED_TYPE_SLOW                               = 2,                   /* 慢速 */
    NETDEV_SPEED_TYPE_MEDIUM                             = 3,                   /* 中速 */
    NETDEV_SPEED_TYPE_FAST                               = 4,                   /* 快速 */
    NETDEV_SPEED_TYPE_INVALID                            = 0xFF                 /* 无效值 */
}NETDEV_SPEED_TYPE_E;

/**
 * @enum tagNETDEVImageDirection
 * @brief 结构化场景中非机动车相对画面运动方向
 * @attention 
 */
typedef enum tagNETDEVImageDirection
{
    NETDEV_IMAGE_DIRECTION_UNKNOW                        = 0,                   /* 未知 */
    NETDEV_IMAGE_DIRECTION_STATIC                        = 1,                   /* 静止 */
    NETDEV_IMAGE_DIRECTION_UP                            = 2,                   /* 向上 */
    NETDEV_IMAGE_DIRECTION_DOWN                          = 3,                   /* 向下 */
    NETDEV_IMAGE_DIRECTION_LEFT                          = 4,                   /* 向左 */
    NETDEV_IMAGE_DIRECTION_RIGHT                         = 5,                   /* 向右 */
    NETDEV_IMAGE_DIRECTION_LEFTUP                        = 6,                   /* 左上 */
    NETDEV_IMAGE_DIRECTION_LEFTDOWN                      = 7,                   /* 左下 */
    NETDEV_IMAGE_DIRECTION_RIGHTUP                       = 8,                   /* 右上 */
    NETDEV_IMAGE_DIRECTION_RIGHTDOWN                     = 9,                   /* 右下 */
    NETDEV_IMAGE_DIRECTION_INVALID                       = 0xFF                 /* 无效值 */
}NETDEV_IMAGE_DIRECTION_E;

/**
 * @enum tagNETDEVNonVehType
 * @brief 非机动车类型
 * @attention 
 */
typedef enum tagNETDEVNonVehType
{
    NETDEV_NON_VEH_TYPE_UNKNOW                           = 0,                   /* 未知 */
    NETDEV_NON_VEH_TYPE_BICYCLE                          = 1,                   /* 人力自行车 */
    NETDEV_NON_VEH_TYPE_TRIYCLE                          = 2,                   /* 三轮车 */
    NETDEV_NON_VEH_TYPE_MOTORCYCLE                       = 3,                   /* 摩托车 */
    NETDEV_NON_VEH_TYPE_ELECTRIC_BICYCLE                 = 4,                   /* 电动自行车 */
    NETDEV_NON_VEH_TYPE_TWOWHEEL_VEHICLE                 = 5,                   /* 二轮车（摩托车/人力自行车/电动自行车) */
    NETDEV_NON_VEH_TYPE_INVALID                          = 0xFF                 /* 无效值 */
}NETDEV_NON_VEH_TYPE_E;

/**
 * @enum tagNETDEVImageFormat
 * @brief 图像格式
 * @attention 
 */
typedef enum tagNETDEVImageFormat
{
    NETDEV_IMAGE_FORMAT_JPG                              = 0,                   /* JPG */
    NETDEV_IMAGE_FORMAT_BMP                              = 1,                   /* BMP */
    NETDEV_IMAGE_FORMAT_PNG                              = 2,                   /* PNG */
    NETDEV_IMAGE_FORMAT_GIF                              = 3,                   /* GIF */
    NETDEV_IMAGE_FORMAT_TIFF                             = 4,                   /* TIFF */
    NETDEV_IMAGE_FORMAT_INVALID                          = 0xFF                 /* 无效值 */
}NETDEV_IMAGE_FORMAT_E;

/**
* @enum tagNETDEVClothesColor
* @brief 衣服颜色 
* @attention 无 None
*/
typedef enum tagNETDEVClothesColor
{
    NETDEV_CLOTHES_COLOR_BLACK_E          = 0,            /* 黑色 */
    NETDEV_CLOTHES_COLOR_WHITE_E           = 1,           /* 白色 */
    NETDEV_CLOTHES_COLOR_GRAY_E            = 2,           /* 灰色 */
    NETDEV_CLOTHES_COLOR_RED_E             = 3,           /* 红色 */
    NETDEV_CLOTHES_COLOR_BLUE_E            = 4,           /* 蓝色 */
    NETDEV_CLOTHES_COLOR_YELLOW_E          = 5,           /* 黄色 */
    NETDEV_CLOTHES_COLOR_ORANGE_E          = 6,           /* 橙色 */
    NETDEV_CLOTHES_COLOR_BROWN_E           = 7,           /* 棕色 */
    NETDEV_CLOTHES_COLOR_GREEN_E           = 8,           /* 绿色 */
    NETDEV_CLOTHES_COLOR_PURPLE_E          = 9,           /* 紫色 */
    NETDEV_CLOTHES_COLOR_CYAN_E            = 10,          /* 青色 */
    NETDEV_CLOTHES_COLOR_PINK_E            = 11,          /* 粉色 */
    NETDEV_CLOTHES_COLOR_TRANSPARENT_E     = 12,          /* 透明 */
    NETDEV_CLOTHES_COLOR_SILVERYWHITE_E    = 13,          /* 银白 */
    NETDEV_CLOTHES_COLOR_DARK_E            = 14,          /* 深色 */
    NETDEV_CLOTHES_COLOR_LIGHT_E           = 15,          /* 浅色 */
    NETDEV_CLOTHES_COLOR_COLOURLESS        = 16,          /* 无色 */
    NETDEV_CLOTHES_COLOR_YELLOWGREEN       = 17,          /* 黄绿双色 */
    NETDEV_CLOTHES_COLOR_GRADUALGREEN      = 18,          /* 渐变绿色 */
    NETDEV_CLOTHES_COLOR_OTHER_E           = 99,          /* 其他 */
    NETDEV_CLOTHES_COLOR_UNKNOW_E          = 100,         /* 未知 */
    NETDEV_CLOTHES_COLOR_INVALID           = 0xFF         /* 无效值  Invalid value */
}NETDEV_CLOTHES_COLOR_E;

/**
* @enum tagNETDEVSupBoxDomeLinkage
* @brief 是否支持枪球联动
* @attention 无 None
*/
typedef enum tagNETDEVSupBoxDomeLinkage
{
    NETDEV_SUP_BOX_DOME_LINKAGE_NO        = 0,          /* 不支持 */
    NETDEV_SUP_BOX_DOME_LINKAGE_GUN       = 1,          /* 枪球联动枪机 */
    NETDEV_SUP_BOX_DOME_LINKAGE_DOME      = 2,          /* 枪球联动球机 */
    NETDEV_SUP_BOX_DOME_LINKAGE_INVALID   = 0xFF        /* 无效值 */
}NETDEV_SUP_BOX_DOME_LINKAGE_E;

/**
* @enum tagNETDEVlinkageType
* @brief 手动联动类型
* @attention 无 None
*/
typedef enum tagNETDEVlinkageType
{
    NETDEV_LINKAGE_TYPE_CLICK_TRACK           = 0,          /* 点击跟踪 */
    NETDEV_LINKAGE_TYPE_ENLARGE_FRAME         = 1,          /* 拉框放大 */
    NETDEV_LINKAGE_TYPE_3D_LOCATE             = 2,          /* 3D定位 */
    NETDEV_LINKAGE_TYPE_INVALID               = 0xFF        /* 无效值 */
}NETDEV_LINKAGE_TYPE_E;

/**
* @enum tagNETDEVMasterSlaveLinkage
* @brief 支持主从联动模式
* @attention 无 None
*/
typedef enum tagNETDEVMasterSlaveLinkage
{
    NETDEV_MASTER_SLAVE_LINKAGE_NO           = 0,           /* 不支持 */
    NETDEV_MASTER_SLAVE_LINKAGE_HOST         = 1,           /* 主从联动主机 */
    NETDEV_MASTER_SLAVE_LINKAGE_SLAVE        = 2,           /* 主从联动从机 */
    NETDEV_MASTER_SLAVE_LINKAGE_INVALID      = 0xFF         /* 无效值 */
}NETDEV_MASTER_SLAVE_LINKAGE_E;

/**
* @enum  tagNETDEVMotionDetectAreaType
* @brief 运动检测区域类型枚举 motion detection area type emnu
* @attention 无
*/
typedef enum tagNETDEVMotionDetectAreaType
{
    NETDEV_MOTION_DETECTION_AREA_TYPE_RECTANGLE         = 0,        /* 矩形区域  rectangle */
    NETDEV_MOTION_DETECTION_AREA_TYPE_MB                = 1,        /* 宏块区域  macro block */
    NETDEV_MOTION_DETECTION_AREA_TYPE_INVALID           = 0xff      /* 无效值 Invalid value */
}NETDEV_MOTION_DETECTION_AREA_TYPE_E;

/**
* @enum tagNETDEVNotificationType
* @brief 通知类型
* @attention 无 None
*/
typedef enum tagNETDEVNotificationType
{
    NETDEV_NOTIFICATION_TYPE_REALTIME        = 0,           /* 实时通知 */
    NETDEV_NOTIFICATION_TYPE_HISTORY         = 1,           /* 历史通知 */
    NETDEV_NOTIFICATION_TYPE_EARLYWARN       = 2            /* 预警通知 */
}NETDEV_NOTIFICATION_TYPE_E;

/**
* @enum  tagNETDEVNICWorkMode
* @brief 网卡工作模式枚举
* @attention 无
*/
typedef enum tagNETDEVNICWorkMode
{
    NETDEV_NIC_WORK_MODE_MULTI_ADDR_SET                 = 0,        /* 多址设定 */
    NETDEV_NIC_WORK_MODE_LOAD_BALANCE                   = 1,        /* 负载均衡 */
    NETDEV_NIC_WORK_MODE_NETWORK_FAULT_TOLERANCE        = 2,        /* 网络容错 */
    NETDEV_NIC_WORK_MODE_INVALID                        = 0xff      /* 无效值 */
}NETDEV_NIC_WORK_MODE_E;

/**
* @enum  tagNETDEVPortWorkMode
* @brief 网口工作模式枚举
* @attention 无
*/
typedef enum tagNETDEVPortWorkMode
{
    NETDEV_PORT_WORK_MODE_SELF_NEGOTIATION           = 0,        /* 自协商 */
    NETDEV_PORT_WORK_MODE_10M_FULL                   = 1,        /* 10M FULL */
    NETDEV_PORT_WORK_MODE_10M_HALF                   = 2,        /* 10M HALF */
    NETDEV_PORT_WORK_MODE_100M_FULL                  = 3,        /* 100M FULL */
    NETDEV_PORT_WORK_MODE_100M_HALF                  = 4,        /* 100M HALF */
    NETDEV_PORT_WORK_MODE_1000M_FULL                 = 5,        /* 1000M FULL */
    NETDEV_PORT_WORK_MODE_10M_AUTO                   = 6,        /* 10M AUTO */
    NETDEV_PORT_WORK_MODE_100M_AUTO                  = 7,        /* 100M AUTO */
    NETDEV_PORT_WORK_MODE_1000M_AUTO                 = 8,        /* 1000M AUTO */

    NETDEV_PORT_WORK_MODE_WIFI_NORMAL                = 20,       /* WiFi normal */
    NETDEV_PORT_WORK_MODE_WIFI_SOFTAP                = 21,       /* WiFi softAP */
    NETDEV_PORT_WORK_MODE_WIFI_SNIFFER               = 22,       /* WiFi sniffer */

    NETDEV_PORT_WORK_MODE_4G_NORMAL                  = 31,       /* 4G normal */

    NETDEV_PORT_WORK_MODE_INVALID                    = 0xff      /* 无效值 */
}NETDEV_PORT_WORK_MODE_E;

/**
* @enum tagNETDEVCapSrc
* @brief 采集来源
* @attention 无 None
*/
typedef enum tagNETDEVCapSrc
{
    NETDEV_CAP_SRC_FACE                      = 1,          /* 人脸识别终端采集的人脸信息 */
    NETDEV_CAP_SRC_ENTRANCE_GUARDCARD        = 2,          /* 读卡器采集的门禁卡信息 */
    NETDEV_CAP_SRC_ID                        = 3,          /* 读卡器采集的身份证信息 */
    NETDEV_CAP_SRC_GATE                      = 4,          /* 闸机采集的闸机信息 */
    NETDEV_CAP_SRC_INVALID                   = 0xff        /* 无效值 Invalid value */
}NETDEV_CAP_SRC_E;

/**
* @enum tagNETDEVMatchStatus
* @brief 匹配状态
* @attention 无 None
*/
typedef enum tagNETDEVMatchStatus
{
    NETDEV_MATCH_STATUS_SUCCESS               = 1,          /* 核验成功 */
    NETDEV_MATCH_STATUS_FAIL                  = 2,          /* 核验失败（比对失败) */
    NETDEV_MATCH_STATUS_NO_MONITOR_TIME       = 3,          /* 核验失败（对比成功，不在布控时间）*/
    NETDEV_MATCH_STATUS_BASE_MAP_COLLECT_SUCC = 4,          /* 底图采集成功 */
    NETDEV_MATCH_STATUS_BASE_MAP_COLLECT_FAIL = 5,          /* 底图采集失败 */
    NETDEV_MATCH_STATUS_INVALID               = 0xff        /* 无效值 Invalid value */
}NETDEV_MATCH_STATUS_E;

/**
* @enum tagNETDEVScaleEnabled
* @brief 缩放状态
* @attention 无 None
*/
typedef enum tagNETDEVScaleEnabled
{
    NETDEV_SCALE_ENABLED_NO                  = 0,           /* 不缩放 */
    NETDEV_SCALE_ENABLED_IN                  = 1,           /* 按比例 */
    NETDEV_SCALE_ENABLED_FULL                = 2,           /* 满比例 */
    NETDEV_SCALE_ENABLED_INVALID             = 0xFF         /* 无效值 */
}NETDEV_SCALE_ENABLED_E;

/**
* @enum  tagNETDEVRecordTypeEx
* @brief 录像类型
* @attention 无
*/
typedef enum tagNETDEVRecordTypeEx
{
    NETDEV_RECORD_TYPE_MANUALEX                     = 0x01,            /* 手动录像 */
    NETDEV_RECORD_TYPE_COMON                        = 0x02,            /* 通用类告警(NVR暂不支持) */
    NETDEV_RECORD_TYPE_MOVE_DETECT                  = 0x04,            /* 运动检测 */
    NETDEV_RECORD_TYPE_INPUT_SWITCH                 = 0x08,            /* 输入开关量报警 */
    NETDEV_RECORD_TYPE_VIDEO_LOSS                   = 0x10,            /* 视频丢失 */
    NETDEV_RECORD_TYPE_AUDIO_DETECTION              = 0x20,            /* 音频检测 */
    NETDEV_RECORD_TYPE_TRADEINFO                    = 0x40,            /* 交易信息(NVR暂不支持) */
    NETDEV_RECORD_TYPE_PLANNED                      = 0x80,            /* 计划录像 */
    NETDEV_RECORD_TYPE_FACE_DETECTION               = 0x100,           /* 人脸检测 */
    NETDEV_RECORD_TYPE_CROSS_LINE_DETECT            = 0x200,           /* 越界检测 */
    NETDEV_RECORD_TYPE_INTRUSION_DETECT             = 0x400,           /* 区域入侵 */
    NETDEV_RECORD_TYPE_IMAGE_BLURRY                 = 0x800,           /* 图像虚焦 */
    NETDEV_RECORD_TYPE_GLOBAL_SCENE_CHANGE          = 0x1000,          /* 场景变更 */
    NETDEV_RECORD_TYPE_INTE_MOTION                  = 0x2000,          /* 智能运动跟踪事件 */
    NETDEV_RECORD_TYPE_EMERGENCYBELL                = 0x4000,          /* 紧急铃告警 */
    NETDEV_RECORD_TYPE_FACEMATCH_BAACKLIST          = 0x8000,          /* 人脸识别黑名单告警(NVR暂不支持) */
    NETDEV_RECORD_TYPE_FACEMATCH_WHITELIST          = 0x10000,         /* 人脸识别白名单告警(NVR暂不支持) */
    NETDEV_RECORD_TYPE_REMAIN_ARTICLE               = 0x20000,         /* 物品遗留 */
    NETDEV_RECORD_TYPE_ARTICLE_MOVE                 = 0x40000,         /* 物品搬移 */
    NETDEV_RECORD_TYPE_PLATEMATCH_BAACKLIST         = 0x80000,         /* 车牌识别黑名单告警(NVR暂不支持) */
    NETDEV_RECORD_TYPE_PLATEMATCH_WHITELIST         = 0x100000,        /* 车牌识别黑白名单告警(NVR暂不支持) */
    NETDEV_RECORD_TYPE_HUMAN_DETECTION              = 0x200000,        /* 人形检测 */
    NETDEV_RECORD_TYPE_INVALID                      = 0xffffffff       /* 无效值 */
}NETDEV_RECORD_TYPE_EX_E;

/**
* @enum  tagstNETDEVEventRecordType
* @brief 事件录像类型
* @attention 无
*/
typedef enum tagstNETDEVEventRecordType
{
    NETDEV_EVENT_RECORD_TYPE_MOVE_DETECT               = 1,         /* 运动检测 */
    NETDEV_EVENT_RECORD_TYPE_ALARM_INPUT               = 2,         /* 报警输入 */
    NETDEV_EVENT_RECORD_TYPE_MA                        = 3,         /* 运动检测和告警存储(NVR暂不支持) */
    NETDEV_EVENT_RECORD_TYPE_M_A                       = 4,         /* 运动检测或告警存储(NVR暂不支持) */
    NETDEV_EVENT_RECORD_TYPE_MANUAL_STORAGE            = 5,         /* 手动存储(NVR暂不支持) */
    NETDEV_EVENT_RECORD_TYPE_BROKENNET                 = 6,         /* IPC断网报警(NVR暂不支持) */
    NETDEV_EVENT_RECORD_TYPE_THIRDSTREAM_STORAGE       = 7,         /* 第三流存储(NVR暂不支持) */
    NETDEV_EVENT_RECORD_TYPE_VIDEO_LOSS                = 8,         /* 视频丢失 */
    NETDEV_EVENT_RECORD_TYPE_AUDIO_DETECTION           = 9,         /* 音频检测 */
    NETDEV_EVENT_RECORD_TYPE_FACE_DETECTION            = 12,        /* 人脸检测 */
    NETDEV_EVENT_RECORD_TYPE_CROSS_LINE_DETECT         = 13,        /* 越界检测 */
    NETDEV_EVENT_RECORD_TYPE_INTRUSION_DETECT          = 14,        /* 区域入侵 */
    NETDEV_EVENT_RECORD_TYPE_ALL_ALARM                 = 15,        /* 所有智能告警(包括音频检测、人脸检测、越界检测、区域入侵) */
    NETDEV_EVENT_RECORD_TYPE_POS_EVENT                 = 16,        /* POS事件(NVR暂不支持) */
    NETDEV_EVENT_RECORD_TYPE_IMAGETOOBLURR             = 17,        /* 虚焦检测 */
    NETDEV_EVENT_RECORD_TYPE_GLOBAL_SCENE_CHANGE       = 18,        /* 场景变更 */
    NETDEV_EVENT_RECORD_TYPE_INTE_MOTION               = 19,        /* 智能运动跟踪事件 */
    NETDEV_EVENT_RECORD_TYPE_EMERGENCYBELL             = 20,        /* 紧急铃 */
    NETDEV_EVENT_RECORD_TYPE_FACEMATCH_BAACKLIST       = 21,        /* 人脸识别黑名单(NVR暂不支持) */
    NETDEV_EVENT_RECORD_TYPE_FACEMATCH_WHITELIST       = 22,        /* 人脸识别白名单(NVR暂不支持) */
    NETDEV_EVENT_RECORD_TYPE_REMAIN_ARTICLE            = 23,        /* 物品遗留 */
    NETDEV_EVENT_RECORD_TYPE_ARTICLE_MOVE              = 24,        /* 物品搬移 */
    NETDEV_EVENT_RECORD_TYPE_PLATEMATCH_BAACKLIST      = 25,        /* 车牌识别黑名单(NVR暂不支持) */
    NETDEV_EVENT_RECORD_TYPE_PLATEMATCH_WHITELIST      = 26,        /* 车牌识别白名单(NVR暂不支持) */
    NETDEV_EVENT_RECORD_TYPE_NO_LIST_PLAN              = 27,        /* 无名单计划(NVR暂不支持) */
    NETDEV_EVENT_RECORD_TYPE_HUMAN_DETECTION           = 28,        /* 人形检测 */
    NETDEV_EVENT_RECORD_TYPE_INVALID                   = 0xff       /* 无效值 */
}NETDEV_EVENT_RECORD_TYPE_E;

/**
* @enum tagNETDEVMapType
* @brief 地图类型
* @attention 无 None
*/
typedef enum tagNETDEVMapType
{
    NETDEV_MAP_TYPE_PICTURE        = 0,           /* 图片地图 */
    NETDEV_MAP_TYPE_ONLINE         = 1,           /* 在线地图 */
    NETDEV_MAP_TYPE_OFFLINE        = 2,           /* 离线地图 (暂不支持) */
    NETDEV_MAP_TYPE_INVALID        = 0xFF         /* 无效值 */
}NETDEV_MAP_TYPE_E;

/**
* @enum  tagNETDEVExcpAlarmCapType
* @brief 设备异常告警枚举
* @attention 无
*/
typedef enum tagNETDEVExcpAlarmCapType
{
    NETDEV_ALARM_TYPE_STOR_ERR                        = 201,          /* 存储错误 */

    NETDEV_ALARM_TYPE_PREVENT_REMOVE                  = 203,          /* 防拆报警 */
    NETDEV_ALARM_TYPE_IP_CONFLICT                     = 204,          /* IP冲突 */
    NETDEV_ALARM_TYPE_NET_OFF                         = 205,          /* 网络断开 */
    NETDEV_ALARM_TYPE_DISK_OFFLINE                    = 206,          /* 硬盘离线 */

    NETDEV_ALARM_TYPE_CPU_HIGHTEMP                    = 208,          /* CPU高温 */
    NETDEV_ALARM_TYPE_MAINBOARD_HIGHTEMP              = 209,          /* 主板高温 */
    NETDEV_ALARM_TYPE_DEVICE_HIGHTEMP                 = 210,          /* 设备高温 */
    NETDEV_ALARM_TYPE_DEVICE_LOWTEMP                  = 211,          /* 设备低温 */
    NETDEV_ALARM_TYPE_FAN_FAULT                       = 212,          /* 风扇故障 */
    NETDEV_ALARM_TYPE_LEDBOX_HIGHTEMP                 = 213,          /* 电箱高温 */
    NETDEV_ALARM_TYPE_LEDBOX_SMOKE                    = 214,          /* 电箱烟雾告警 */

    NETDEV_ALARM_TYPE_DISK_ABNORMAL                   = 403,          /* 硬盘异常 */
    NETDEV_ALARM_TYPE_ILLEGAL_ACCESS                  = 404,          /* 非法访问 */

    NETDEV_ALARM_TYPE_STORAGE_WILL_FULL               = 410,          /* 存储即将满 */
    NETDEV_ALARM_TYPE_STORAGE_IS_FULL                 = 411,          /* 存储满 */

    NETDEV_ALARM_TYPE_VIDEO_CAPTURE_ABNORMAL          = 417           /* 录像/抓图异常 */
}NETDEV_EXCP_ALARM_CAP_TYPE_E;

/**
* @enum tagNETDEVOrderStatus
* @brief 订单支付状态
* @attention 无 None
*/
typedef enum tagNETDEVOrderStatus
{
    NETDEV_ORDER_STATUS_FINISH            = 0,        /* 未支付 */
    NETDEV_ORDER_STATUS_UNFINISH          = 1,        /* 已支付 */
    NETDEV_ORDER_STATUS_PREPAYMENT        = 2,        /* 预支付 */
    NETDEV_ORDER_STATUS_INVALID           = 0xff      /* 无效值 Invalid value */
}NETDEV_ORDER_STATUS_E;

/**
* @enum tagNETDEVPayType
* @brief 支付类型
* @attention 无 None
*/
typedef enum tagNETDEVPayType
{
    NETDEV_PAY_TYPE_CASH              = 0,        /* 现金支付 */
    NETDEV_PAY_TYPE_ALIPAY            = 1,        /* 支付宝支付 */
    NETDEV_PAY_TYPE_WECHAT            = 2,        /* 微信支付 */
    NETDEV_PAY_TYPE_INVALID           = 0xff      /* 无效值 Invalid value */
}NETDEV_PAY_TYPE_E;

/**
* @enum tagNETDEVLAPISubType
* @brief LAPI协议订阅类型
* @attention 无 None
*/
typedef enum tagNETDEVLAPISubType
{
    NETDEV_LAPI_SUB_TYPE_PARKRECOGNIZE           = 2048,      /* 停车场识别抓拍 */
    NETDEV_LAPI_SUB_TYPE_INVALID                 = 0xffffffff /* 无效值 Invalid value */
}NETDEV_LAPI_SUB_TYPE_E;

/**
* @enum  tagNETDEVAlarmSrcBelongType
* @brief 告警所属类型
* @attention 无
*/
typedef enum tagNETDEVAlarmSrcBelongType
{
    NETDEV_ALARM_SRC_BELONG_TYPE_OTHER                     = 0,            /* 其他 */
    NETDEV_ALARM_SRC_BELONG_TYPE_CHL                       = 1,            /* 通道类告警 */
    NETDEV_ALARM_SRC_BELONG_TYPE_DEV                       = 2,            /* 设备类告警 */
    NETDEV_ALARM_SRC_BELONG_TYPE_INVALID                   = 0xffff        /* 无效值 */
}NETDEV_ALARM_SRC_BELONG_TYPE_E;

/**
 * @brief 色温类型
 * @attention
 */
typedef enum tagNETDEVColorTemperature
{
    NETDEV_COLOR_TEMPERATURE_STANDARD               = 0,           /* 标准 */
    NETDEV_COLOR_TEMPERATURE_COOL                   = 1,           /* 冷色 */
    NETDEV_COLOR_TEMPERATURE_WARM                   = 2,           /* 暖色 */
    NETDEV_COLOR_TEMPERATURE_INVALID                = 0xff         /* 无效值 */
}NETDEV_COLOR_TEMPERATURE_E;

/**
 * @brief 级联方向
 * @attention
 */
typedef enum tagNETDEVCascadeDirection
{
    NETDEV_CASCADE_DIRECTION_RIGHT_TO_LEFT     = 1,        /* 从右到左 */
    NETDEV_CASCADE_DIRECTION_LEFT_TO_RIGHT     = 2,        /* 从左到右 */
    NETDEV_CASCADE_DIRECTION_BOTTOM_TO_TOP     = 3,        /* 从下到上 */
    NETDEV_CASCADE_DIRECTION_TOP_TO_BOTTOM     = 4,        /* 从上到下 */
    NETDEV_CASCADE_DIRECTION_INVALID           = 0xff         /* 无效值 */
}NETDEV_CASCADE_DIRECTION_E;

/**
 * @brief 消影模式
 * @attention
 */
typedef enum tagNETDEVBlankingMode
{
    NETDEV_BLANKING_MODE_ENHANCE     = 0,        /* 增强 */
    NETDEV_BLANKING_MODE_CLOSE       = 1,        /* 关闭 */
    NETDEV_BLANKING_MODE_DEFAULT     = 2,        /* 默认 */
    NETDEV_BLANKING_MODE_WEAKEN      = 3,        /* 减弱 */
    NETDEV_BLANKING_MODE_WEAKEST     = 4,        /* 最弱 */

    NETDEV_BLANKING_MODE_INVALID     = 0xff         /* 无效值 */
}NETDEV_BLANKING_MODE_E;

/**
 * @brief 逐点校正状态
 * @attention
 */
typedef enum tagNETDEVPointCalStatus
{
    NETDEV_POINT_CAL_STATUS_CLOSE      = 0,           /* 关闭 */
    NETDEV_POINT_CAL_STATUS_BRIGHT     = 1,           /* 亮度校正 */
    NETDEV_POINT_CAL_STATUS_CHROMA     = 2,           /* 色度校正 */
    NETDEV_POINT_CAL_STATUS_INVALID    = 0xff         /* 无效值 */
}NETDEV_POINT_CAL_STATUS_E;

/**
 * @brief 芯片类型
 * @attention
 */
typedef enum tagNETDEVRecvCardChipType
{
    NETDEV_RECV_CARD_CHIP_TYPE_LS9929  = 0,           /* LS9929 */
    NETDEV_RECV_CARD_CHIP_TYPE_ICN2153 = 1,           /* ICN2153 */
    NETDEV_RECV_CARD_CHIP_TYPE_ICN2065 = 2,           /* ICN2065 */
    NETDEV_RECV_CARD_CHIP_TYPE_ICN2069 = 3,           /* ICN2069 */

    NETDEV_RECV_CARD_CHIP_TYPE_INVALID = 0xff         /* 无效值 */
}NETDEV_RECV_CARD_CHIP_TYPE_E;

/**
 * @brief 拼缝校正显示模式
 * @attention
 */
typedef enum tagNETDEVSeamCalDisplayMode
{
    NETDEV_SEAM_CAL_DISPLAY_MODE_NORMAL    = 0,           /* 正常模式 */
    NETDEV_SEAM_CAL_DISPLAY_MODE_PIECE     = 1,           /* 拼缝模式 */

    NETDEV_SEAM_CAL_DISPLAY_MODE_INVALID = 0xff           /* 无效值 */
}NETDEV_SEAM_CAL_DISPLAY_MODE_E;

/**
 * @brief 场景业务模式
 * @attention
*/
typedef enum tagNETDEVSceneSessionMode
{
    NETDEV_SCENE_SESSION_MODE_CLASSICS = 0,               /* 经典模式 */
    NETDEV_SCENE_SESSION_MODE_ADAPTIVE_IN_SIGNAL_SRC = 1, /* 自适应输入信号源模式 */

    NETDEV_SCENE_SESSION_MODE_INVALID = 0xff              /* 无效值 */
}NETDEV_SCENE_SESSION_MODE_E;

/**
 * @brief 坏点消除类型
 * @attention
*/
typedef enum tagNETDEVClearBadPointType
{
    NETDEV_CLEAR_BAD_POINT_TYPE_CUSTOMED         = 0,     /* 自定义 */
    NETDEV_CLEAR_BAD_POINT_TYPE_COMMON           = 1,     /* 普通模式 */
    NETDEV_CLEAR_BAD_POINT_TYPE_ENHANCED         = 2,     /* 增强模式 */

    NETDEV_CLEAR_BAD_POINT_TYPE_INVALID = 0xff              /* 无效值 */
}NETDEV_CLEAR_BAD_POINT_TYPE_E;

/**
 * @enum tagNETDEVStorageCapUnit
 * @brief 存储容量单位 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVStorageCapUnit
{
    NETDEV_TYPE_STORAGE_CAP_UNIT_GB               = 0,        /* GB */
    NETDEV_TYPE_STORAGE_CAP_UNIT_MB               = 1,        /* MB */
    NETDEV_TYPE_STORAGE_CAP_UNIT_INVALID          = 0xff      /* 无效值 */
}NETDEV_STORAGE_CAP_UNIT_E;

/**
 * @enum tagNETDEVStorageResType
 * @brief 存储资源 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVStorageResType
{
    NETDEV_STORAGE_RES_TYPE_SD        = 0,     /* SD卡 */
    NETDEV_STORAGE_RES_TYPE_NAS       = 1,     /* NAS */
    NETDEV_STORAGE_RES_TYPE_INVALID   = 0xff   /* 无效值 */
}NETDEV_STORAGE_RES_TYPE_E;

/**
 * @enum tagNETDEVPicStorageMode
 * @brief 图片存储模式 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVPicStorageMode
{
    NETDEV_PIC_STORAGE_MODE_NORMAL             = 0,     /* 正常，上传服务器成功后删掉SD中的文件 */
    NETDEV_PIC_STORAGE_MODE_PERMANENT          = 1,     /* 永存，上传服务器不管是否成功，都会保存SD卡中的文件 */
    NETDEV_PIC_STORAGE_MODE_RETAIN             = 2,     /* 保留，上传服务器失败后保留SD卡上的文件 */
    NETDEV_PIC_STORAGE_MODE_INVALID            = 0xff   /* 无效值 */
}NETDEV_PIC_STORAGE_MODE_E;

/**
 * @enum tagNETDEVFullStrategyType
 * @brief 满存储策略 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVFullStrategyType
{
    NETDEV_FULL_STRATEGY_TYPE_FULL_COVERAGE              = 0,       /* 满覆盖 */
    NETDEV_FULL_STRATEGY_TYPE_FULL_STOP                  = 1,       /* 满即停 */
    NETDEV_FULL_STRATEGY_TYPE_INVALIDP                   = 0xff     /* 无效值 */
}NETDEV_FULL_STRATEGY_TYPE_E;

/**
* @struct tagNETDEVIVAShowRule
 * @brief 元数据显示类型
* @attention 无
*/
typedef enum tagNETDEVIVAShowRule
{
    NETDEV_IVA_SHOW_RULE                    = 0x00000001,          /* 显示规则线框 */
    NETDEV_IVA_SHOW_RESULT_TOUTH_RULE       = 0x00000002,          /* 显示触发规则目标框 */
    NETDEV_IVA_SHOW_RESULT_UNTOUTH_RULE     = 0x00000004,          /* 显示未触发规则目标框 */
    NETDEV_IVA_SHOW_TRACK                   = 0x00000008           /* 显示目标框轨迹 */
}NETDEV_IVA_SHOW_RULE_E;

/**
* @brief 后焦控制操作命令 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVBackFocusCmd
{
    NETDEV_BACKFOCUS_CMD_RESET              = 0,     /* 自动后焦复位 Para1可选  */
    NETDEV_BACKFOCUS_CMD_AUTO               = 1,     /* 表示自动后焦 Para1:自动后焦时间(ms) */
    NETDEV_BACKFOCUS_CMD_MANUAL             = 2,     /* 表示手动后焦 Para1:0-停止, 1-MBF+, 2-MBF- */
    NETDEV_BACKFOCUS_CMD_INVALID            = 0xffff /* 无效值 */
}NETDEV_BACKFOCUS_CMD_E;

/* END************* 枚举值  Enumeration value *************************** */

/* BEGIN*********** 结构体  Structure *********************************** */
/**
 * @brief 设备信息 结构体定义 Device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVDeviceInfo
{
    INT32   dwDevType;                          /* 设备类型,参见枚举#NETDEV_DEVICE_TYPE_E  Device type, see enumeration #NETDEV_DEVICE_TYPE_E */
    INT16   wAlarmInPortNum;                    /* 报警输入个数  Number of alarm inputs */
    INT16   wAlarmOutPortNum;                   /* 报警输出个数  Number of alarm outputs */
    INT32   dwChannelNum;                       /* 通道个数  Number of Channels */
    BYTE    byRes[48];                          /* 保留字段  Reserved */
}NETDEV_DEVICE_INFO_S,*LPNETDEV_DEVICE_INFO_S;

/**
 * @brief 设备基本信息 结构体定义 Basic device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVDeviceBasicInfo
{ 
    CHAR szDevModel[NETDEV_LEN_64];                     /* 设备型号  Device model */
    CHAR szSerialNum[NETDEV_LEN_64];                    /* 硬件序列号  Hardware serial number */
    CHAR szFirmwareVersion[NETDEV_LEN_64];              /* 软件版本号  Software version */
    CHAR szMacAddress[NETDEV_LEN_64];                   /* IPv4的Mac地址  MAC address of IPv4 */
    CHAR szDeviceName[NETDEV_LEN_64];                   /* 设备名称  Device name */
    CHAR szManufacturer[NETDEV_LEN_64];                 /* 厂商信息  Manufacturer */

    BYTE byRes[384];                                    /* 保留字段  Reserved */
}NETDEV_DEVICE_BASICINFO_S, *LPNETDEV_DEVICE_BASICINFO_S;

/**
 * @brief 网络配置信息 结构体定义 Network configuration information
 * @attention 无 None
 */
typedef struct tagNETDEVNetworkInterfaces
{
    INT32   dwMTU;                              /* MTU值  MTU value */
    BOOL    bIPv4DHCP;                          /* IPv4的DHCP  DHCP of IPv4 */
    CHAR    szIpv4Address[NETDEV_LEN_32];       /* IPv4的IP地址  IP address of IPv4 */
    CHAR    szIPv4GateWay[NETDEV_LEN_32];       /* IPv4的网关地址  Gateway of IPv4 */
    CHAR    szIPv4SubnetMask[NETDEV_LEN_32];    /* IPv4的子网掩码  Subnet mask of IPv4 */
    BYTE    byRes[480];                         /* 保留字段  Reserved */
}NETDEV_NETWORKCFG_S, *LPNETDEV_NETWORKCFG_S;

/**
 * @brief VPN客户端指定模式信息
 * @attention 无 None
 */
typedef struct tagNETDEVVPNClientInfo
{
    UINT32   udwEnabled;                                     /* 是否开启 对应兼容格式的一个开关0: 关闭 1: 开启 Support UNP or not，a switch that corresponds to a compatible format, enable 0:unable  1:enable*/
    UINT32   udwCompatibilityMode;                         /* 对应所设置的兼容模式 0: Unp1.0（unp） 1: Unp2.0 (softvpn). Corresponds to the set compatibility mode.0: Unp1.0（unp） 1: Unp2.0 (softvpn) */
    UINT32   udwAuthEnabled;                                 /* 鉴权是否开启。若为Unp2.0一定鉴权，为开启状态。0：关闭 1：开启 Authentication open or close, if is Unp2.0, must authentication and open. 0:close 1:open  */
    UINT32   udwEncryptEnabled;                              /* 加密是否开启兼容模式, 若当前开启兼容模式为Unp1.0 此字段需为使能关闭。0：关闭 1：开启 */
    UINT32   udwInterface;                                 /* 可选IPC 需要；NVR和VMS不需要。有线网口：0 ,4G 网口：1。范围：[0,1]*/
    CHAR     szLoginName[NETDEV_DOMAIN_LEN];               /* 可选：AuthEnable开启时，带此字段。服务器的用户名，不支持中文名。范围[0-63]*/
    CHAR     szPIN[NETDEV_LEN_256];                        /* 可选：AuthEnable开启时，带此字段服务器的用户密码范围[0,256],不修改接入登录密码时不必携带，修改接入登录密码时必携带*/
    UINT32   udwAddressType;
    CHAR     szAddress[NETDEV_IPADDR_STR_MAX_LEN];         /* AddressType：IP地址类型。 0: IPv4 1: IPv6 2:域名 3: IPv4和IPv6都需要.当前仅支持IPv4*/
    UINT32   udwPort;                                      /* 可选;NVR 和VMS需要此字段，对应兼容格式的服务器端口，范围[1-65535]，兼容Unp1.0默认值1701；兼容Unp2.0 默认是5555*/ 
    UINT32   udwUNPSuccessd;                               /* UNP成功连接 标识符 (查询返回表示当前对应UNP有无分配对应ip,掩码,路由)。1 成功，0 失败，获取时携带。*/
    CHAR     szUNPShareIPAddr[NETDEV_IPADDR_STR_MAX_LEN];  /* UNP成功连接 服务器所分配的对应地址 (查询并连接成功才返回,非输入参数) */
    CHAR     szUNPShareMask[NETDEV_IPADDR_STR_MAX_LEN];    /* UNP成功连接 服务器所分配的对应掩码(查并连接成功才返回,非输入参数) */ 
    CHAR     szUNPShareWayAddr[NETDEV_IPADDR_STR_MAX_LEN]; /* UNP成功连接 服务器所分配的对应的路由(查询并连接成功才返回,非输入参数) */
    BYTE     byRes[256];                                   /* 保留字节  Reserved*/
}NETDEV_VPN_CLIENT_INFO_S, *LPNETDEV_VPN_CLIENT_INFO_S;

/**
 * @brief 地址 结构体定义 Address Structure definition 
 * @attention 无 None
 */
typedef struct tagSysemIPAddr
{
    INT32   eIPType;                            /* 协议类型参见枚举#NETDEV_HOSTTYPE_E  Protocol type, see enumeration #NETDEV_HOSTTYPE_E */
    CHAR    szIPAddr[NETDEV_LEN_132];           /* IP地址  IP address */
}NETDEV_SYSTEM_IPADDR_S, *LPNETDEV_SYSTEM_IPADDR_S;

/**
 * @brief  NTP参数 NTP parameter
 * @attention 无 None
 */
typedef struct tagNETDEVSystemNTPInfo
{
    BOOL bSupportDHCP;                      /* 是否支持DHCP  Support DHCP or not */
    NETDEV_SYSTEM_IPADDR_S stAddr;          /* NTP 信息  NTP information */
}NETDEV_SYSTEM_NTP_INFO_S, *LPNETDEV_SYSTEM_NTP_INFO_S;


typedef struct tagSysemIPAddrInfo
{
    BOOL         bEnabled;                      /*NTP服务器使能 0：不开启  1：开启  NTP Server enable 0:unable  1:enable */
    INT64        ulAddressType;                    /*地址类型 0：IPv4  1：IPv6(暂不支持)  2: 域名（NVR和一体机支持） Address type  0:IPv4  1:IPv6(Temporary does not support)  2:domain name(NVR and AIO support)*/
    CHAR         szIPAddress[NETDEV_LEN_64];     /* NTP服务器IP地址，字符长度范围[0, 64] AddressType 为0时，该节点必选
                                                 The IP address of the NTP server ,character length range [0,64]. When address type is 0,the node must be selected. */
    CHAR         szDomainName[NETDEV_LEN_64];    /*NTP服务器域名，字符长度范围[ [0， 64] AddressType 为2时，该节点必选
                                                 The domain name of the NTP server ,character length range [0,64]. When address type is 2,the node must be selected.*/
    INT64        ulPort;                        /*NTP端口，范围[1-65535]  IPC不支持配置。 NTP Port ,the range of [1-65535]. IPC does not support this configuration. */
    INT64        ulSynchronizeInterval;         /*更新间隔 NVR、VMS支持范围： 5/10/15/30分钟，1/2/3/6/12h，1天，1周。IPC支持范围：30-3600s，以上时间周期，都需要转换为秒为单位的时间值。
                                                 Synchronize Interval: The support range of NVR and VMS is 5/10/15/30 minutes ,1/2/3/6/12 hours ,1 day ,and 1 week.The support range of IPC is 30-3600 seconds.
                                                 All of the above time periods need to be converted to a time value in seconds.*/
    BYTE         byRes[128];                    /*保留字段  Reserved*/
}NETDEV_SYSTEM_IPADDR_INFO_S, *LPNETDEV_SYSTEM_IPADDR_INFO_S;

typedef struct tagNETDEVSystemNTPInfoList
{
    INT64                              ulNum;                                             /*NTP服务器个数  NTP Server Number*/
    NETDEV_SYSTEM_IPADDR_INFO_S        astNTPServerInfoList[NETDEV_NTP_SERVER_LIST_NUM];  /*NTP服务器列表当前只支持一个NTP服务器 The NTP server list currently supports only one NTP server.*/
    BYTE                               byRes[128];                                          /*保留字段   Reserved*/
}NETDEV_SYSTEM_NTP_INFO_LIST_S, *LPNETDEV_SYSTEM_NTP_INFO_LIST_S;

typedef enum tagNETDEVStartStreamProt
{
    NETDEV_START_STREAM_PROT_UDP      =1,
    NETDEV_START_STREAM_PROT_TCP      =2,
    NETDEV_START_STREAM_PROT_RTSP     =3,
    NETDEV_START_STREAM_PROT_HTTP     =4,
    NETDEV_START_STREAM_PROT_INVALID  =0xff
}NETDEV_START_STREAM_PROT_E;


/**
 * @brief 实况预览参数 结构体定义 Live view parameter Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVPriviewInfo
{
    INT32   dwChannelID;                 /* 通道ID  Channel ID */
    INT32   dwStreamType;                /* 码流类型,参见枚举#NETDEV_LIVE_STREAM_INDEX_E  Stream type, see enumeration #NETDEV_LIVE_STREAM_INDEX_E */
    INT32   dwLinkMode;                  /* 传输协议,参见枚举#NETDEV_PROTOCAL_E  Transport protocol, see enumeration #NETDEV_PROTOCAL_E */
    LPVOID  hPlayWnd;                    /* 播放窗口句柄 Play window handle */ 
    INT32   dwFluency;                   /* 图像播放流畅性优先类型,参见枚举#NETDEV_PICTURE_FLUENCY_E */
    INT32   dwStreamMode;                /* 流模式 参见枚举#NETDEV_STREAM_MODE_E  start stream mode see #NETDEV_STREAM_MODE_E*/
    INT32   dwLiveMode;                  /* 启流模式 参见枚举#NETDEV_PULL_STREAM_MODE_E */
    INT32   dwDisTributeCloud;           /* 分发能力 参见枚举#NETDEV_DISTRIBUTE_CLOUD_SRV_E */
    BOOL    dwallowDistribution;         /* 该通道是否支持分发*/
    INT32   dwTransType;                 /* 传输类型，参见枚举#NETDEV_TRANS_TYPE_E */
    INT32   dwStreamProtocol;            /* 起流协议，参见枚举# NETDEV_START_STREAM_PROT_E*/
    BYTE    byRes[236];                  /* 保留字段  Reserved */
}NETDEV_PREVIEWINFO_S, *LPNETDEV_PREVIEWINFO_S;

/**
 * @brief 实况影像信息 结构体定义 Live image information Structure definition
 * @attention 伽马参数范围0-10,其它参数取值范围0-255 Gamma parameter range: 0-10, other parameters: 0-255
 */
typedef struct tagNETDEVVideoEffect
{
    INT32 dwContrast;                   /* 对比度  Contrast */
    INT32 dwBrightness;                 /* 亮度  Brightness */
    INT32 dwSaturation;                 /* 饱和度  Saturation */
    INT32 dwHue;                        /* 色调  Hue */
    INT32 dwGamma;                      /* 伽玛值  Gamma */
    BYTE  byRes[16];                    /* 保留字段  Reserved */
}NETDEV_VIDEO_EFFECT_S, *LPNETDEV_VIDEO_EFFECT_S;

/**
 * @brief 设备图像设置 结构体定义    Device image settings Structure definition
 * @attention 参数取值范围：0-255     parameter range: 0-255
 */
typedef struct tagNETDEVImagingSetting
{
    INT32 dwContrast;                   /* 对比度  Contrast */
    INT32 dwBrightness;                 /* 亮度  Brightness */
    INT32 dwSaturation;                 /* 饱和度  Saturation */
    INT32 dwSharpness;                  /* 亮度  Sharpness */
    BYTE  byRes[252];                   /* 保留字段  Reserved */
}NETDEV_IMAGE_SETTING_S, *LPNETDEV_IMAGE_SETTING_S;

/************ 回放业务 Playback services***********************************************/

/**
 * @brief 录像查找 结构体定义 Recording query Structure definition
 *        根据文件类型.时间查找设备录像文件 Query recording files according to file type and time
 * @attention 无 None
 */
typedef struct tagNETDEVFindCond
{
    CHAR    szFileName[NETDEV_LEN_64];      /* 录像文件名  Recording file name */
    INT32   dwChannelID;                    /* 通道号  Channel ID */
    INT32   dwStreamType;                   /* 码流类型,参见枚举#NETDEV_LIVE_STREAM_INDEX_E  Stream type, see enumeration #NETDEV_LIVE_STREAM_INDEX_E */
    INT32   dwFileType;                     /* 录像存储类型,参见枚举# NETDEV_STORE_TYPE_E  Recording storage type, see enumeration #NETDEV_STORE_TYPE_E */
    INT64   tBeginTime;                     /* 起始时间  Start time */
    INT64   tEndTime;                       /* 结束时间  End time */
    INT32   dwRecordLocation;               /* 录像存储位置 Record Position, 参见枚举#NETDEV_RECORD_LOCATION_E */
    UINT32  udwServerID;                    /* 录像所属服务器ID Video server ID */
    BYTE    byRes[28];                      /* 保留字段  Reserved */
}NETDEV_FILECOND_S, *LPNETDEV_FILECOND_S;

/**
 * @brief 录像查找数据 结构体定义 Recording query data Structure definition
 *        逐个获取查找到的文件信息 Get the information of found files one by one
 * @attention 无 None
 */
typedef struct tagNETDEVFindData
{
    CHAR    szFileName[NETDEV_FILE_NAME_LEN];               /* 录像文件名  Recording file name */
    INT64   tBeginTime;                                     /* 起始时间  Start time */
    INT64   tEndTime;                                       /* 结束时间  End time */
    BYTE    byFileType;                                     /* 录像存储类型  参见枚举#NETDEV_STORE_TYPE_E Recording storage type #NETDEV_STORE_TYPE_E */
    UINT32  udwServerID;                                    /* 录像所属服务器ID */
    UINT32  udwFileSize;                                    /* 录像文件大小 Recording file size */
    BYTE    byRes[163];                                     /* 保留字段  Reserved */
}NETDEV_FINDDATA_S,*LPNETDEV_FINDDATA_S;

/**
 * @brief 按文件名回放录像参数 结构体定义 Parameters of play back recordings by file name Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVPlayBackInfo
{
    char    szName[NETDEV_LEN_260];         /* 回放的控制块名称  Playback control block name*/
    INT64   tBeginTime;                     /* 回放开始时间  Playback start time */
    INT64   tEndTime;                       /* 回放结束时间  Playback end time */
    INT32   dwLinkMode;                     /* 传输协议,参见枚举#NETDEV_PROTOCAL_E  Transport protocol, see enumeration #NETDEV_PROTOCAL_E */
    LPVOID  hPlayWnd;                       /* 播放窗口句柄  Play window handle */
    INT32   dwFileType;                     /* 录像存储类型,参见枚举#NETDEV_PLAN_STORE_TYPE_E  Recording storage type, see enumeration #NETDEV_PLAN_STORE_TYPE_E */
    INT32   dwDownloadSpeed;                /* 下载速度 参见枚举#NETDEV_E_DOWNLOAD_SPEED_E  Download speed, see enumeration #NETDEV_E_DOWNLOAD_SPEED_E */
    INT32   dwStreamMode;                   /*  启流模式，参见枚举#NETDEV_STREAM_MODE_E  stream mode see #NETDEV_STREAM_MODE_E */
    BYTE    byRes[252];                     /* 保留字段  Reserved */
}NETDEV_PLAYBACKINFO_S, *LPNETDEV_PLAYBACKINFO_S;

/**
 * @brief 图像数据 结构体定义 Image data Structure definition
 *        存放解码后图像数据的指针和长度等信息 Storing pointer and length of decoded picture data
 * @attention 无 None
 */
typedef struct tagNETDEVPictureData
{
    BYTE    *pucData[4];                /* pucData[0]:Y 平面指针,pucData[1]:U 平面指针,pucData[2]:V 平面指针  pucData[0]: Y plane pointer, pucData[1]: U plane pointer, pucData[2]: V plane pointer */
    INT32   dwLineSize[4];              /* ulLineSize[0]:Y平面每行跨距, ulLineSize[1]:U平面每行跨距, ulLineSize[2]:V平面每行跨距  ulLineSize[0]: Y line spacing, ulLineSize[1]: U line spacing, ulLineSize[2]: V line spacing */
    INT32   dwPicHeight;                /* 图片高度  Picture height */
    INT32   dwPicWidth;                 /* 图片宽度  Picture width */
    INT32   dwRenderTimeType;           /* 用于渲染的时间数据类型  Time data type for rendering */
    INT64   tRenderTime;                /* 用于渲染的时间数据  Time data for rendering */
}NETDEV_PICTURE_DATA_S, *LPNETDEV_PICTURE_DATA_S;

/**
 * @struct tagNETDEVRecordFindCond
 * @brief 录像查询条件
 * @attention 无 None
 */
typedef struct tagNETDEVRecordFindCond
{
    UINT32 udwChannelID;                    /* 通道号 */
    UINT32 udwBegin;                        /* 录像开始时间，UTC时间格式，单位秒。若有开始时间，则必填结束时间 */
    UINT32 udwEnd;                          /* 录像结束时间，UTC时间格式，单位秒。若有结束时间，则必填开始时间 */
    UINT32 udwTypes;                        /* 需查询的录像类型 按BIT位进行描述 每个BIT位 对应一种录像类型 从右到左依次为第0位-第31位 详见 NETDEV_RECORD_TYPE_EX_E*/
    UINT32 udwRelationOfTypes;              /* 录像类型关系 0:与 1:或若不带Types字段，或只有一种录像类型，此字段不用填； 若录像类型有两种及以上，此字段必填 */
    UINT32 udwPosition;                     /* 录像播放的位置 1:本地录像 2:跨设备录像 此字段目前仅用于VMS */
    UINT32 udwSessionID;                    /* 建议一路回放流就会有一个相应的会话ID。此字段目前仅用于VMS */
    UINT32 udwTransType;                    /* 0:转发 1:直连 */
    BYTE    byRes[256];                     /* 保留字段  Reserved */
}NETDEV_RECORD_FIND_COND_S,*LPNETDEV_RECORD_FIND_COND_S;

/**
* 解码后视频流数据回调函数的指针类型  Type of pointer to callback function for decoded video stream data 
* @param [IN] lpPlayHandle      当前的实况播放句柄 Current live playing handle
* @param [IN] pstPictureData    存放解码后视频流数据信息缓冲区指针 Pointer to buffer that stores decoded video stream data
* @param [IN] lpUserParam       用户设置参数,即用户在调用#NDPlayer_SetDecodeVideoDataCB函数时指定的用户参数 User-set parameters, specified by users when they call the #NDPlayer_SetDecodeVideoDataCB function
* @return 无. None.
* @note
* -     1.用户应及时处理输出的视频流数据,确保函数尽快返回,否则会影响播放器内的媒体流处理.
* -     1. Users should handle output stream data in a timely manner so that functions can be returned quickly. Otherwise, stream processing in the player will be affected.
* -     2.视频数据是yv12格式.排列顺序“Y0-Y1-......”,“U0-U1-......”,“V0-V1-......”
* -     2. Video data is in yv12 format in sequence of Y0-Y1-......, U0-U1-......, V0-V1-......
*/
typedef void (STDCALL* NETDEV_DECODE_VIDEO_DATA_CALLBACK_PF)(IN LPVOID lpPlayHandle,
                                                             IN const NETDEV_PICTURE_DATA_S *pstPictureData,
                                                             IN LPVOID lpUserParam);

/**
 * @brief 按时间回放录像参数 结构体定义 Parameters of play back by time Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVPlayBackCondition
{
    INT32   dwChannelID;                /* 回放的通道  Playback channel */
    INT64   tBeginTime;                 /* 回放开始时间  Playback start time */
    INT64   tEndTime;                   /* 回放结束时间  Playback end time */
    INT32   dwLinkMode;                 /* 传输协议，参见枚举#NETDEV_TRANS_PROTOCAL_E */
    LPVOID  hPlayWnd;                   /* 播放窗口句柄  Play window handle */
    INT32   dwFileType;                 /* 录像存储类型，参见枚举#NETDEV_STORE_TYPE_E  */
    INT32   dwDownloadSpeed;            /* 下载速度 参见枚举#NETDEV_E_DOWNLOAD_SPEED_E  Download speed, see enumeration #NETDEV_E_DOWNLOAD_SPEED_E */
    INT32   dwStreamMode;               /* 启流模式，参见枚举#NETDEV_STREAM_MODE_E  stream mode see #NETDEV_STREAM_MODE_E */
    INT32   dwStreamIndex;              /* 存储码流类型, 参见枚举#NETDEV_LIVE_STREAM_INDEX_E */
    INT32   dwRecordLocation;           /* 录像存储位置 Record Position, 参见枚举#NETDEV_RECORD_LOCATION_E */
    INT32   dwTransType;                /* 传输类型，参见枚举#NETDEV_TRANS_TYPE_E */
    BOOL    bCloudStorage;              /* 是否开启云存储回放模式 */
    BOOL    bOneFrameEnable;            /* 是否开启单帧解码模式，开启后对解码效率有影响 */
    INT32   dwPlaySpeed;                /* 回放播放速度，参考枚举#NETDEV_VOD_PLAY_STATUS_E  Playback speed, see enumeration #NETDEV_VOD_PLAY_STATUS_E*/
    NETDEV_DECODE_VIDEO_DATA_CALLBACK_PF cbPlayDecodeVideoCALLBACK;       /* 解码后数据回调函数 Decode data callback function */
    INT64   tPlayTime;                  /* 播放时间  Playback time */
    UINT32  udwServerID;                /* 录像所属服务器ID Video server ID */
    BYTE    byRes[212];                 /* 保留字段   */
}NETDEV_PLAYBACKCOND_S, *LPNETDEV_PLAYBACKCOND_S;

/**
 * @brief 云台预置位信息 结构体定义 PTZ preset information Structure definition
 * @attention 无 None
 */
typedef struct tagstNETDEVPtzPreset
{
    INT32   dwPresetID;                                 /* 预置位ID  Preset ID */
    CHAR    szPresetName[NETDEV_LEN_32];                /* 预置位名称  Preset name */
}NETDEV_PTZ_PRESET_S, *LPNETDEV_PTZ_PRESET_S;

/**
 * @brief 所有云台预置位 结构体定义 All PTZ presets Structure definition
 * @attention 无 None
 */
typedef struct tagstNETDEVPtzAllPresets
{
    INT32               dwSize;                             /* 预置位总数  Total number of presets */
    NETDEV_PTZ_PRESET_S astPreset[NETDEV_MAX_PRESET_NUM];   /* 预置位信息结构体  Structure of preset information */
}NETDEV_PTZ_ALLPRESETS_S, *LPNETDEV_PTZ_ALLPRESETS_S;

/**
 * @brief 云台预置位巡航轨迹点信息 结构体定义 PTZ preset patrol point information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVCruisePoint
{
    INT32   dwPresetID;     /* 预置位ID  Preset ID */
    INT32   dwStayTime;     /* 停留时间  Stay time */
    INT32   dwSpeed;        /* 转动速度,范围[1-10]  Speed [1-10] */
    INT32   dwID;           /* 巡航动作ID */
}NETDEV_CRUISE_POINT_S, *LPNETDEV_CRUISE_POINT_S;

/**
 * @brief 云台预置位巡航路径详细信息 结构体定义 PTZ preset patrol route information Structure definition 
 * @attention 无 None
 */
typedef struct tagNETDEVCruiseInfo
{
    INT32                   dwCuriseID;                                     /* 轨迹ID  Route ID */
    CHAR                    szCuriseName[NETDEV_LEN_32];                    /* 轨迹名称  Route name */
    INT32                   dwSize;                                         /* 路径包含的轨迹点数量  Number of presets included in the route */
    NETDEV_CRUISE_POINT_S   astCruisePoint[NETDEV_MAX_CRUISEPOINT_NUM];     /* 路径包含的轨迹点信息   Information of presets included in the route */
}NETDEV_CRUISE_INFO_S, *LPNETDEV_CRUISE_INFO_S;

/**
 * @brief 云台预置位巡航路径列表 结构体定义 PTZ preset patrol route list Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVCruiseList
{
    INT32                   dwSize;                                         /* 巡航路径数量  Number of patrol routes */
    NETDEV_CRUISE_INFO_S    astCruiseInfo[NETDEV_MAX_CRUISEROUTE_NUM];      /* 巡航路径信息  Information of patrol routes */
}NETDEV_CRUISE_LIST_S, *LPNETDEV_CRUISE_LIST_S;

/**
 * @brief 云台轨迹巡航路径信息 结构体定义 Route information of PTZ route patrol Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVPtzTrackinfo
{
    INT32 dwTrackNum;                                               /* 已存在的巡航轨迹的数量  Number of existing patrol routes */
    CHAR  aszTrackName[NETDEV_TRACK_CRUISE_MAXNUM][NETDEV_LEN_64];  /* 轨迹名称  Route name */
}NETDEV_PTZ_TRACK_INFO_S, *LPNETDEV_PTZ_TRACK_INFO_S;

/**
 * @brief 云台轨迹巡航路径信息 结构体定义 Route information of PTZ route patrol Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVPtzTrackInfoV30
{
    UINT32 udwTrackID;                                                   /* 巡航轨迹的ID */
    CHAR   szTrackName[NETDEV_LEN_64];                                   /* 轨迹名称  RouteID */
    BYTE   byRes[64];                                                    /* 保留字段 */
}NETDEV_PTZ_TRACK_INFO_V30_S, *LPNETDEV_PTZ_TRACK_INFO_V30_S;

/**
 * @brief 云台轨迹巡航路径信息列表
 * @attention 无 None
 */
typedef struct tagNETDEVPtzTrackListV30
{
    INT32 dwTrackNum;                                                           /* 已存在的巡航轨迹的数量  Number of existing patrol routes */
    NETDEV_PTZ_TRACK_INFO_V30_S astTrackInfo[NETDEV_TRACK_CRUISE_MAXNUM];       /* 轨迹名称  RouteID */
}NETDEV_PTZ_TRACK_LIST_V30_S, *LPNETDEV_PTZ_TRACK_LIST_V30_S;

/**
 * @brief 云台状态 结构体定义 PTZ status Structure definition
 * @attention 绝对水平坐标与角度对应关系：0到1对应0到180度，-1到0对应180到360度  Absolute horizontal coordinates correspond to angles: 0 to 1 correspond to 0 to 180 degrees, and -1 to 0 correspond 180 to 360 degrees 
              绝对竖直坐标与角度对应关系：0到1对应0到90度  Absolute vertical coordinates correspond to angles: 0 to 1 correspond to 0 to 90 degrees 
              绝对聚焦倍数与实际倍数对应关系：0到1对应0到最大倍数  Absolute multiples correspond to the actual multiples: 0 to 1, correspond to 0 to maximum multiples 
 */
typedef struct tagNETDEVPTZStatus
{
    FLOAT                       fPanTiltX;              /* 绝对水平坐标  Absolute horizontal coordinates*/
    FLOAT                       fPanTiltY;              /* 绝对竖直坐标  Absolute vertical coordinates*/
    FLOAT                       fZoomX;                 /* 绝对聚焦倍数  Absolute multiples*/
    NETDEV_PTZ_MOVE_STATUS_E    enPanTiltStatus;        /* 云台状态  PTZ Status*/
    NETDEV_PTZ_MOVE_STATUS_E    enZoomStatus;           /* 聚焦状态  Focus Status*/
}NETDEV_PTZ_STATUS_S, *LPNETDEV_PTZ_STATUS_S;

/**
 * @brief 绝对坐标移动 结构体定义  Absolute coodinates Structure definition
 * @attention  绝对水平坐标与角度对应关系：0到1对应0到180度，-1到0对应180到360度  Absolute horizontal coordinates correspond to angles: 0 to 1 correspond to 0 to 180 degrees, and -1 to 0 correspond 180 to 360 degrees 
               绝对竖直坐标与角度对应关系：0到1对应0到90度  Absolute vertical coordinates correspond to angles: 0 to 1 correspond to 0 to 90 degrees 
               绝对聚焦倍数与实际倍数对应关系：0到1对应0到最大倍数  Absolute multiples correspond to the actual multiples: 0 to 1, correspond to 0 to maximum multiples 
 */
typedef struct tagNETDEVPTZAbsoluteMove
{
    FLOAT                       fPanTiltX;                          /* 绝对水平坐标 Absolute horizontal coordinates*/
    FLOAT                       fPanTiltY;                          /* 绝对竖直坐标 Absolute vertical coordinates*/
    FLOAT                       fZoomX;                             /* 绝对聚焦倍数 Absolute multiples*/
}NETDEV_PTZ_ABSOLUTE_MOVE_S, *LPNETDEV_PTZ_ABSOLUTE_MOVE_S;

/**
 * @brief 矩形区域 结构体定义 Rectangle Area  Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVRect
{
    INT32   dwLeft;                               /* x轴左点值[0,10000]  X axis left point value [0,10000] */
    INT32   dwTop;                                /* y轴顶点值[0,10000]  Y axis top point value [0,10000] */
    INT32   dwRight;                              /* x轴右点值[0,10000]  X axis right point value [0,10000] */
    INT32   dwBottom;                             /* y轴底点值[0,10000]  Y axis bottom point value [0,10000] */
}NETDEV_RECT_S, *LPNETDEV_RECT_S;

/**
 * @brief 图像区域信息 结构体定义 Image area information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVPtzOperateAreaInfo
{
    INT32   dwBeginPointX;      /* 区域起始点X值[0,10000]  Area start point X value [0,10000] */
    INT32   dwBeginPointY;      /* 区域起始点Y值[0,10000]  Area start point Y value [0,10000] */
    INT32   dwEndPointX;        /* 区域结束点X值[0,10000]  Area end point X value [0,10000] */
    INT32   dwEndPointY;        /* 区域结束点Y值[0,10000]  Area end point Y value [0,10000] */
}NETDEV_PTZ_OPERATEAREA_S, *LPNETDEV_PTZ_OPERATEAREA_S;


/**
 * @brief 云台拉框缩放结构体
 * @attention 无 None
 */
typedef struct tagNETDEVPTZZoomAreaInfo
{
    UINT32      udwMidPointX;      /* 拉框中心横坐标 */
    UINT32      udwMidPointY;      /* 拉框中心纵坐标 */
    UINT32      udwLengthX;        /* 拉框长度 */
    UINT32      udwLengthY;        /* 拉框宽度 */
    UINT32      udwWidth;          /* 实际播放窗口长度 */
    UINT32      udwHeight;         /* 实际播放窗口宽度 */
    BYTE        byRes[64];         /* 保留字段   */
}NETDEV_PTZ_ZOOM_AREA_INFO_S, *LPNETDEV_PTZ_ZOOM_AREA_INFO_S;


/**
 * @brief 云台轨迹巡航状态信息
 * @attention 无 None
 */
typedef struct tagNETDEVPTZTrackStatusInfo
{
    INT32 dwStatus;         /* 通道巡航状态  参见NETDEV_PTZ_TRACK_STATUS_E*/
    INT32 dwPatrolID;       /*录制或者巡航路线序号*/
}NETDEV_PTZ_TRACK_STATUS_INFO_S, *LPNETDEV_PTZ_TRACK_STATUS_INFO_S;

/**
 * @brief 云台守望信息结构体
 * @attention 无 None
 */
typedef struct tagNETDEVPTZGuardInfo
{
    BOOL             bEnabled;                          /* 云台守望使能 */
    UINT32           udwMode;                           /* 云台守望模式，请参考枚举 NETDEV_PTZ_GUARD_MODE_E */
    UINT32           udwParam;                          /* 参数,当Mode为0时，Param表示预置位序号，从1开始; 当Mode为1时，Param表示巡航线路索引，从0开始;当Mode为2时，Param表示轨迹巡航线路索引，从0开始。 */
    UINT32           udwTime;                           /* 守望时间，云台静默此时间后自动守望，单位s */
    BYTE             byRes[32];                         /* 保留字段 */
}NETDEV_PTZ_GUARD_INFO_S, *LPNETDEV_PTZ_GUARD_INFO_S;

/**
 * @enum tagNETDEVPTZDireection
 * @brief 云台方位 
 * @attention 无 None
 */
typedef enum tagNETDEVPTZDirection
{
    NETDEV_PTZ_DIRECTION_EAST           = 0,            /* 东 east */
    NETDEV_PTZ_DIRECTION_SOUTHEAST      = 1,            /* 东南 southeast */
    NETDEV_PTZ_DIRECTION_SOUTH          = 2,            /* 南 south */
    NETDEV_PTZ_DIRECTION_SOUTHWEST      = 3,            /* 西南 southwest */
    NETDEV_PTZ_DIRECTION_WEST           = 4,            /* 西 west */
    NETDEV_PTZ_DIRECTION_NORTHWEST      = 5,            /* 西北 northwest */
    NETDEV_PTZ_DIRECTION_NORTH          = 6,            /* 北 north */
    NETDEV_PTZ_DIRECTION_NORTHEAST      = 7,            /* 东北 northeast  */
    NETDEV_PTZ_DIRECTION_AUTO           = 8,            /* 自动 auto */

    NETDEV_PTZ_DIRECTION_INVALID        = 0xFFFF        /* 无效值 invalid value */
}NETDEV_PTZ_DIRECTION_E;

/**
 * @struct tagNETDEVPTZOrientationInfo
 * @brief 云台方位标定信息 结构体定义
 * @attention  
 */
typedef struct tagNETDEVPTZOrientationInfo
{
    INT32   dwDirection;                /* 云台方位信息 参见枚举NETDEV_PTZ_DIRECTION_E Direction Info see enumeration #NETDEV_PTZ_DIRECTION_E */
    BYTE    byRes[252];                 /* 保留字段  Reserved */

}NETDEV_PTZ_ORIENTATION_INFO_S, *LPNETDEV_PTZ_ORIENTATION_INFO_S;

/**
 * @struct tagNETDEVPTPositionInfo
 * @brief 云台经纬度信息 单位:度 精确到小数点后两位
 * @attention
 */
typedef struct tagNETDEVPTZPtPositionInfo
{
    FLOAT   fLongitude;                /* 云台经度（云台水平移动角度）范围：[0.00, 360.00] */
    FLOAT   fLatitude;                 /* 云台纬度（云台上下翻转角度） */
    BYTE    byRes[128];                /* 保留字段  Reserved */
}NETDEV_PTZ_PT_POSITION_INFO_S, *LPNETDEV_PTZ_PT_POSITION_INFO_S;

/**
 * @struct tagNETDEVPTZLensAngle
 * @brief 云台镜头当前视场角 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVPTZLensAngle
{
    FLOAT    fHorizontalAngle;         /* 水平视场角 取值范围[0.180] HorizontalAngle */
    FLOAT    fVerticalAngle;           /* 垂直视场角 取值范围[0.180] VerticalAnglr */
    BYTE     byRes[256];               /* 保留字段  Reserved */
}NETDEV_PTZ_LENSANGLE_S, *LPNETDEV_PTZ_LENSANGLE_S;

/**
* @brief 音频参数
* @attention 无
*/
typedef struct tagNETDEVAudioSampleParamType
{
    INT32 dwChannels;                               /* 声道数,单声道为1,立体声为2 */
    INT32 dwSampleRate;                             /* 采样率 */
    NETDEV_AUDIO_SAMPLE_FORMAT_E enSampleFormat;    /* 位宽 */
}NETDEV_AUDIO_SAMPLE_PARAM_S, *LPNETDEV_AUDIO_SAMPLE_PARAM_S;

/**
 * @brief 音频数据 结构体定义 Audio data Structure definition
 *        存放解码后音频数据的指针和长度等信息 Storing pointer and length of decoded picture data
 * @attention 无 None
 */
typedef struct tagNETDEVWaveData
{
    CHAR  *pcData;                      /* 音频数据指针  Audio data pointer */
    INT32 dwDataLen;                    /* 音频数据长度  Audio data length */
    INT32 dwWaveFormat;                 /* 解码后音频格式  Format of decoded audio*/
}NETDEV_WAVE_DATA_S, *LPNETDEV_WAVE_DATA_S;

/**
* @brief 存放拼帧后音频数据的指针和长度等信息的结构体定义
* @attention 无
*/
typedef struct tagNETDEVParseAudioData
{
    BYTE *pucData;                  /* 音频数据指针 Audio data pointer */
    UINT32 udwDataLen;              /* 音频数据长度 Audio data length */
    UINT32 udwAudioCodeFormat;      /* 音频编码格式,参见#NETDEV_AUDIO_ENCODE_TYPE_E */
    UINT32 udwWaveFormat;           /* 音频数据解码后音频格式, 参见#NETDEV_WAVE_FORMAT_INFO_E */
    INT64 tTimeStamp;               /* 时间戳 Time stamp (ms)*/
    BYTE  byRes[8];                 /* 保留字段  Reserved */
}NETDEV_PARSE_AUDIO_DATA_S, *LPNETDEV_PARSE_AUDIO_DATA_S;

/**
 * @brief 视频解析数据 结构体定义 Video analytic data Structure definition
 *        存放拼帧后视频数据的指针和长度等信息 Storing pointer and length of framed video data
 * @attention 无 None
 */
typedef struct tagNETDEVParseVideoData
{
    BYTE   *pucData;             /* 视频数据指针  Pointer to video data */
    INT32  dwDataLen;            /* 视频数据长度  Video data length */
    INT32  dwVideoFrameType;     /* 视频帧类型,参考枚举#NETDEV_VIDEO_FRAME_TYPE_E  Frame type, see enumeration #NETDEV_VIDEO_FRAME_TYPE_E */
    INT32  dwVideoCodeFormat;    /* 视频编码格式,参考枚举#NETDEV_VIDEO_CODE_TYPE_E  Video encoding format, see enumeration #NETDEV_VIDEO_CODE_TYPE_E  */
    INT32  dwHeight;             /* 视频图像高度  Video image height */
    INT32  dwWidth;              /* 视频图像宽度  Video image width */
    INT64  tTimeStamp;           /* 时间戳（毫秒） Time stamp (ms) */
    INT64  tAbTime;              /* 绝对时间(unix时间戳)，当前仅回放流存在 */
}NETDEV_PARSE_VIDEO_DATA_S, *LPNETDEV_PARSE_VIDEO_DATA_S;

/* 规则类型 */
typedef enum tagNETDEVIVAReportRuleType
{
    NETDEV_IVA_REPORT_RULE_LINE = 0,           /* 线形规则（直线、折线） */
    NETDEV_IVA_REPORT_RULE_POLY,               /* 多边形规则（多边形、矩形） */
    NETDEV_IVA_REPORT_RULE_BUT
}NETDEV_IVA_REPORT_RULE_TYPE_E;

/* 规则触发类型 */
typedef enum tagNETDEVIVAReportTrigType
{
    NETDEV_IVA_REPORT_TRIG_NONE = 0,           /* 无触发类型 */
    NETDEV_IVA_REPORT_TRIG_BOTH,               /* 双向触发 */
    NETDEV_IVA_REPORT_TRIG_CW,                 /* 顺时针触发 */
    NETDEV_IVA_REPORT_TRIG_CCW,                /* 逆时针触发 */
    NETDEV_IVA_REPORT_TRIG_IN,                 /* 进入触发 */
    NETDEV_IVA_REPORT_TRIG_OUT,                /* 离开触发 */
    NETDEV_IVA_REPORT_TRIG_BUT
}NETDEV_IVA_REPORT_TRIG_TYPE_E;

/* 颜色类型 */
typedef enum tagNETDEVIVAReportColorType
{
    NETDEV_IVA_REPORT_COLOR_NONE = 0,          /* 无色 不用做图 */
    NETDEV_IVA_REPORT_COLOR_DEEP,              /* 深色 */
    NETDEV_IVA_REPORT_COLOR_LIGHT,             /* 浅色 */
    NETDEV_IVA_REPORT_COLOR_WHITE,             /* 白色 */
    NETDEV_IVA_REPORT_COLOR_BLACK,             /* 黑色 */
    NETDEV_IVA_REPORT_COLOR_RED,               /* 红色 */
    NETDEV_IVA_REPORT_COLOR_GREEN,             /* 绿色 */
    NETDEV_IVA_REPORT_COLOR_BLUE,              /* 蓝色 */
    NETDEV_IVA_REPORT_COLOR_ORANGE,            /* 橙色 */
    NETDEV_IVA_REPORT_COLOR_PURPLE,            /* 紫色 */
    NETDEV_IVA_REPORT_COLOR_PINK,              /* 粉色 */
    NETDEV_IVA_REPORT_COLOR_YELLOW,            /* 黄色 */
    NETDEV_IVA_REPORT_COLOR_BROWN,             /* 棕色 */
    NETDEV_IVA_REPORT_COLOR_GRAY,              /* 灰色 */
    NETDEV_IVA_REPORT_COLOR_BUT
}NETDEV_IVA_REPORT_COLOR_E;

/* V2版本规则信息头 */
typedef struct tagNETDEVIVAReportRuleHeadV2S
{
    UINT32      udwChannel;                     /* 通道号 */
    BOOL        bEnable;                        /* 使能状态 */
    UINT16      uwRuleNum;                      /* 规则数量 */
    UINT16      uwDisplayHoldTime;              /* 规则持续显示时间 ms */
}NETDEV_IVA_REPORT_RULE_HEAD_V2_S, *LPNETDEV_IVA_REPORT_RULE_HEAD_V2_S;

/* V2版本结果信息头 */
typedef struct tagNETDEVIVAReportResultHeadV2S
{
    UINT32              udwChannel;             /* 通道号 */
    BOOL                bEnable;                /* 使能状态 */
    UINT16              uwTargetNum;            /* 目标数量 */
    UINT16              uwDisplayHoldTime;      /* 持续显示时间 ms */
}NETDEV_IVA_REPORT_RESULT_HEAD_V2_S, *LPNETDEV_IVA_REPORT_RESULT_HEAD_V2_S;

/* 坐标点结构体 */
typedef struct tagNETDEVIVAReportCoordInfo
{
    UINT16              uwX;                    /* 坐标X  0-10000 万分比 */
    UINT16              uwY;                    /* 坐标Y  0-10000 万分比 */
}NETDEV_IVA_REPORT_COORD_S, *LPNETDEV_IVA_REPORT_COORD_S;

/* V2版本规则信息 */
typedef struct tagNETDEVIVAReportRuleInfoV2S
{
    UINT32                          udwRuleID;                              /* 规则ID */
    UINT32                          udwTriggered;                           /* 规则是否被触发 */
    NETDEV_IVA_REPORT_RULE_TYPE_E   enRuleType;                             /* 规则类型 */
    NETDEV_IVA_REPORT_TRIG_TYPE_E   enTrigType;                             /* 规则触发类型 */
    NETDEV_IVA_REPORT_COORD_S       astCoord[NETDEV_IVA_REPORT_COORD_NUM];  /* 规则坐标点*/
    UINT32                          udwCoordNum;                            /* 规则坐标点数量 */
    NETDEV_IVA_REPORT_COLOR_E       enLineColor;                            /* 规则线条颜色 */
    NETDEV_IVA_REPORT_COLOR_E       enFillColor;                            /* 规则填充颜色 */
    UINT32                          udwLineAlpha;                           /* 线条透明度 0-100 */
    UINT32                          udwFillAlpha;                           /* 填充透明度 0-100 */
    UINT32                          udwAttachLen;                           /* 附属信息长度 保留 */
    UINT32                          udwAttachType;                          /* 附属信息类型 保留 */
}NETDEV_IVA_REPORT_RULE_INFO_V2_S, *LPNETDEV_IVA_REPORT_RULE_INFO_V2_S;

/* V2版本分析结果信息 扩展全结构化属性 */
typedef struct tagNETDEVIVAReportResultInfoV2ExS
{
    UINT32                          udwTargetID;                        /* 目标ID*/
    UINT32                          udwlTrigRule;                       /* 触发规则信息 1bit代表1条规则 */
    NETDEV_IVA_REPORT_COORD_S       stStart;                            /* 目标起始坐标，起始坐标和结束坐标都为（0,0）时，表示跟踪结束*/
    NETDEV_IVA_REPORT_COORD_S       stEnd;                              /* 目标结束坐标 */
    NETDEV_IVA_REPORT_COLOR_E       enLineColor;                        /* 线条颜色 */
    UINT32                          udwLineAlpha;                       /* 线条透明度 0-100 */ 
    UINT32                          udwTrailHoldTime;                   /* 历史轨迹点显示时间 ms */
    UINT32                          udwAttachLen;                       /* 附属信息长度 保留 */
    UINT32                          udwAttachType;                      /* 附属信息类型 -0x01（全结构属性信息） */
    CHAR                            szMsgData[0];                       /* 附属属性信息-新增定义 */
}NETDEV_IVA_REPORT_RESULT_INFO_V2_EX_S, *LPNETDEV_IVA_REPORT_RESULT_INFO_V2_EX_S;

/**
 * @brief 视频通道详细信息 结构体定义  Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVVideoChlDetailInfo
{
    INT32                       dwChannelID;                        /* 通道ID  Channel ID */
    BOOL                        bPtzSupported;                      /* 是否支持云台 Whether ptz is supported */
    NETDEV_CHANNEL_STATUS_E     enStatus;                           /* 通道状态  Channel status NETDEV_CHANNEL_STATUS_E*/
    INT32                       dwStreamNum;                        /* 流个数  Number of streams 当enStatus为NETDEV_CHL_STATUS_UNBIND时，此值无效*/
    CHAR                        szChnName[NETDEV_LEN_64];           /* 通道名称 Channel Name */
    BYTE                        byRes[4];                           /* 保留字段  Reserved field*/
}NETDEV_VIDEO_CHL_DETAIL_INFO_S, *LPNETDEV_VIDEO_CHL_DETAIL_INFO_S;

/**
 * @brief 视频通道详细信息拓展 结构体定义  Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVVideoChlDetailExtendInfo
{
    UINT32                                      udwIsPoEPort;                                 /* 是否支持PoE口, 0-否, 1-是 */
    UINT32                                      udwPoEStatus;                                   /* PoE口状态 参见 NETDEV_POE_STATUS_E */
    CHAR                                        szAccessAddress[NETDEV_IPADDR_STR_MAX_LEN];     /* 设备访问地址, 范围[0, 63]NVR需要 */
    CHAR                                        szMACAddress[NETDEV_IPADDR_STR_MAX_LEN];        /* 接入设备MAC地址, 长度范围[0, 63], NVR支持 */
    CHAR                                        szDDNSAddress[NETDEV_IPADDR_STR_MAX_LEN];       /* DDNS服务器地址，范围[0,64] */
    UINT32                                      udwOffReason;                                   /* 接入设备离线原因 参见 NETDEV_CHN_OFF_REASON_E */
    UINT32                                      udwRemoteIndex;                                 /* 远程通道号(多通道设备的通道号) */
    CHAR                                        szGBID[NETDEV_LEN_32];                          /* 国标资源编码，范围[0, 31] */
    UINT32                                      udwAddType;                                     /* 添加方式, 0-手动, 1-即插即用*/
    UINT32                                      udwOrgID;                                       /* 组织ID, 一体机需要*/
    UINT32                                      udwDevID;                                       /* 父设备ID, 一体机需要*/
    CHAR                                        szDevName[NETDEV_LEN_64];                       /* 父设备名称，范围[0, 64] 一体机需要*/
    UINT32                                      udwChlIndex;                                    /* 通道索引ID, 一体机需要*/
    UINT32                                      udwAudioResID;                                  /* 对应的音频通道ID, 一体机需要*/

    BYTE                        byRes[512];                          /* 保留字段  Reserved field*/
}NETDEV_VIDEO_CHL_DETAIL_EXTEND_INFO_S, *LPNETDEV_VIDEO_CHL_DETAIL_EXTEND_INFO_S;

/**
 * @brief 视频通道详细信息 结构体定义  Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVVideoChlDetailInfoEx
{
    INT32                                       dwChannelID;                        /* 通道ID  Channel ID */
    BOOL                                        bPtzSupported;                      /* 是否支持云台 Whether ptz is supported */
    NETDEV_CHANNEL_STATUS_E                     enStatus;                           /* 通道状态  Channel status NETDEV_CHANNEL_STATUS_E */
    INT32                                       dwStreamNum;                        /* 流个数  Number of streams 当enStatus为NETDEV_CHL_STATUS_UNBIND时，此值无效*/
    NETDEV_CHANNEL_TYPE_E                       enChannelType;                      /* 通道类型，(note: 该字段仅对混合NVR有效) */
    NETDEV_VIDEO_STANDARD_E                     enVideoFormat;                      /* 视频输入制式，当ChannelType为NETDEV_CHL_TYPE_DIGITAL时，此值无效 (note: 该字段仅对混合NVR有效) */
    NETDEV_HOSTTYPE_E                           enAddressType;                      /* IP地址类型 */
    CHAR                                        szIPAddr[NETDEV_IPADDR_STR_MAX_LEN];/* IP地址 IP address*/
    INT32                                       dwPort;                             /* 端口号 */
    CHAR                                        szChnName[NETDEV_LEN_64];           /* 通道名称 Channel Name */
    BOOL                                        allowDistribution;                  /* 是否允许流分发*/
    INT32                                       dwDeviceType;                       /* 通道接入的设备类型，参见枚举 NETDEV_CHANNEL_CAMERA_TYPE_E. Channel device Type see#NETDEV_CHANNEL_CAMERA_TYPE_E */
    CHAR                                        szManufacturer[NETDEV_LEN_32];      /* 厂商，范围[0,31] */
    CHAR                                        szDeviceModel[NETDEV_LEN_32];       /* 设备型号，范围[0,31]  */
    UINT32                                      udwAccessProtocol;                  /* 接入协议类型,ONVIF协议:1 ,私有协议:2, 国标:3 ,自定义协议:使用自定义协议, 需要使用NETDEV_GetDevConfig/NETDEV_SetDevConfig和获取和配置自定义协议配置信息  */
    LPNETDEV_VIDEO_CHL_DETAIL_EXTEND_INFO_S     pstExtendedInformation ;            /* 附加属性, 需要自行申请内存*/

    BYTE                        byRes[16];                          /* 保留字段  Reserved field*/
}NETDEV_VIDEO_CHL_DETAIL_INFO_EX_S, *LPNETDEV_VIDEO_CHL_DETAIL_INFO_EX_S;


/**
* @brief 视频源分辨率信息 Video resolution
* @attention 无
*/
typedef struct tagNETDEVVideoResolution
{
    INT32 dwWidth;
    INT32 dwHeight;
}NETDEV_VIDEO_RESOLUTION_S, *LPNETDEV_VIDEO_RESOLUTION_S;


/**
* @brief 取值范围 Range
* @attention 无
*/
typedef struct tagNETDEVRange
{
    INT32   dwMin;
    INT32   dwMax;
}NETDEV_RANGE_S, *LPNETDEV_RANGE_S;

/**
* @brief 视频编码参数选项 Video encode option
* @attention 无
*/
typedef struct tagNETDEVVideoEncodeOption
{
    INT32                       dwEncodeType;                                       /* 编码格式 NETDEV_VIDEO_CODE_TYPE_E*/
    INT32                       dwResolutionSize;                                   /* 分辨率数量 Resolution size */
    NETDEV_VIDEO_RESOLUTION_S   astResolution[NETDEV_RESOLUTION_NUM_MAX];           /* 分辨率 Resolution */
    NETDEV_RANGE_S              stIFrameInterval;                                   /* I帧间隔 I frame interval */
    NETDEV_RANGE_S              stFrameRate;                                        /* 帧率 Frame rate */
    NETDEV_RANGE_S              stEncodingInterval;                                 /* 编码间隔 Encode interval */
    NETDEV_RANGE_S              stBitRate;                                          /* 码率 Bit rate */
}NETDEV_VIDEO_ENCODE_OPTION_S, *LPNETDEV_VIDEO_ENCODE_OPTION_S;

/**
* @brief 视频码流参数能力集 Video stream Cap
* @attention 无
*/
typedef struct tagNETDEVVideoStreamCap
{
    INT32                           dwStreamType;                                   /* 码流类型 入参 参见 NETDEV_LIVE_STREAM_INDEX_E */
    INT32                           dwEncodeCapSize;                                /* 编码能力集个数 Encode capability size */
    NETDEV_VIDEO_ENCODE_OPTION_S    astEncodeCap[NETDEV_VIDEO_ENCODE_TYPE_MAX];     /* 编码能力 Encode capability */
    NETDEV_RANGE_S                  stQuality;                                      /* 图像质量范围 Quality range */
}NETDEV_VIDEO_STREAM_CAP_S, *LPNETDEV_VIDEO_STREAM_CAP_S;

/**
 * @brief 日志查询条件 结构体定义 Log query condition Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVFindLogCond
{
    INT32      dwMainType;         /* 日志类型, 请参考#NETDEV_LOG_MAIN_TYPE_E。 Log type. See #NETDEV_LOG_MAIN_TYPE_E for reference */
    INT32      dwSubType;          /* 日志子类型, 请参考#NETDEV_LOG_SUB_TYPE_E。 Sub type. See #NETDEV_LOG_SUB_TYPE_E for reference */
    INT64      tBeginTime;         /* 起始时间  Start time */
    INT64      tEndTime;           /* 结束时间  End time */
    INT32      dwLimitNum;         /* 每次查询的数量 Number of each query*/
    INT32      dwOffset;           /* 从序号几开始查询，序号从0开始 Start search from No. X. X starts from 0*/
}NETDEV_FIND_LOG_COND_S, *LPNETDEV_FIND_LOG_COND_S;

/**
* @brief 日志信息 结构体定义 Definition of log info structure
* @attention 无
*/
typedef struct tagNETDEVOptLogInfo
{
    INT64       tTime;                                  /* 日志时间 Log time*/
    INT32       dwMainType;                             /* 日志主类型, 请参考 #NETDEV_LOG_MAIN_TYPE_E。 Main Type.See #NETDEV_LOG_MAIN_TYPE_E for reference*/
    INT32       dwSubType;                              /* 日志子类型, 请参考 #NETDEV_LOG_SUB_TYPE_E。 Sub Type.See #NETDEV_LOG_SUB_TYPE_E for reference*/
    INT32       dwChannelID;                            /* 日志来源 Log source*/
    CHAR        szUserName[NETDEV_NAME_MAX_LEN];        /* 用户名 Username*/
    CHAR        szUserAddr[NETDEV_IPADDR_STR_MAX_LEN];  /* 用户IP地址 User IP address*/
    CHAR        szDetailInfo[NETDEV_LEN_256];           /* 详细信息[1,64] 仅NVR支持 Detail info[1,64] NVR Only */
    CHAR        szOperObject[NETDEV_LEN_256];           /* 操作对象[1,64] 仅VMS支持 Opera object[1,64] VMS Only */
    UINT32      udwOperResult;                          /* 操作结果 仅VMS支持 Opera result VMS Only */
    CHAR        szDevName[NETDEV_LEN_256];              /* 设备名称[1,64] Device name of operation[1,64] VMS Only*/
    CHAR        szOrgName[NETDEV_LEN_256];              /* 组织名称[1,64] Org Name of operation[1,64] VMS Only */
    BYTE        bRes[256];                              /* 保留字段 Reserved */
}NETDEV_LOG_INFO_S,*LPNETDEV_LOG_INFO_S;

/***************** 告警业务  Alarm services**************************************************/
/**
 * @brief 告警信息 结构体定义 Alarm information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVAlarmInfo
{
    INT32   dwAlarmType;                    /* 告警类型,参见枚举# NETDEV_ALARM_TYPE_E  Alarm type, see enumeration #NETDEV_ALARM_TYPE_E */
    INT64   tAlarmTime;                     /* 告警发生时间  Alarm time */
    INT32   dwChannelID;                    /* 通道号,用于NVR  Channel ID for NVR */
    UINT16  wIndex;                         /* 索引号  Index number,  index number */
    CHAR    *pszName;                       /* 告警源名称,开关量名称 Alarm source name, alarm input/output name */
    INT32   dwTotalBandWidth;               /* 当前带宽总量,单位为MBps  Current total bandwidth (in MBps) */
    INT32   dwUnusedBandwidth;              /* 未使用的带宽,单位为MBps  Bandwidth left (in MBps)*/
    INT32   dwTotalStreamNum;               /* 总路数 Total cameras*/
    INT32   dwFreeStreamNum;                /* 未使用路数 Cameras left */
    INT32   dwMediaMode;                    /* 流类型,参见枚举#NETDEV_MEDIA_MODE_E Stream type. For enumerations, see#NETDEV_MEDIA_MODE_E*/
    INT32   dwReserved;                     /* 异常上报保留参数，用于上报解码层保留参数 */
    INT32   dwEventCode;                    /* 事件类型，用于上报解码层事件类型，参见枚举#NETDEV_PLAYER_RUN_INFO_TYPE_E */
    BYTE    byRes[2];                       /* 保留字段  Reserved */
}NETDEV_ALARM_INFO_S, *LPNETDEV_ALARM_INFO_S;

/**
 * @brief 告警订阅信息 结构体定义 Alarm subscribe information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVAlarmSubscribeInfo
{
    INT32   dwAlarmType;                    /* 订阅的告警类型 参见 NETDEV_SUBSCRIBE_ALARM_TYPE_E 多个类型使用或运算 */
    BYTE    byRes[44];                      /* 保留字段  Reserved */
}NETDEV_ALARM_SUB_INFO_S, *LPNETDEV_ALARM_SUB_INFO_S;

/**
 * @brief  拉告警信息 结构体定义 Get alarm information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVPullAlarmInfo
{
    NETDEV_ALARM_TYPE_E   enAlarm;         /* 告警类型  Alarm type */
    INT32   dwChancelId;                   /* 通道号,用于NVR  Channel ID for NVR */
}NETDEV_PULLALARM_INFO_S, *LPNETDEV_PULLALARM_INFO_S;

/********************** 客流量统计 Passenger flow statistic **************************/
/**
 * @brief  客流量统计信息 结构体定义 Passenger flow statistic infomation Sturcture definition
 * @attention 无 None
 */
typedef struct tagNETDEVPassengerFlowStatisticData
{
    INT32   dwChannelID;            /* 通道号 Channel ID */
    INT64   tReportTime;            /* 上报时间（unix时间戳） Report time */
    INT32   tInterval;              /* 间隔时间 Interval time */
    INT32   dwEnterNum;             /* 进入人数 Enter num */
    INT32   dwExitNum;              /* 离开人数 Exit num */
    INT32   dwTotalEnterNum;        /* 所有进入人数 Total enter num */
    INT32   dwTotalExitNum;         /* 所有离开人数 Total exit num */
}NETDEV_PASSENGER_FLOW_STATISTIC_DATA_S, *LPNETDEV_PASSENGER_FLOW_STATISTIC_DATA_S;


/**
 * @brief 连接及socket缓存信息
 * @attention
 */
typedef struct tagNETDEVTmsConnectInfo
{ 
    UINT32   udwPktVer;          /* 报文版本 */ 
    UINT32   udwTmsProtoCmd;     /* Tms协议命令码 */
    CHAR     *pcRecvBuf;         /* socket接收数据缓冲 */
    UINT32   udwBufMaxLen;       /* RecvBuf的总长度 */
    UINT32   udwPktTotalLen;     /* 通信协议层面数据包的总长度，包含同步头、同步尾 */
    BOOL     bHdrParsed;         /* 报文头解析完成标志 */
    BYTE     bRes[32];           /* 保留字段 Reserved */
}NETDEV_TMS_CONNECT_INFO_S, *LPNETDEV_TMS_CONNECT_INFO_S;

/**
 * @brief 人员信息
 * @attention
 */
typedef  struct tagNETDEVTMSPersonInfo
{
    UINT32 udwFaceId;                                      /* 人脸ID，可能为0，表示无xml对应元素 */
    CHAR   szCamerID[NETDEV_TMS_CAMER_ID_LEN];             /* 相机编号 */
    CHAR   szRecordID[NETDEV_TMS_FACE_RECORD_ID_LEN];      /* 记录ID号 */
    CHAR   szTollgateID[NETDEV_TMS_FACE_TOLLGATE_ID_LEN];  /* 卡口编号 */
    CHAR   szPassTime[NETDEV_TMS_PASSTIME_LEN];            /* 经过时间 */
    BOOL   bFinishFlag;                                    /* 解析完成标志 */
    BYTE   bRes[128];                                      /* 保留字段 Reserved */

}NETDEV_TMS_PERSION_INFO_S, *LPNETDEV_TMS_PERSION_INFO_S;

/**
 * @brief 人脸位置信息
 * @attention
 */
typedef struct tagNETDEVFacePositionInfo
{
    INT32   dwTopLeftX;           /* 左上角X [0, 10000]  Upper left corner X [0, 10000]  */
    INT32   dwTopLeftY;           /* 左上角Y [0, 10000]  Upper left corner Y [0, 10000]  */
    INT32   dwBottomRightX;       /* 右下角X [0, 10000]  Lower right corner x [0, 10000] */
    INT32   dwBottomRightY;       /* 右下角Y [0, 10000]  Lower right corner y [0, 10000] */
    BYTE     bRes[32];           /* 保留字段 Reserved */
}NETDEV_FACE_POSITION_INFO_S, *LPNETDEV_FACE_POSITION_INFO_S;

/**
 * @brief 人脸小图信息
 * @attention
 */
typedef struct tagNETDEVTMSPersionFaceInfo
{ 
    UINT32 udwFaceId;                                /* 人脸ID */
    NETDEV_FACE_POSITION_INFO_S stFacePos;           /* 人脸坐标---画面坐标归一化：0-10000 ;  矩形左上和右下点："138,315,282,684" */
    BYTE   bRes[64];                                 /* 保留字段 Reserved */

}NETDEV_TMS_PERSION_FACE_INFO_S, *LPNETDEV_TMS_PERSION_FACE_INFO_S;

/**
 * @brief 人脸图片详细参数
 * @attention
 */
typedef struct tagNETDEVTMSPersionPicInfo
{
    UINT32                              udwFaceId;                                  /* 人脸ID(Face节点解析到此)， 不会为0 */
    UINT32                              udwPiclen;                                  /* 报文信息中图片长度 */
    CHAR                                szPassTime[NETDEV_TMS_PASSTIME_LEN];        /* 经过时刻 */
    NETDEV_TMS_PERSION_FACE_INFO_S      stFaceInfo;                                 /* 人脸小图信息 */
    NETDEV_TMS_PERSION_IMAGE_TYPE_E     enImgType;                                  /* 图像类型 */
    NETDEV_TMS_PERSION_IMAGE_FORMAT_E   enImgFormat;                                /* 图像格式 */
    UINT32                              udwImageWidth;                              /* 图像宽度*/
    UINT32 udwImageHeight;                                                          /* 图像高度*/ 
    UINT32 udwFaceNum;                                   /* 人脸个数 全景图时有效*/
    BYTE   bRes[252];                                                               /* 保留字段 Reserved*/
}NETDEV_TMS_PERSION_PIC_INFO_S, *LPNETDEV_TMS_PERSION_PIC_INFO_S;

/**
 * @brief 人脸识别解析后信息
 * @attention
 */
typedef struct tagNETDEVTMSFaceParseInfo
{ 
    UINT32                          udwFaceNum;                 /* 人脸个数 */
    UINT32                          udwImageNum;                /* pstTMSPersonPicInfo 的个数 */
    CHAR                            *pcPktPicDataPtr;           /* 人脸图片报文起始指针 */
    NETDEV_TMS_PERSION_INFO_S       stTMSPersonInfo;            /* 人员信息 */
    LPNETDEV_TMS_PERSION_PIC_INFO_S pstTMSPersonPicInfo;        /* 人脸图片详细参数 */
    BYTE                            bRes[64];                   /* 保留字段 Reserved */
}NETDEV_TMS_FACE_PARSE_INFO_S, *LPNETDEV_TMS_FACE_XML_INFO_S;

/**
 * @brief 热度图报文XML解析信息
 * @attention
 */
typedef struct tagNETDEVTMSHeatMapXmlInfo
{
    CHAR  szDevID[NETDEV_TMS_HEAT_MAP_DEVID_LEN];                           /* 设备编号 */
    CHAR  szRecordID[NETDEV_TMS_HEAT_MAP_RECORD_ID_LEN];                    /* 记录ID号 */
    CHAR  szCollectTime[NETDEV_TMS_HEAT_MAP_COllECT_TIME_LEN];              /* 采集时间 */
    INT32 dwColumns;                                                        /* 检测列数 */
    INT32 dwRows;                                                           /* 检测行数 */
    INT32 dwIntervalTime;                                                   /* 检测间隔 单位min*/
    CHAR  szIPAddr[NETDEV_IPV4_LEN_MAX];                                    /* 设备IP地址 */
    BYTE  bRes[240];                                                        /* 保留字段 Reserved */
}NETDEV_TMS_HEAT_MAP_XML_INFO_S, *LPNETDEV_TMS_HEAT_MAP_XML_INFO_S;

/**
 * @brief 热度图报文区域解析信息
 * @attention
 */
typedef struct tagNETDEVTMSHeatMapPicInfo
{
    UINT32  udwPicSize;                                                     /* 区域大小 */
    CHAR    *pcPicData;                                                     /* 区域数据 */
}NETDEV_TMS_HEAT_MAP_PIC_INFO_S,*LPNETDEV_TMS_HEAT_MAP_PIC_INFO_S;

/**
 * @brief 热度图报文数据信息
 * @attention
 */
typedef struct tagNETDEVTMSHeatMapInfo
{
    UINT32                            udwPicNum;                                /* 区域个数 Picture Number */
    NETDEV_TMS_HEAT_MAP_XML_INFO_S    stTmsXmlInfo;                             /* XML信息 XML Information */
    NETDEV_TMS_HEAT_MAP_PIC_INFO_S    stTmsPicInfo[NETDEV_TMS_PIC_COMMON_NUM];  /* 区域信息 Picture Message */
}NETDEV_TMS_HEAT_MAP_INFO_S,*LPNETDEV_TMS_HEAT_MAP_INFO_S;

/**
 * @brief 车牌识别报文XML解析信息
 * @attention
 */
typedef struct tagNETDEVTMSCarPlateXmlInfo
{
    CHAR szCamID[NETDEV_TMS_CAR_PLATE_CAMID_LEN];                               /* 卡口相机编号 */
    CHAR szRecordID[NETDEV_TMS_CAR_PLATE_RECORDID_LEN];                         /* 记录ID号 */
    CHAR szTollgateID[NETDEV_TMS_CAR_PLATE_TOLLGATE_LEN];                       /* 卡口编号 */
    CHAR szPassTime[NETDEV_TMS_CAR_PLATE_PASSTIME_LEN];                         /* 经过时刻 */
    CHAR szLaneID[NETDEV_TMS_CAR_PLATE_LANEID_LEN];                             /* 车道编号 */
    CHAR szCarPlate[NETDEV_TMS_CAR_PLATE_CARPLATE_LEN];                         /* 车牌号码 */
    CHAR szIPAddr[NETDEV_IPV4_LEN_MAX];                                         /* 设备IP地址 */
    BYTE bRes[496];                                                             /* 保留字段 Reserved */

}NETDEV_TMS_CAR_PLATE_XML_INFO_S, *LPNETDEV_TMS_CAR_PLATE_XML_INFO_S;

/**
 * @brief 车牌识别报文图片解析信息
 * @attention
 */
typedef struct tagNETDEVTMSCarPlatePicInfo
{
    UINT32  udwPicSize;                                                      /* 图片大小 */
    CHAR    *pcPicData;                                                      /* 图片数据 */
}NETDEV_TMS_CAR_PLATE_PIC_INFO_S,*LPNETDEV_TMS_CAR_PLATE_PIC_INFO_S;

/**
 * @brief 车牌识别报文数据信息
 * @attention
 */
typedef struct tagNETDEVTMSCarPlateInfo
{
    UINT32                             udwPicNum;                                   /* 图片个数 Picture Number */
    NETDEV_TMS_CAR_PLATE_XML_INFO_S    stTmsXmlInfo;                                /* XML信息 XML Information */
    NETDEV_TMS_CAR_PLATE_PIC_INFO_S    stTmsPicInfo[NETDEV_TMS_PIC_COMMON_NUM];     /* 图片信息 Picture Message */
}NETDEV_TMS_CAR_PLATE_INFO_S,*LPNETDEV_TMS_CAR_PLATE_INFO_S;

/**
 * @brief 人脸抓拍信息结构体（上报用）
 * @attention
 */
typedef struct tagNETDEVTMSFaceSnapshotPicInfo
{
    UINT32   udwFaceId;                                      /* 人脸ID */
    CHAR    *pcPicBuff;                                      /* 图片缓存 */
    UINT32   udwPicBuffLen;                                  /* 图片缓存长度 */
    NETDEV_TMS_PERSION_IMAGE_TYPE_E    enImgType;            /* 图像类型，参考枚举NETDEV_TMS_PERSION_IMAGE_TYPE_E */
    NETDEV_TMS_PERSION_IMAGE_FORMAT_E  enImgFormat;          /* 图像格式，参考枚举NETDEV_TMS_PERSION_IMAGE_FORMAT_E */
    NETDEV_FACE_POSITION_INFO_S        stFacePos;            /* 人脸坐标---画面坐标归一化：0-10000 ;  矩形左上和右下点："138,315,282,684" */
    UINT32   udwImageWidth;                                  /* 图像宽度 */
    UINT32   udwImageHeight;                                 /* 图像高度 */
    CHAR     szCamerID[NETDEV_TMS_CAMER_ID_LEN];             /* 相机编号 */
    CHAR     szRecordID[NETDEV_TMS_FACE_RECORD_ID_LEN];      /* 记录ID号 */
    CHAR     szTollgateID[NETDEV_TMS_FACE_TOLLGATE_ID_LEN];  /* 卡口编号 */
    CHAR     szPassTime[NETDEV_TMS_PASSTIME_LEN];            /* 经过时刻,YYYYMMDDHHMMSSMMM，时间按24小时制。第一组MM表示月，第二组MM表示分，第三组MMM表示毫秒 */
    UINT32   udwFaceNum;                                     /* 人脸个数 全景图时有效*/
    CHAR     szIPAddr[NETDEV_IPV4_LEN_MAX];                  /* 设备IP地址 */
    BYTE     bRes[76];                                       /* 保留字段 Reserved */
}NETDEV_TMS_FACE_SNAPSHOT_PIC_INFO_S, *LPNETDEV_TMS_FACE_SNAPSHOT_PIC_INFO_S;


/**
 * @brief 延迟开关机参数信息
 * @attention
 */
typedef struct tagNETDEVXWDelaySwitchPower
{
    UINT32            udwOperateType;                    /* 操作方式 0:延迟开机（暂不实现）   1:延迟关机*/
    UINT32            udwDelayTime;                      /* 延迟关机时间 单位:min   范围1~720*/

    BYTE              bRes[128];                         /* 预留字段 */
}NETDEV_XW_DELAY_SWITCH_POWER_S, *LPNETDEV_XW_DELAY_SWITCH_POWER_S;

/**
 * @brief 定时开关机信息
 * @attention
 */
typedef struct tagNETDEVXWTimingSwitchPower
{
    CHAR            szTVWallCode[NETDEV_LEN_64];         /* 电视墙编码（可选字段），由设备端分配，字符串长度范围[1,64]*/
    BOOL            bPowerOnEnabled;                     /* 使能（是否开启定时开机功能）0:不使能 1:使能*/
    BOOL            bPowerOffEnabled;                    /* 使能（是否开启定时关机功能）0:不使能 1:使能*/
    CHAR            szPowerOnTime[NETDEV_LEN_16];        /* 开机时间格式：HH:MM:SS（小时:分钟: 秒)*/
    CHAR            szPowerOffTime[NETDEV_LEN_16];       /* 开机时间格式：HH:MM:SS（小时:分钟: 秒)*/

    BYTE            bRes[64];                           /* 预留字段 */
}NETDEV_XW_TIMING_SWITCH_POWER_S, *LPNETDEV_XW_TIMING_SWITCH_POWER_S;

/**
 * @brief 手动开关机参数信息
 * @attention
 */
typedef struct tagNETDEVXWManualSwitchPower
{
    CHAR              szTVWallCode[NETDEV_LEN_64];       /* 电视墙编码（可选字段），由设备端分配，字符串长度范围[1,64] */
    UINT32            udwOperateType;                    /* 操作方式 0:开机   1:关机*/

    BYTE               bRes[64];                        /* 预留字段 */
}NETDEV_XW_MANUAL_SWITCH_POWER_S, *LPNETDEV_XW_MANUAL_SWITCH_POWER_S;

/**
 * @brief 拼接屏控制参数信息
 * @attention
 */
typedef struct tagNETDEVXWScreenCtrlParamInfo
{
    CHAR        szTVWallCode[NETDEV_LEN_64];              /* 电视墙编码（可选字段），由设备端分配，字符串长度范围[1,64] */
    UINT32      udwCtrlType;                              /* 控制方式,参见 NETDEV_XW_SCREEN_CTRL_TYPE_S */
    UINT32      udwAddressType;                           /* IP地址类型,参见NETDEV_ADDR_TYPE_E  CtrlType为0或1时，该节点必选*/
    CHAR        szIPV4Address[NETDEV_IPADDR_STR_MAX_LEN];             /* IPV4地址 当控制方式为TCP或者UDP，且IP地址类型为IPv4时，该节点必选*/
    CHAR        szIPV6Address[NETDEV_IPADDR_STR_MAX_LEN];             /* IPV6地址 当控制方式为TCP或者UDP，且IP地址类型为IPv6时，该节点必选*/
    CHAR        szDomainAddress[NETDEV_DOMAIN_LEN];       /* 域名 当控制方式为TCP或者UDP，且IP地址类型为域名时，该节点必选*/
    UINT32      udwPort;                                  /* 端口 当控制方式为TCP或者UDP时，该节点必选*/
    UINT32      udwComID;                                 /* 串口ID 当控制方式为串口时，该节点必选*/
    UINT32      udwProtocolType;                          /* 控制协议类型 参见NETDEV_XW_SCREEN_CTRL_PROTOCOL_TYPE_S*/
    BYTE        bRes[192];                                /* 预留字段 */
}NETDEV_XW_SCREEN_CTRL_PARAM_INFO_S, *LPNETDEV_XW_SCREEN_CTRL_PARAM_INFO_S;


/**
 * @brief 屏幕放大信息
 * @attention
 */
typedef struct tagNETDEVXWScreenZoomInfo
{
    UINT32            uOperatedType;                    /* 屏幕操作类型,参见NETDEV_XW_SCREEN_ZOOM_TYPE_E */
    UINT32            uOperatedMode;                    /* 屏幕操作模式,参见NETDEV_XW_SCREEN_ZOOM_MODE_E */
    UINT32            uSplitScreenIndex;                /* 需要放大到全屏的分屏序号,当uOperatedType＝0 & uOperatedMode=1时有效 */
}NETDEV_XW_SCREEN_ZOOM_INFO_S, *LPNETDEV_XW_SCREEN_ZOOM_INFO_S;

/**
 * @brief 坐标信息
 * @attention
 */
typedef struct tagNETDEVXWArea
{
    UINT32  udwX;       /* X轴坐标 */
    UINT32  udwY;       /* Y轴坐标 */
}NETDEV_XW_COORD_S, *LPNETDEV_XW_COORD_S;

/**
 * @brief 相对于电视墙的位置信息
 * @attention
 */
typedef struct tagNETDEVXWVirtualLEDArea
{
    NETDEV_XW_COORD_S   stTopLeft;          /* 左上角的坐标点 */
    NETDEV_XW_COORD_S   stBottomRight;      /* 右下角的坐标点 */
}NETDEV_XW_AREA_S, *LPNETDEV_XW_AREA_S;

/**
 * @brief 分辨率信息
 * @attention
 */
typedef struct tagNETDEVXWVideoResolution
{
    UINT32  udwWidth;       /* 宽 */
    UINT32  udwHeight;      /* 高 */
}NETDEV_XW_RESOLUTION_S, *LPNETDEV_XW_RESOLUTION_S;

/**
 * @brief "XW"设备电视墙能力集
 * @attention
 */
typedef struct tagNETDEVXWTVWallCap
{
    UINT32      udwNumMax;              /* 电视墙最大数量 */
    UINT32      udwSceneMax;            /* 单个电视墙的最大场景数 */
    UINT32      udwRowMax;              /* 单个电视墙的最大行数 */
    UINT32      udwColumnMax;           /* 单个电视墙的最大列数 */
    UINT32      udwScenesPlanMax;       /* 单个电视墙最大场景组计划数 */
    BYTE        byRes[60];              /* 保留字段 */
}NETDEV_XW_TVWALL_CAP_S, *LPNETDEV_XW_TVWALL_CAP_S;

/**
 * @brief 支持的视频输出制式列表
 * @attention
 */
typedef struct tagNETDEVXWFormatList
{
    UINT32      udwSize;                                    /* 支持的视频输出制式数量 */
    UINT32      adwFormatList[NETDEV_VIDEO_FORMAT_MAX];     /* 支持的视频输出制式 NETDEV_VIDEO_FORMAT_E */
    BYTE        byRes[64];                                  /* 保留字段 */
}NETDEV_XW_FORMAT_LIST_S, *LPNETDEV_XW_FORMAT_LIST_S;

/**
 * @brief "XW"设备窗口能力集
 * @attention
 */
typedef struct tagNETDEVXWWndCap
{
    UINT32                  udwWndMaxPerScene;      /* 单场景的最大窗口数量 */
    UINT32                  udwAreaMax;             /* 单物理输出口的窗口面积 */
    UINT32                  udwPaneMax;             /* 单窗口的最大分屏数量 */
    NETDEV_XW_RESOLUTION_S  stResolutionMin;        /* 最小窗口的像素 */
    BYTE                    byRes[64];              /* 保留字段 */
}NETDEV_XW_Wnd_CAP_S, *LPNETDEV_XW_Wnd_CAP_S;

/**
 * @brief "XW"设备底图能力集
 * @attention
 */
typedef struct tagNETDEVXWBaseMapCap
{
    UINT32                      udwNumMax;              /* "ADU"设备最大底图数量 */
    UINT32                      udwNumMaxPerScene;      /* 单场景最大底图数量 */
    UINT32                      udwBytesMax;            /* 单张底图的最大字节数 */
    NETDEV_XW_RESOLUTION_S      stResolutionMax;        /* 底图最大分辨率 */
    BYTE                        byRes[64];              /* 保留字段 */
}NETDEV_XW_BASEMAP_CAP_S, *LPNETDEV_XW_BASEMAP_CAP_S;

/**
 * @brief "XW"设备虚拟LED能力集
 * @attention
 */
typedef struct tagNETDEVXWVirtualLEDCap
{
    UINT32  udwNumMaxPerScene;           /* 单场景最大虚拟LED数量 */
    UINT32  udwRowMax;                   /* 单虚拟LED最大行数 */
    UINT32  udwCharMaxPerRow;            /* 单行文字的最大个数 */
    UINT32  udwRollingNumPerSceneMax;    /* 滚动虚拟LED最大个数 */
    UINT32  udwTextHightMax;             /* 字高最大值 */
    UINT32  udwGapMax;                   /* 自适应间隔最大像素 */
    UINT32  udwCharsMax;                 /* 最大字符个数限制 */
    UINT32  udwSupVirtualLEDDifColors;   /* 支持虚拟LED显示不同的颜色 0：不支持 1：支持 */
    BYTE    byRes[44];                   /* 保留字段 */
}NETDEV_XW_VIRTUALLED_CAP_S, *LPNETDEV_XW_VIRTUALLED_CAP_S;

/**
 * @brief "XW"设备轮巡能力集
 * @attention
 */
typedef struct tagNETDEVXWSequenceCap
{
    UINT32  udwSrcNumMax;                /* 单个轮训最大资源数量 */
    UINT32  udwPaneNumMax;               /* 单分屏轮巡最大数量 */
    UINT32  udwWndNumMax;                /* 单窗口轮巡最大数量 */
    UINT32  udwSceneNumMax;              /* 场景轮巡最大个数 */

    UINT32  udwVideoSourceMax;           /* 单个轮巡资源最大监控点数 */
    UINT32  udwSeqResourceInSceneMax;    /* 单个场景下最大的轮巡资源数 */
    BYTE    byRes[56];                   /* 保留字段 */
}NETDEV_XW_SEQUENCE_CAP_S, *LPNETDEV_XW_SEQUENCE_CAP_S;

/**
 * @brief "XW"支持的分屏
 * @attention
 */
typedef struct tagNETDEVXWPaneType
{
    UINT32                          udwSize;                     /* 支持的分屏数量 */
    UINT32                          *pudwPaneType;               /* 支持的分屏类型 NETDEV_XW_LAYOUT_NUM_E */
}NETDEV_XW_PANE_TYPE_S, *LPNETDEV_XW_PANE_TYPE_S;

/**
 * @brief 资源管理类型（显控设备侧管理资源需要此字段）
 * @attention
 */
typedef enum tagNETDEVXWManageType
{
    NETDEV_XW_MANAGE_TYPE_OTHER = 0,                                /* 其它 */
    NETDEV_XW_MANAGE_TYPE_XWARE = 1,                                /* 显控设备侧管理 */

    NETDEV_XW_MANAGE_TYPE_INVALID = 0XFF                            /* 无效值 invalid */
    
}NETDEV_XW_MANAGE_TYPE_E;

/**
 * @brief "XW"设备其他能力集
 * @attention
 */
typedef struct tagNETDEVXWSupportCap
{
    UINT32                  udwPane;                      /* 分屏能力 NETDEV_PANE_CAP_E*/
    UINT32                  udwWndRoaming;                /* 窗口漫游能力 NETDEV_ROAMING_CAP_E*/
    UINT32                  udwWnd;                       /* 开窗能力 NETDEV_XW_WND_CAP_E*/        
    BOOL                    bBackToShow;                  /* 回显能力 0:不支持 1:支持 */
    BOOL                    bWndOverlay;                  /* 窗口叠加能力 0:不支持 1:支持 */
    BOOL                    bTopWndSetTransp;             /* 顶层窗口设置透明度 0:不支持 1:支持 */
    UINT32                  udwMaxWinNumPerScreen;        /* 单个物理输出口能支持的最大窗口数量 */
    NETDEV_XW_PANE_TYPE_S   stPaneType;                   /* 支持的分屏 */
    UINT32                  udwMaxEncodeDevicesNum;       /* 接入编码设备的最大数量 */
    UINT32                  udwMaxVideoSourceNum;         /* 接入通道的最大数量 */
    UINT32                  udwSupportWindowTypeNum;      /* 支持的开窗模式数量 */
    UINT32                  *paudwWindowType;             /* 具体的开窗模式枚举 ，参考枚举定义#NETDEV_XW_LAYOUT_NUM_E ,需根据支持的开窗模式数量动态分配内存*/
    BOOL                    bAutoSelectSignalSrc;         /* 自动选择信号源 0:不支持 1:支持 */
    BYTE                    byRes[44];                    /* 保留字段 */
}NETDEV_XW_SUPPORT_CAP_S, *LPNETDEV_XW_SUPPORT_CAP_S;

/**
 * @brief "XW"设备扩展视频输出制式能力集
 * @attention
 */
typedef struct tagNETDEVXWFormatListEx
{
    UINT32      udwVideoOutID;                             /*视频输出通道ID,是视频通道输出口的唯一标识。通过获取设备物理资源接口获取，和创建电视墙绑定通道接口下发的VideoOutID保持一致。*/
    UINT32      udwFormatNum;                              /* 视频输出通道支持的视频制式数量 */
    UINT32      adwFormatList[NETDEV_VIDEO_FORMAT_MAX];    /* 支持的视频输出制式 NETDEV_VIDEO_FORMAT_E */

    BYTE        byRes[64];                                  /* 保留字段 */
}NETDEV_XW_FORMAT_EX_LIST_S, *LPNETDEV_XW_FORMAT_EX_LIST_S;

/**
 * @brief "XW"设备能力集
 * @attention
 */
typedef struct tagNETDEVXWCAPINFO
{
    NETDEV_XW_TVWALL_CAP_S          stTVWall;               /* 电视墙能力集 */
    NETDEV_XW_FORMAT_LIST_S         stVideoFormats;         /* 视频输出制式列表 */
    NETDEV_XW_Wnd_CAP_S             stWnd;                  /* 窗口能力集 */
    NETDEV_XW_BASEMAP_CAP_S         stBaseMap;              /* 底图能力集 */
    NETDEV_XW_VIRTUALLED_CAP_S      stVirtualLED;           /* 虚拟LED能力集 */
    NETDEV_XW_SEQUENCE_CAP_S        stSequence;             /* 轮巡能力集 */
    NETDEV_XW_SUPPORT_CAP_S         stSupport;              /* 特性能力集 */
    BOOL                            bIsRSASupported;        /* 是否使用RSA加密 */
    BOOL                            bIsDevMgrSupported;     /* 是否支持管理设备 */
    BOOL                            bIsDecodeSupported;     /* 是否支持解码 */
    BOOL                            bIsChromaCalSupported;  /* 是否支持色度校正 */
    UINT32                          udwSuggestVideoFormat;  /* 推荐分辨率 参见#NETDEV_VIDEO_FORMAT_E*/
    UINT32                          udwSupportExVideoFormatNum;/* 支持的扩展视频输出制式数量 */
    LPNETDEV_XW_FORMAT_EX_LIST_S    pstVideoFormatsEx;      /* 支持的扩展视频输出制式列表 ,需根据udwSupportExVideoFormatNum动态分配内存*/
    UINT32                          udwBatchCapabilities;   /* 批量操作能力，按Bit位描述 Bit1:开关窗 Bit2:漫游 Bit3:分屏 Bit4:窗口序号 */
    BOOL                            bIsOrderNOSupported;    /* 是否支持控制序号 */
    BYTE                            byRes[32];              /* 保留字段 */
}NETDEV_XW_CAP_INFO_S, *LPNETDEV_XW_CAP_INFO_S;

/**
 * @brief 电视墙屏幕配置
 * @attention
 */
typedef struct tagNETDEVTVWallScreen
{
    UINT32                          udwRowNum;                          /* 电视墙行单元数量 */
    UINT32                          udwColNum;                          /* 电视墙列单元数量 */
    UINT32                          udwFormat;                          /* 屏幕输出制式 NETDEV_VIDEO_FORMAT_E */
    CHAR                            szFormat[NETDEV_FORMAT_NAME_LEN];   /* 无需配置 屏幕输出制式 */
    NETDEV_XW_RESOLUTION_S          stResolution;                       /* 屏幕像素 */
    BYTE                            byRes[64];                          /* 保留字段 */
}NETDEV_TVWALL_SCREEN_S, *LPNETDEV_TVWALL_SCREEN_S;

/**
 * @brief 特殊输出制式配置
 * @attention
 */
typedef struct tagNETDEVTVWallFORMATSPECList
{
    UINT32                          udwScreenID;                        /* 屏幕序号(从1开始) */
    UINT32                          udwFormat;                          /* 屏幕输出制式 NETDEV_VIDEO_FORMAT_E */
    CHAR                            szFormat[NETDEV_FORMAT_NAME_LEN];   /* 无需配置 屏幕输出制式 */
    BYTE                            byRes[32];                          /* 保留字段 */
}NETDEV_TVWALL_FORMAT_SPEC_S, *LPNETDEV_TVWALL_FORMAT_SPEC_S;

/**
 * @brief 特殊模组框配置
 * @attention
 */
typedef struct tagNETDEVTVWallLEDSPECList
{
    UINT32                  udwScreenID;        /* 屏幕序号(从1开始) */
    NETDEV_XW_RESOLUTION_S  stResolution;       /* 屏幕像素 */
    BYTE                    byRes[32];          /* 保留字段 */
}NETDEV_TVWALL_LED_SPEC_S, *LPNETDEV_TVWALL_LED_SPEC_S;

/**
 * @brief 物理输出端口配置
 * @attention
 */
typedef struct tagNETDEVTVWallVOUTList
{
    UINT32  udwScreenID;        /* 屏幕序号(从1开始) */
    UINT32  udwVideoOutID;      /* 物理输出端口ID */
    BYTE    byRes[32];          /* 保留字段 */
}NETDEV_TVWALL_VIDED_OUT_S, *LPNETDEV_TVWALL_VIDED_OUT_S;

/**
 * @brief "XW"视频输出通道信息
 * @attention
 */
typedef struct tagNETDEVXWVideoOutInfo
{
    INT32   dwChannelID;                   /* 通道ID */
    INT32   dwSlotID;                      /* 槽位ID */
    INT32   dwIndex;                       /* 序号 */
    UINT32  udwVideoPortType;              /* 通道类型 NETDEV_VIDEO_PORT_TYPE_E */
    UINT32  udwStatus;                     /* 通道在线状态 参见 NETDEV_CHN_STATUS_E */
}NETDEV_XW_VIDEO_OUT_INFO_S, *LPNETDEV_XW_VIDEO_OUT_INFO_S;

/**
 * @brief 电视墙屏幕配置
 * @attention
 */
typedef struct tagNETDEVXWTVWallCfg
{
    UINT32                          udwTVWallID;                                    /* 电视墙ID */
    CHAR                            szTVWallCode[NETDEV_LEN_64];                    /* 电视墙编码（可选字段），由设备端分配，字符串长度范围[1,64] */
    CHAR                            szName[NETDEV_TVWALL_NAME_LEN];                 /* 电视墙名称 */
    UINT32                          udwOrderNo;                                     /* 电视墙序号 */
    NETDEV_TVWALL_SCREEN_S          stScreenInfo;                                   /* 电视墙屏幕配置 */
    UINT32                          udwFormatSpecNum;                               /* 特殊输出制式数量 */
    NETDEV_TVWALL_FORMAT_SPEC_S     astFormatSpec[NETDEV_FORMAT_SPEC_MAX];          /* 特殊输出制式配置 */
    UINT32                          udwLedSpecNum;                                  /* 特殊模组框数量 */
    NETDEV_TVWALL_LED_SPEC_S        astLedSpec[NETDEV_LED_SPEC_MAX];                /* 特殊模组框配置 */
    UINT32                          udwVideoOutNum;                                 /* 物理输出端口数量 */
    NETDEV_TVWALL_VIDED_OUT_S       astVideoOut[NETDEV_VIDEO_OUT_MAX];              /* 物理输出端口列表 */
    UINT32                          udwTVWallType;                                  /* 电视墙类型 */
    INT32                           dwXWDeviceID;                                   /* -1表示DC设备，>0表示ADU设备ID */
    UINT32                          udwZoomEnabled;                                 /* 是否缩放，0:不缩放，1:缩放 */
    BYTE                            byRes[176];                                     /* 保留字段 */
}NETDEV_XW_TVWALL_CFG_S, *LPNETDEV_XW_TVWALL_CFG_S;

/**
 * @brief 场景基本信息
 * @attention
 */
typedef struct tagNETDEVXWSceneInfoBase
{
    UINT32  udwSceneID;                         /* 场景ID */
    CHAR    szName[NETDEV_SCENE_NAME_LEN];      /* 场景名称 */
    UINT32  udwOrderNo;                         /* 场景序号 */
    UINT32  udwTVWallID;                        /* 电视墙ID */
    UINT32  udwStatus;                          /* 0表示不启用，1表示启用 */
    BYTE    byRes[20];                          /* 保留字段 */
}NETDEV_XW_SCENE_INFO_BASE_S, *LPNETDEV_XW_SCENE_INFO_BASE_S;

/**
 * @brief 场景修改信息
 * @attention
 */
typedef struct tagNETDEVXWSceneModifyInfo
{
    NETDEV_XW_SCENE_INFO_BASE_S     stSceneBaseInfo;             /* 场景信息 */
    INT32                           dwModifyType;                /* 修改类型，参见NETDEV_XW_SCENE_MODIFY_TYPE_E modify type see #NETDEV_XW_SCENE_MODIFY_TYPE_E */
    BYTE                            byRes[128];                  /* 保留字段 */
}NETDEV_XW_SCENE_MODIFY_INFO_S, *LPNETDEV_XW_SCENE_MODIFY_INFO_S;

/**
 * @brief 场景简要信息
 * @attention
 */
typedef struct tagNETDEVXWSceneInfoShort
{
    NETDEV_XW_SCENE_INFO_BASE_S     stSceneBase;        /* 场景基本 */
    UINT32                          udwIsCurrent;       /* 是否当前场景 0:非当前场景 1:当前场景 */
    BYTE                            byRes[64];          /* 保留字段 */
}NETDEV_XW_SCENE_INFO_BASIC_S, *LPNETDEV_XW_SCENE_INFO_BASIC_S;

/**
 * @brief 计划内容信息
 * @attention
 */
typedef struct tagNETDEVXWCfgTime
{
    CHAR    szBeginTime[NETDEV_TIME_LEN];   /* 起始时间 如果全天填00:00:00 */
    CHAR    szEndTime[NETDEV_TIME_LEN];     /* 结束时间 如果全天填24:00:00 */
    UINT32  udwSceneID;                     /* 场景ID */
}NETDEV_XW_CFG_TIME_S, *LPNETDEV_XW_CFG_TIME_S;

/**
 * @brief 周计划信息
 * @attention
 */
typedef struct tagNETDEVXWPlanCfg
{
    UINT32                  udwDayOfWeek;                       /* 周几 NETDEV_WEEK_INFO */
    UINT32                  udwSize;                            /* 时间段数量 */
    NETDEV_XW_CFG_TIME_S    stTime[NETDEV_PLAN_SECTION_NUM];    /* 时间段信息 */
}NETDEV_XW_PLAN_CFG_S, *LPNETDEV_XW_PLAN_CFG_S;

/**
 * @brief 场景计划配置
 * @attention
 */
typedef struct tagNETDEVXWScenePlan
{
    UINT32                  udwPlanID;                          /* 计划ID */
    BOOL                    bIsEnabled;                         /* 计划是否启用 */
    NETDEV_XW_PLAN_CFG_S    astConfig[NETDEV_PLAN_NUM_AWEEK];   /* 计划配置信息 */
    BYTE                    byRes[64];                          /* 保留字段 */
}NETDEV_XW_SCENE_PLAN_S, *LPNETDEV_XW_SCENE_PLAN_S;


/**
 * @brief XW窗口分屏信息
 * @attention
 */
typedef struct tagNETDEVXWPaneInfo
{
    UINT32      udwPaneID;              /* 分屏序号 */
    INT32       dwChannelID;            /* 通道ID */
    UINT32      udwStreamIndex;         /* 流索引 */
    UINT32      udwTaskNo;              /* 业务号 */
    UINT32      udwTransProtocal;       /* 传输协议 参见 NETDEV_TRANS_PROTOCAL_E */
    UINT32      udwSessionType;         /* 分屏业务类型 参见 NETDEV_SESSION_TYPE_E */
}NETDEV_XW_PANE_INFO_S, *LPNETDEV_XW_PANE_INFO_S;

/**
 * @brief 场景窗口信息
 * @attention
 */
typedef struct tagNETDEVXWSceneWndInfo
{
    UINT32                  udwWndID;                           /* 窗口ID */
    UINT32                  udwModifyCmd;                       /* 修改可选命令字 NETDEV_XW_WND_CMD */
    CHAR                    szWndName[NETDEV_WND_NAME_LEN];     /* 窗口名称 */
    UINT32                  udwPaneMod;                         /* 分屏模式,默认1分屏 NETDEV_XW_LAYOUT_NUM_E */
    UINT32                  udwLayer;                           /* 图层，数字大的在最上层*/
    UINT32                  udwTransparency;                    /* 透明度：默认0 不透明,100 全透明 0-100的其他值表明部分透明*/
    NETDEV_XW_AREA_S        stArea;                             /* 位置信息 */
    UINT32                  udwZoomType;                        /* 放大类型 参见NETDEV_XW_ZOOM_TYPE_E zoom Type see NETDEV_XW_ZOOM_TYPE_E */
    UINT32                  udwSplitIndex;                      /* 分屏序号 当udwZoomType为NETDEV_XW_ZOOM_TYPE_SPLIT时有效 */
    UINT32                  udwSchemeResID;                      /* 轮巡资源ID */
    UINT32                  udwSeqStatus;                        /* 轮巡状态参见NETDEV_SEQ_STATUS_E */
    UINT32                  udwPaneSize;                         /* 分屏数量*/
    NETDEV_XW_PANE_INFO_S   astPaneInfoList[NETDEV_XW_MAX_PANE_NUM];      /* 所有分屏信息*/
    UINT32                  udwWndType;                          /* 窗口类型 参见枚举NETDEV_TVWALL_WND_TPYE*/
    UINT32                  udwDChlID;                           /* DC通道ID */
    UINT32                  udwStatus;                           /* 0表示不锁定，1表示锁定 */
    UINT32                  udwScaleEnabled;                     /* 缩放状态 详见 NETDEV_SCALE_ENABLED_E 该字段仅在LED发送控制设备使用，默认为满比例缩放 */
    BYTE                    byRes[240];                          /* 保留字段 */
}NETDEV_XW_SCENE_WND_INFO_S, *LPNETDEV_XW_SCENE_WND_INFO_S;

/**
 * @brief 鉴权信息
 * @attention
 */
typedef struct tagNETDEVAuthentication
{
    BOOL                            bIsNeedAuthentication;                 /* 是否需要鉴权 */
    CHAR                            szUserName[NETDEV_USER_NAME_ENCRYPT_LEN];/* 视频源用户名 */
    CHAR                            szPassword[NETDEV_PASSWORD_ENCRYPT_LEN]; /* 视频源密码 */
    NETDEV_AUTH_MODEL_E            enAuthModel;                           /* 保留字段，暂不使用。加密类型 参考枚举#NETDEV_XW_AUTH_MODEL_E */
    BYTE                            byRes[64];                            /* 保留字段 */
}NETDEV_AUTHENTICATION_S, *LPNETDEV_AUTHENTICATION_S;

/**
 * @brief 远端回放的视频源信息
 * @attention
 */
typedef struct tagNETDEVXWChannels
{
    UINT32                      udwVideoInID;                       /* 视频源ID */
    CHAR                        szReplayURL[NETDEV_MAX_URL_LEN];    /* 回放URL */
    NETDEV_AUTHENTICATION_S     stAuthentication;                   /* 鉴权信息 */
    UINT32                      udwTransProtocol;                   /* 传输协议 NETDEV_LAPI_TRANS_PROTOCOL_E 本地输入时无需配置*/
    UINT32                      udwMulticast;                       /* 单组播 NETDEV_STREAM_TYPE_E 本地输入时无需配置*/
    INT64                       tBeginTime;                         /* 开始时间 */
    INT64                       tEndTime;                           /* 结束时间 */
    UINT32                      udwManageType;                      /* 资源管理类型，参见枚举NETDEV_XW_MANAGE_TYPE_E  */
    UINT32                      udwSessionID;                       /* 回放上墙前预览时，客户端和Xware基于RTSP协议协商的SessionID。ManageType=1时使用该字段。 */
    BYTE                        byRes[56];                          /* 保留字段 */
}NETDEV_XW_CHANNELS_S, *LPNETDEV_XW_CHANNELS_S;

/**
 * @brief "XW"设备ID信息
 * @attention
 */
typedef struct tagNETDEVXWDisplayerID
{
    UINT32  udwTVWallID;    /* 电视墙ID */
    UINT32  udwWndID;       /* 窗口ID */
    UINT32  udwPaneID;      /* 分屏序号 */
    BYTE    byRes[16];      /* 保留字段 */
}NETDEV_XW_DISPLAYER_ID_S, *LPNETDEV_XW_DISPLAYER_ID_S;

/**
 * @brief 远端实况的视频源基本信息
 * @attention
 */
typedef struct tagNETDEVXWVideoSourceBase
{
    UINT32                      udwVideoInID;                       /* 视频源ID */
    CHAR                        szRealplayURL[NETDEV_MAX_URL_LEN];  /* 媒体流URL 本地输入时无需配置*/
    UINT32                      udwStreamID;                        /* 媒体流序号 */
    NETDEV_AUTHENTICATION_S     stAuthentication;                   /* 鉴权信息 */
    UINT32                      udwTransProtocol;                   /* 传输协议 NETDEV_LAPI_TRANS_PROTOCOL_E 本地输入时无需配置*/
    UINT32                      udwMulticast;                       /* 单组播 NETDEV_STREAM_TYPE_E 本地输入时无需配置*/
    UINT32                      udwType;                            /* 实况类型 参考 NETDEV_XW_REALPLAY_TYPE_E */
    UINT32                      udwManageType;                      /* 资源管理类型，参见枚举NETDEV_XW_MANAGE_TYPE_E  */
    BYTE                        byRes[28];                         /* 保留字段 */
}NETDEV_XW_VIDEO_SOURCE_BASE_S, *LPNETDEV_XW_VIDEO_SOURCE_BASE_S;

/**
 * @brief 文字信息
 * @attention
 */
typedef struct tagNETDEVXWContentInfo
{
    CHAR  szContent[NETDEV_LEN_260];   /* 文字内容 */
    UINT32  udwFontType;               /* 文字字体 参见枚举定义# NETDEV_XW_LED_FONT_FORMAT_E */
    UINT32  udwFontSize;               /* 文字大小 0：自适应，48-1024:指定的字体像素高度 */
    UINT32  udwColor;                  /* 文字颜色，颜色以RGB的方式描述 0xABCDEF，AB：表示R的值，00~FF，CD：表示G的值，00~FF，EF：表示B的值，00~FF。默认：0xFF0000（红色）*/
    UINT32  udwPosition;               /* 文字位置 参加枚举定义# NETDEV_XW_CONTENT_POSITION_E*/
    BYTE    byRes[128];                /* 保留字段 */
}NETDEV_XW_CONTENT_INFO_S, *LPNETDEV_XW_CONTENT_INFO_S;

/**
 * @brief 远端实况的视频源信息
 * @attention
 */
typedef struct tagNETDEVXWVideoSource
{
    NETDEV_XW_DISPLAYER_ID_S    stDisplayerID;                      /* 设备ID信息 */
    UINT32                      udwVideoInID;                       /* 视频源ID */
    CHAR                        szRealplayURL[NETDEV_MAX_URL_LEN];  /* 媒体流URL 本地输入时无需配置*/
    UINT32                      udwStreamID;                        /* 媒体流序号 */
    NETDEV_AUTHENTICATION_S     stAuthentication;                   /* 鉴权信息 */
    UINT32                      udwTransProtocol;                   /* 传输协议 NETDEV_LAPI_TRANS_PROTOCOL_E 本地输入时无需配置*/
    UINT32                      udwMulticast;                       /* 单组播 NETDEV_STREAM_TYPE_E 本地输入时无需配置*/
    UINT32                      udwType;                            /* 实况类型 参考 NETDEV_XW_REALPLAY_TYPE_E */
    UINT32                      udwDecodeType;                      /* 解码类型 参考NETDEV_XW_DECODE_TYPE_E */
    UINT32                      udwManageType;                      /* 资源管理类型，参见枚举NETDEV_XW_MANAGE_TYPE_E  */
    LPNETDEV_XW_CONTENT_INFO_S  pstContentInfo;                     /* 文字信息 */
    BYTE                        byRes[56];                          /* 保留字段 */
}NETDEV_XW_VIDEO_SOURCE_S, *LPNETDEV_XW_VIDEO_SOURCE_S;

/**
 * @brief 回放控制信息
 * @attention
 */
typedef struct tagNETDEVXWPlaybackParam
{
    UINT32                          udwTaskNo;                   /* 回放业务号 */
    UINT32                          udwControlType;              /* 回放控制类型 参考 NETDEV_XW_CTRL_TYPE_E */
    UINT32                          udwControlParam;             /* 控制的具体数值，比如快进速度等 */
    BYTE                            byRes[64];                  /* 保留字段 */
}NETDEV_XW_PLAYBACK_PARAM_S, *LPNETDEV_XW_PLAYBACK_PARAM_S;

/**
 * @brief 摄像机业务的视频源信息
 * @attention
 */
typedef struct tagNETDEVXWVideoInSource
{
    UINT32                      udwVideoInChlID;            /* 视频源ID */
    UINT32                      udwStreamID;                /* 媒体流序号 */
    CHAR                        szURL[NETDEV_MAX_URL_LEN];  /* 媒体流URL */
    NETDEV_AUTHENTICATION_S     stAuthentication;           /* 鉴权信息 */
    UINT32                      udwSeqIntervalSec;          /* 轮巡间隔，单位：秒 只有是轮巡时才需要配置 */
    UINT32                      udwPreset;                  /* 预置位序号 只有是轮巡时才需要配置 */
    BYTE                        byRes[32];                  /* 保留字段 */
}NETDEV_XW_VIDEO_IN_SOURCE_S, *LPNETDEV_XW_VIDEO_IN_SOURCE_S;

/**
 * @brief 摄像机业务信息
 * @attention
 */
typedef struct tagNETDEVXWVideoInChannelInfo
{
    UINT32                          udwWndID;                                   /* 窗口ID */
    UINT32                          udwPaneID;                                  /* 分屏序号 0表示窗口轮巡*/
    UINT32                          udwSourceSize;                              /* 摄像机业务中视频源数量 */
    NETDEV_XW_VIDEO_IN_SOURCE_S     astVideoInSource[NETDEV_SEQUENCE_SRC_MAX];        /* 摄像机业务中视频源信息 */
    BYTE                            byRes[32];                                  /* 保留字段 */
}NETDEV_XW_VIDEO_IN_CHANNEL_INFO_S, *LPNETDEV_XW_VIDEO_IN_CHANNEL_INFO_S;

/**
 * @brief 背景
 * @attention
 */
typedef struct tagNETDEVXWBackground
{
    UINT32  udwTransparency;    /* 透明度 0－全透明 默认,100－不透明 */
    UINT32  udwBaseColor;       /* 颜色 RGB方式:0xABCDEF AB表示R 00~FF;CD表示G 00~FF;EF表示B 00~FF;默认：0xFFFFFF（白色）*/
    BYTE    byRes[16];          /* 保留字段 */
}NETDEV_XW_BACKGROUND_S, *LPNETDEV_XW_BACKGROUND_S;

/**
 * @brief 文字信息描述
 * @attention
 */
typedef struct tagNETDEVXWFontInfo
{
    UINT32  udwFont;                /* 字体 NETDEV_XW_LED_FONT_FORMAT_E */
    UINT32  udwSize;                /* 字体大小 0到7参照枚举：NETDEV_XW_LED_FONT_SIZE_E,其余取值范围[48,1024]，表示实际像素高度  */
    UINT32  udwReferFontSize;       /* 参考字体大小 当udwSize选择自适应后该字段必选 值范围参照Size字段*/ 
    UINT32  udwGap;                 /* 字间距  参见枚举 NETDEV_XW_LED_FONT_GAP_E */
    UINT32  udwHorizontalAlign;     /* 水平对齐方式 NETDEV_XW_HORIZONTAL_ALIGN_MODE_E */
    UINT32  udwVerticalAlign;       /* 垂直对齐方式 NETDEV_XW_VERTICAL_ALIGN_MODE_E */
    UINT32  udwColor;               /* 颜色 RGB方式:0xABCDEF AB表示R 00~FF;CD表示G 00~FF;EF表示B 00~FF;默认：0xFFFFFF（白色）*/
    UINT32  udwScrollMode;          /* 文字滚动方式 NETDEV_XW_LED_SCROLLING_MODE_E  */
    UINT32  udwScrollRateSec;       /* 滚动速度，单位：秒,有条件选择，当ScrollingMode为非1值时，必选；默认1秒 1x－10x可选，1x最慢 ，当文字滚动类型为2/3/4/5时必选*/
    UINT32  udwReferFontGap;        /* 参考字间距大小,当udwGap选择自适应时该字段有效，取值范围0~1024（实际像素宽度） */
    BOOL    bBold;                  /* 粗体  0:不加粗, 1:加粗 */
    BOOL    bSlope;                 /* 倾斜  0:不倾斜, 1:倾斜 */ 
    BOOL    bUnderline;             /* 下划线  0:无下划线, 1:有下划线 */
    UINT32  udwLineSpace;           /* 指定行间距像素 */
    BYTE   byRes[12];               /* 保留字段 */
}NETDEV_XW_FONT_INFO_S, *LPNETDEV_XW_FONT_INFO_S;/* 虚拟LED信息 */

/**
 * @brief 虚拟LED信息
 * @attention
 */
typedef struct tagNETDEVXWVirtualLEDInfo
{
    UINT32                  udwLEDID;                    /* 虚拟LED的ID */
    UINT32                  udwModifyCmd;                /* 修改可选命令字 NETDEV_XW_LED_CMD_E */
    UINT32                  udwEnable;                   /* 虚拟LED是否启用 0不使能 1使能 */
    UINT32                  udwType;                     /* 虚拟LED类型 NETDEV_XW_LED_TYPE_E */
    NETDEV_XW_AREA_S        stArea;                      /* 虚拟LED的位置信息 */
    NETDEV_XW_BACKGROUND_S  stBackground;                /* 背景 */
    NETDEV_XW_FONT_INFO_S   stFontInfo;                  /* 文字信息描述 */
    CHAR                   szText[NETDEV_TEXT_LEN];     /* 文字内容 */
    BYTE                   byRes[32];                   /* 保留字段 */
}NETDEV_XW_VIRTUAL_LED_INFO_S, *LPNETDEV_XW_VIRTUAL_LED_INFO_S;

/*******************************批量开关窗Begin*****************************/
/**
* @brief 批量开窗场景窗口信息
* @attention
*/
typedef struct tagNETDEVXWSenceBatchWnd
{
    UINT32                          udwReqSeq;              /* 请求数据序号 */
    NETDEV_XW_SCENE_WND_INFO_S      stSenceWndInfo;         /* 窗口信息 */
    BYTE                            byRes[32];              /* 保留字段 */
}NETDEV_XW_SENCE_BATCH_WND_S, *LPNETDEV_XW_SENCE_BATCH_WND_S;

/**
 * @brief 批量开窗窗口信息列表
 * @attention
 */
typedef struct tagNETDEVXWBatchWindowInfoList
{
    UINT32                          udwOperation;                 /*窗口批量操作类型 0：窗口批量漫游 1：窗口批量设置分屏 */
    UINT32                          udwNum;                       /*窗口数量*/
    LPNETDEV_XW_SENCE_BATCH_WND_S   pstSceneWinInfo;              /*窗口详细信息列表*/
    BYTE                            byRes[256];                   /* 保留字段 */
}NETDEV_XW_WND_INFO_LIST_S,*LPNETDEV_XW_WND_INFO_LIST_S;

/**
* @brief 批量开窗场景窗口返回信息
* @attention
*/
typedef struct tagNETDEVXWSenceBatchResultWnd
{
    UINT32  udwReqSeq;      /* 请求数据序号 */
    UINT32  udwResuleCode;  /* 返回错误码 */
    UINT32  udwWinID;       /* 窗口ID */
}NETDEV_XW_BATCH_RESULT_WND_S, *LPNETDEV_XW_BATCH_RESULT_WND_S;

/**
* @brief 批量开窗场景窗口返回信息列表
* @attention
*/
typedef struct tagNETDEVXWSenceBatchResultList
{
    UINT32                              udwSize;            /* 窗口数量 */
    UINT32                              udwLastChange;      /* 摘要字 */
    LPNETDEV_XW_BATCH_RESULT_WND_S      pstResultInfo;      /* 窗口信息,根据窗口数量动态申请内存 */
    BYTE                                byRes[32];          /* 保留字段 */
}NETDEV_XW_BATCH_RESULT_LIST_S, *LPNETDEV_XW_BATCH_RESULT_LIST_S;

/**
 * @brief 轮询资源信息
 * @attention
 */
typedef struct tagNETDEVXWSequenceSource
{
    UINT32                          udwInterval;                                /* 轮巡间隔 单位秒 */
    UINT32                          udwPreset;                                 /* 预置位序号 */
    NETDEV_XW_VIDEO_SOURCE_BASE_S   stVideoSourceBase;                          /* 摄像机业务中视频源信息 */
    BYTE                            byRes[32];                                 /* 保留字段 */
}NETDEV_XW_SEQUENCE_SOURCE_S, *LPNETDEV_XW_SEQUENCE_SOURCE_S;

/**
 * @brief 轮询资源列表信息
 * @attention
 */
typedef struct tagNETDEVXWSequenceSourceList
{
    UINT32                          udwWndID;                                   /* 窗口ID */
    UINT32                          udwSourceSize;                              /* 摄像机业务中视频源数量 */
    NETDEV_XW_SEQUENCE_SOURCE_S     astSequenceSource[NETDEV_SEQUENCE_SRC_MAX]; /* 摄像机业务中视频源信息 */
    BYTE                            byRes[32];                                  /* 保留字段 */
}NETDEV_XW_SEQUENCE_SOURCE_LIST_S, *LPNETDEV_XW_SEQUENCE_SOURCE_LIST_S;

/**
 * @brief 所有底图信息
 * @attention
 */
typedef struct tagNETDEVXWBaseMapInfo
{
    UINT32                      udwID;                              /* 底图ID，整个设备唯一 */
    CHAR                        szName[NETDEV_BMAP_NAME_LEN];       /* 底图名称 */
    UINT32                      udwFormat;                          /* 底图格式 NETDEV_XW_BASE_TYPE_E */
    NETDEV_XW_RESOLUTION_S      stResolution;                       /* 底图分辨率 */
    UINT32                      udwThumbnailData;                   /* 缩略图数据 */
    BYTE                        byRes[300];                         /* 保留字段 */
}NETDEV_XW_BASE_MAP_INFO_S, *LPNETDEV_XW_BASE_MAP_INFO_S;

/**
 * @brief 轮巡资源绑定信息
 * @attention
 */
typedef struct tagNETDEVXWSequenceResourceBindBaseInfo
{
    UINT32          udwID;                                  /* 轮巡资源绑定信息ID,添加时可选 */
    UINT32          udwSequenceResID;                       /* 轮巡资源ID */
    UINT32          udwIntervalTime;                        /* 业务的时间间隔，单位：秒 */
    UINT32          udwStatus;                              /* 轮巡状态，参见枚举NETDEV_XW_SEQUENCE_RES_STATUS_E */
    UINT32          udwWndNum;                              /* 窗口数量 */
    UINT32          audwWndIDList[NETDEV_SEQ_RES_WIN_MAX];  /* 窗口ID列表，内存由用户维护，规格由能力集接口获取 */
    BYTE            byRes[256];                             /* 保留字段 */
}NETDEV_XW_SEQUENCE_RES_BIND_INFO_S, *LPNETDEV_XW_SEQUENCE_RES_BIND_INFO_S;

/**
 * @brief 场景详细信息
 * @attention
 */
typedef struct tagNETDEVXWSceneInfoDetail
{
    CHAR                                    szName[NETDEV_SCENE_NAME_LEN];      /* 场景名称 */
    UINT32                                  udwTVWallID;                        /* 电视墙ID */
    CHAR                                    szTVWallCode[NETDEV_LEN_64];        /* 电视墙编码（可选字段），由设备端分配，字符串长度范围[1,64] */
    NETDEV_XW_BASE_MAP_INFO_S               stBaseMapInfo;                      /* 底图信息 */
    UINT32                                  udwVirtualLedNum;                   /* 虚拟LED数量 */
    LPNETDEV_XW_VIRTUAL_LED_INFO_S          pstVirtualLedInfo;                  /* 虚拟LED信息 */
    UINT32                                  udwWndNum;                          /* 窗口数量 */
    LPNETDEV_XW_SCENE_WND_INFO_S            pstWndInfo;                         /* 窗口信息 */
    UINT32                                  udwLiveBindNum;                     /* 绑定实况业务数量 */
    LPNETDEV_XW_VIDEO_SOURCE_S              pstVideoSource;                     /* 绑定实况业务信息 */
    UINT32                                  udwSequenceBindNum;                 /* 绑定轮巡业务数量 */
    LPNETDEV_XW_SEQUENCE_SOURCE_LIST_S      pstSequenceSourceList;              /* 绑定轮巡业务信息 */
    UINT32                                  udwWindowsSequenceBindNum;          /* 绑定窗口组业务数量 */
    LPNETDEV_XW_SEQUENCE_RES_BIND_INFO_S    pstWindowsSequenceBindList;         /* 绑定窗口组轮巡业务的详细信息 */
    UINT32                                  udwLinkedSceneID;                   /* 关联场景ID */
    UINT32                                  udwLinkedSceneOrderNo;              /* 关联场景序号 */
    UINT32                                  udwSceneSessionMode;                /* 场景的业务模式 参见枚举定义# NETDEV_SCENE_SESSION_MODE_E*/

    BYTE                                    byRes[172];                         /* 保留字段 */
}NETDEV_XW_SCENE_INFO_DETAIL_S, *LPNETDEV_XW_SCENE_INFO_DETAIL_S;

/**
 * @brief "XW"编码通道信息
 * @attention
 */
typedef struct tagNETDEVXWChannelsNum
{
    UINT32  udwVideoInNum;               /* 视频输入通道数量 */
    UINT32  udwVideoOutNum;              /* 视频输出通道数量 */
    UINT32  udwAudioInNum;               /* 音频输入通道数量 */
    UINT32  udwAudioOutNum;              /* 音频输出通道数量 */
    BYTE    byRes[64];                  /* 保留字段 */
}NETDEV_XW_CHANNELS_NUM_S, *LPNETDEV_XW_CHANNELS_NUM_S;

/**
 * @brief "XW"视频输入通道信息
 * @attention
 */
typedef struct tagNETDEVXWVideoInInfo
{
    INT32   dwChannelID;            /* 通道ID */
    INT32   dwIndex;                /* 序号 */
    UINT32  udwVideoPortType;       /* 通道类型 NETDEV_VIDEO_PORT_TYPE_E */
    UINT32  udwStatus;              /* 通道在线状态 参见 NETDEV_CHN_STATUS_E */
    BYTE    byRes[60];              /* 保留字段 */
}NETDEV_XW_VIDEO_IN_INFO_S, *LPNETDEV_XW_VIDEO_IN_INFO_S;

/**
 * @brief "XW"音频输出通道信息
 * @attention
 */
typedef struct tagNETDEVXWAudioOutInfo
{
    INT32   dwChannelID;            /* 通道ID */
    UINT32  udwAudioPortType;       /* 通道类型 NETDEV_AUDIO_PORT_TYPE_E */
    UINT32  udwIndex;               /* 序号，和设备丝印的序号保持一致 */
    UINT32  udwStatus;              /* 通道在线状态 参见 NETDEV_CHN_STATUS_E */
    BYTE    byRes[56];              /* 保留字段 */
}NETDEV_XW_AUDIO_OUT_INFO_S, *LPNETDEV_XW_AUDIO_OUT_INFO_S;

/**
 * @brief "XW"音频输入通道信息
 * @attention
 */
typedef struct tagNETDEVXWAudioInInfo
{
    INT32   dwChannelID;            /* 通道ID */
    UINT32  udwAudioPortType;       /* 通道类型 NETDEV_AUDIO_PORT_TYPE_E */
    UINT32  udwIndex;               /* 序号，和设备丝印的序号保持一致 */
    UINT32  udwStatus;              /* 通道在线状态 参见 NETDEV_CHN_STATUS_E */
    BYTE    byRes[56];              /* 保留字段 */
}NETDEV_XW_AUDIO_IN_INFO_S, *LPNETDEV_XW_AUDIO_IN_INFO_S;

/**
 * @brief "XW"串口通道信息
 * @attention
 */
typedef struct tagNETDEVXWSerialInfo
{
    INT32   dwChannelID;            /* 通道ID */
    INT32   dwIndex;                /* 序号 */
    UINT32  udwSerialPortType;      /* 通道类型 NETDEV_XW_SERIAL_TYPE_E */
    UINT32  udwStatus;              /* 通道在线状态 参见 NETDEV_CHN_STATUS_E */
    BYTE    byRes[60];              /* 保留字段 */
}NETDEV_XW_SERIAL_INFO_S, *LPNETDEV_XW_SERIAL_INFO_S;

/**
 * @brief "XW"通道信息
 * @attention
 */
typedef struct tagNETDEVXWChannelsList
{
    UINT32                          udwVideoInNum;                  /* 视频输入通道数量 需要给出ADU/CDU支持的最大通道数 */
    LPNETDEV_XW_VIDEO_IN_INFO_S     pstVideoIn;                     /* 视频输入通道信息,需根据udwVideoInNum动态分配内存  */
    UINT32                          udwVideoOutNum;                 /* 视频输出通道数量 需要给出ADU/CDU支持的最大通道数*/
    LPNETDEV_XW_VIDEO_OUT_INFO_S    pstVideoOut;                    /* 视频输出通道信息,需根据udwVideoOutNum动态分配内存  */
    UINT32                          udwAudioInNum;                  /* 音频输入通道数量 需要给出ADU/CDU支持的最大通道数*/
    LPNETDEV_XW_AUDIO_IN_INFO_S     pstAudioIn;                     /* 音频输入通道信息,需根据udwAudioInNum动态分配内存  */
    UINT32                          udwAudioOutNum;                 /* 音频输出通道数量 需要给出ADU/CDU支持的最大通道数*/
    LPNETDEV_XW_AUDIO_OUT_INFO_S    pstAudioOut;                    /* 音频输出通道信息,需根据udwAudioOutNum动态分配内存 */
    UINT32                          udwSerialNum;                   /* 串口通道的数量 需要给出ADU/CDU支持的最大通道数*/
    LPNETDEV_XW_SERIAL_INFO_S       pstSerialInfo;                  /* 串口通道信息,需根据udwSerialNum动态分配内存 */
    BYTE                            byRes[56];                      /* 保留字段 */
}NETDEV_XW_CHANNELS_LIST_S, *LPNETDEV_XW_CHANNELS_LIST_S;

/**
* @brief 被动解码发送控制参数信息   
* @attention 无 None
*/
typedef struct tagNETDEVPassiveDecodeSend
{
    INT32 dwTransType;          /*传输方式 */
    INT32 dwBufSize;            /* 数据大小 */
    CHAR *pszBuffer;            /* 数据内容 */
    BYTE byRes[128];            /* 保留字段 */
}NETDEV_PASSIVE_SEND_S, *LPNETDEV_PASSIVE_SEND_S;

/**
 * @brief 图像扩展编码模式 Smart image encoding mode
 * @attention
 */
typedef struct tagNETDEVSmartEncodeInfo 
{
    UINT32 udwH264SmartEncodeModeNum;                                              /* 支持的H.264图像智能编码模式种类个数 Number of smart image encoding in H.264*/
    UINT32 audwH264SmartEncodeModeList[NETDEV_SMART_ENCODE_MODEL_MAX_NUM];         /* 支持的H.265图像智能编码模式种类列表，参见NETDEV_SMART_ENCODE_MODE_E。 List of smart image encoding in H.265. See NETDEV_SMART_ENCODE_MODE_E for reference*/
    UINT32 udwH265SmartEncodeModeNum;                                              /* 支持的H.264图像智能编码模式种类个数 Number of smart image encoding in H.264*/
    UINT32 audwH265SmartEncodeModeList[NETDEV_SMART_ENCODE_MODEL_MAX_NUM];         /* 支持的H.265图像智能编码模式种类列表，参见NETDEV_SMART_ENCODE_MODE_E。 List of smart image encoding in H.265. See NETDEV_SMART_ENCODE_MODE_E for reference */
}NETDEV_SMART_ENCODE_S,*LPNETDEV_SMART_ENCODE_S;


/**
 * @brief 分辨率具体信息 Resolution details
 * @attention
 */
typedef struct tagNETDEVResolutionCapability
{
    UINT32 udwWidth;                                                                  /* 图像宽度 Image width*/
    UINT32 udwHeight;                                                                 /* 图像高度 Image height*/
    UINT32 udwMinBitRate;                                                             /* 最小码率 Minimum bit rate*/
    UINT32 udwMaxBitRate;                                                             /* 最大码率 Maximum bit rate*/
    UINT32 udwDefaultBitRate;                                                         /* 默认码率 Default bit rate*/
}NETDEV_RESOLUTION_CAPABILITY_S,*LPNETDEV_RESOLUTION_CAPABILITY_S;

/**
 * @brief 码流能力信息 Stream capability
 * @attention
 */
typedef struct tagNETDEVStreamCapability
{
    UINT32 udwstreamID;                                                             /* 码流索引，参见枚举NETDEV_LIVE_STREAM_INDEX_E。 Stream index. For enumeration, seeNETDEV_LIVE_STREAM_INDEX_E */
    UINT32 udwResolutionNum;                                                        /* 支持的分辨率个数 Number of resolution*/
    UINT32 udwFrameRateNum;                                                         /* 支持的帧率个数 Number of frame rate*/
    UINT32 udwMaxFrameRate;                                                         /* 当前码流最大帧率 Number of frame rate*/
    UINT32 udwMaxMJPEGFrameRate;                                                    /* 当前码流MJPEG最大帧率 Maximum MJPEG frame rate of current stream*/
    UINT32 audwFrameRateList[NETDEV_LEN_16];                                        /* 支持的帧率数组 Frame rate array*/
    NETDEV_RESOLUTION_CAPABILITY_S astResolutionCapabilityList[NETDEV_LEN_32];      /* 支持的分辨率列表  List of resolution*/
    NETDEV_SMART_ENCODE_S stSmartEncode;                                            /* 图像扩展编码模式 Smart image encoding mode*/
}NETDEV_STREAM_CAP_S,*LPNETDEV_STREAM_CAPABILITY_S;

/**
 * @brief 视频制式能力 Video mode capability
 * @attention
 */
typedef struct tagNETDEVVideoModeInfo 
{
    UINT32 udwWidth;                                      /* 图像宽度 Image width*/
    UINT32 udwHeight;                                     /* 图像高度 Image height*/
    UINT32 udwFrameRate;                                  /* 图像帧率 Image frame rate*/
}NETDEV_VIDEO_MODE_INFO_S,*LPNETDEV_VIDEO_MODE_INFO_S;

/**
* @struct tagNETDEVRecordStatus
* @brief 录像状态信息
* @attention 
*/
typedef struct tagNETDEVRecordStatus
{
    INT32   dwChannelID;                    /* 通道号  Channel ID */
    INT32   dwRecordType;                   /* 录像类型 0:手动录像1:事件录像2:交易录像3:定时录像4:其他*/
    INT32   dwRecordStatus;                 /* 录像状态 0:正在录像1:未启动存储2:没有硬盘或硬盘坏3:通道不在线*/
    BYTE    byRes[128];                     /* 保留字节 */
}NETDEV_RECORD_STATUS, *LPNETDEV_RECORD_STATUS;

/**
* @struct tagNETDEVRecordStatusList
* @brief 录像状态信息列表
* @attention 
*/
typedef struct tagNETDEVRecordStatusList
{
    UINT32                  udwSize;                                 /* 录像状态数量 */
    NETDEV_RECORD_STATUS    astRecordStatus[NETDEV_CHANNEL_MAX];      /* 录像状态信息 */
}NETDEV_RECORD_STATUS_LIST_S, *LPNETDEV_RECORD_STATUS_LIST_S;

/**
 * @brief 视频输入通道的视频能力集 Encoding parameter capability
 * @attention
 */
typedef struct tagNETDEVVideoCapInfo
{
    BOOL bIsSupportCfg;                                                             /* 是否支持配置,0: 不支持, 1: 支持 Support configuration or not. 0-No, 1-Yes*/
    BOOL bIsSupportSmoothLevel;                                                     /* 是否支持码流平滑,0: 不支持, 1: 支持 Support smoothing or not. 0-No, 1-Yes*/
    BOOL bIsSupportImageFormat;                                                     /* 图像制式是否可配,0: 不支持, 1: 支持 Support configuration of image mode or not. 0-No, 1-Yes*/
    UINT32 udwEncodeFormatNum;                                                      /* 支持的视频编码格式个数 Number of video compression*/
    UINT32 audwEncodeFormatList[NETDEV_ENCODE_FORMAT_MAX_NUM];                      /* 支持的视频编码格式列表，参见NETDEV_VIDEO_CODE_TYPE_E。 Video compression list. See NETDEV_VIDEO_CODE_TYPE_E for reference */
    UINT32 udwMinIFrameInterval;                                                    /* 支持的I帧间隔最小值 Minimum value of I Frame Interval*/
    UINT32 udwMaxIFrameInterval;                                                    /* 支持的I帧间隔最大值 Maximum value of I Frame Interval*/
    UINT32 udwGOPTypeNum;                                                           /* 支持的GOP类型数量 Number of GOP type*/
    UINT32 audwGOPTypeList[NETDEV_GOP_TYPE_MAX_NUM];                                /* 支持的GOP类型列表 List of GOP type*/
    UINT32 udwVideoModeNum;                                                         /* 支持的视频制式个数 Number of video mode*/
    NETDEV_VIDEO_MODE_INFO_S astVideoModeList[NETDEV_LEN_16];                       /* 视频制式能力列表 List of video mode capability*/
    UINT32 udwStreamCapNum;                                                         /* 支持的码流个数 Number of stream*/
    NETDEV_STREAM_CAP_S astStreamCapList[NETDEV_LEN_16];                            /* 支持的码流能力列表 List of stream capability*/
    BOOL bIsSupportScrambled;                                                       /* 是否支持码流加扰，0: 不支持, 1: 支持 */
    BYTE    byRes[256];                                                             /* 保留字段 */
}NETDEV_VIDEO_STREAM_CAP_EX_S,*LPNETDEV_VIDEO_STREAM_CAP_EX_S;

/**
 * @brief 视频编码参数信息 Video encoding parameter
 * @attention
 */
typedef struct tagNETDEVVideoEncodeInfo
{
    BOOL bEnableSVCMode;                        /* SVC配置,0：关闭,1：开启 SVC configuration. 0-Off, 1-On*/
    UINT32 udwEncodeFormat;                     /* 视频编码格式信息，参见枚举NETDEV_VIDEO_CODE_TYPE_E。  Video Compression. For enumeration, seeNETDEV_VIDEO_CODE_TYPE_E*/
    UINT32 udwWidth;                            /* 图像宽度 Image width*/
    UINT32 udwHeight;                           /* 图像高度 Image height*/
    UINT32 udwBitrate;                          /* 码率 Bit rate*/
    UINT32 udwBitrateType;                      /* 码率类型，参见NETDEV_BIT_RATE_TYPE_E。 Bitrate type. See NETDEV_BIT_RATE_TYPE_E for reference */
    UINT32 udwFrameRate;                        /* 帧率 Frame rate*/
    UINT32 udwGopType;                          /* Gop模式,参见NETDEV_GOP_TYPE_E。 GOP mode. See NETDEV_GOP_TYPE_E for reference */
    UINT32 udwIFrameInterval;                   /* I帧间隔，范围根据能力来定 I Frame Interval. The range depends on capability*/
    UINT32 udwImageQuality;                     /* 图像质量，范围[1, 9]，9代表图像质量最高 Image quality, ranges from 1 to 9. 9 means the highest quality*/
    UINT32 udwSmoothLevel;                      /* 码流平滑等级，范围[1,9]，1代表平滑级别最低 Smoothing level, ranges from 1 to 9. 1 means the lowest level*/
    UINT32 udwSmartEncodeMode;                  /* 智能编码模式，参见NETDEV_SMART_ENCODE_MODE_E。 Smart encoding mode. See NETDEV_SMART_ENCODE_MODE_E for reference*/
}NETDEV_VIDEO_ENCODE_INFO_S,*LPNETDEV_VIDEO_ENCODE_INFO_S;

/**
 * @brief 视频流信息(LAPI) Video stream info(LAPI)
 * @attention
 */
typedef struct tagNETDEVVideoStreamInfoLapi 
{
    BOOL bEnabled;                                                                  /* 视频流是否启用编码 Enable encoding for video stream or not*/
    UINT32 udwStreamID;                                                             /* 码流索引，参见枚举NETDEV_LIVE_STREAM_INDEX_E。 Stream index. For enumeration, seeNETDEV_LIVE_STREAM_INDEX_E*/
    UINT32 udwMainStreamType;                                                       /* 主码流类型，参见NETDEV_MAIN_STREAM_TYPE_E。 Main stream. See NETDEV_MAIN_STREAM_TYPE_E for reference */
    NETDEV_VIDEO_ENCODE_INFO_S stVideoEncodeInfo;                                   /* 视频编码参数信息 Video encoding parameter*/
}NETDEV_VIDEO_STREAM_INFO_EX_S,*LPNETDEV_VIDEO_STREAM_INFO_EX_S;

/**
 * @brief 视频流信息列表 Video stream list
 * @attention
 */
typedef struct tagNETDEVVideoStreamInfoList 
{
    UINT32 udwNum;                                                              /* 视频流个数 Number of video stream*/
    NETDEV_VIDEO_STREAM_INFO_EX_S astVideoStreamInfoList[NETDEV_LEN_16];        /* 视频流信息列表 Video stream list*/
}NETDEV_VIDEO_STREAM_INFO_LIST_S,*LPNETDEV_VIDEO_STREAM_INFO_LIST_S;



/*********************** 开关量配置  Boolean configuration***************************** */

/**
 * @brief  告警开关量输入信息 结构体定义  Alarm boolean inputs info Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVAlarmInputInfo
{
    CHAR  szName[NETDEV_LEN_64];                /* 输入开关量名称   Name of input alarm */
}NETDEV_ALARM_INPUT_INFO_S, *LPNETDEV_ALARM_INPUT_INFO_S;

/**
 * @brief  所有告警开关量输入信息 结构体定义  All Alarm boolean inputs info Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVAlarmInputInfoList
{
    INT32                        dwSize;                                           /* 输入开关量数量  Number of input alarms */
    NETDEV_ALARM_INPUT_INFO_S    astAlarmInputInfo[NETDEV_MAX_ALARM_IN_NUM];       /* 输入开关量配置信息  Configuration information of input alarms */
}NETDEV_ALARM_INPUT_LIST_S, *LPNETDEV_ALARM_INPUT_LIST_S;

/**
 * @brief  输入开关量告警信息 结构体定义  input switch quantity alert information
 * @attention 无 None
 */
typedef struct tagNETDEVInputSwitchesInfo
{
    INT32                        dwChancelId;                   /* 通道号 Channel ID */
    INT32                        dwInputSwitchIndex;            /* 开关量索引  Input Switch Index*/
    CHAR                         szName[NETDEV_LEN_64];         /* 输入开关量名称   Name of input alarm */
    CHAR                         szGBID[NETDEV_LEN_32];         /* 国标资源编码,仅IPC支持   International Standard Resource Coding, supported by IPC only */
    INT32                        dwRunMode;                     /* 报警类型 1:常开 2：常闭  Alarm Type 1: Open 2: Closed*/
    INT32                        dwEnabled;                     /* 报警使能 0:使能 1：使能  Alarm Enabling 0: No Enabling 1: Enabling*/
    INT32                        dwVideoResID;                  /* 对应的视频通道ID,仅VMS支持 */
    BYTE                         bRes[124];                     /* 保留字段 Reserved */
}NETDEV_INPUT_SWITCH_INFO_S, *LPNETDEV_INPUT_SWITCH_INFO_S;


/**
 * @brief  输入开关量告警配置信息列表 结构体定义  enter switch quantity alert configuration information list
 * @attention 无 None
 */
typedef struct tagNETDEVInputSwitchesInfoList
{
    INT32                        udwNum;                                /* 输入开关量告警数量   Number of input switches  */
    NETDEV_INPUT_SWITCH_INFO_S   astInputSwitchesInfo[NETDEV_LEN_1024]; /* 输入开关量告警配置信息  input switches configuration information */
}NETDEV_INPUT_SWITCH_INFO_LIST_S, *LPNETDEV_INPUT_SWITCH_INFO_LIST_S;

/**
 * @brief  告警开关量输出信息 结构体定义 Alarm boolean outputs info Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVAlarmOutputInfo
{   
    CHAR    szName[NETDEV_LEN_64];                  /* 开关量名称  Boolean name */
    INT32   dwChancelId;                            /* 通道号 Channel ID */
    INT32   enDefaultStatus;                        /* 输出开关量默认状态 参见#NETDEV_BOOLEAN_MODE_E  Default status of boolean output, see enumeration #NETDEV_BOOLEAN_MODE_E */
    INT32   dwDurationSec;                          /* 告警持续时间 单位 S  Alarm duration (s) */
    INT32   dwOutputNum;                            /* 告警输出序号 Alarm output serial number */
} NETDEV_ALARM_OUTPUT_INFO_S, *LPNETDEV_ALARM_OUTPUT_INFO_S;

/**
 * @brief  所有告警开关量输入信息 结构体定义 All Alarm boolean outputs info Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVAlarmOutputList
{   
    INT32                       dwSize;                                                 /* 开关量数量   Number of booleans  */
    NETDEV_ALARM_OUTPUT_INFO_S  astAlarmOutputInfo[NETDEV_MAX_ALARM_OUT_NUM];           /* 开关量配置信息  Boolean configuration information */
} NETDEV_ALARM_OUTPUT_LIST_S, *LPNETDEV_ALARM_OUTPUT_LIST_S;

/**
 * @brief  输出开关量的逻辑报警状态(手动告警)
 * @attention 无 None
 */
typedef struct tagNETDEVOutputSwitchesAlarmStatus
{
    INT32   dwBooleanId;                            /* 开关量编号  Boolean ID */
    INT32   dwChannelId;                            /* 通道ID,设备本身为0 */
    INT32   enAlarmStatus;                          /* 输出开关量报警状态 参见#NETDEV_RELAYOUTPUT_STATE_E */
} NETDEV_OUTPUT_SWITCH_ALARM_STATUS_S, *LPNETDEV_OUTPUT_SWITCH_ALARM_STATUS_S;

/**
 * @brief  输出开关量的逻辑报警状态列表(手动告警)
 * @attention 无 None
 */
typedef struct tagNETDEVOutputSwitchesAlarmStatusList
{   
    INT32                                dwSize;                                                       /* 设备报警输出开关量通道数   Number of booleans  */
    NETDEV_OUTPUT_SWITCH_ALARM_STATUS_S  astOutputAlarmStatusInfo[NETDEV_MAX_ALARM_OUT_NUM];           /* 输出开关量报警状态列表 Output switches alarm status list*/
    BYTE                                 bRes[128];                                                    /* 保留字段 Reserved */
} NETDEV_OUTPUT_SWITCH_ALARM_STATUS_LIST_S, *LPNETDEV_OUTPUT_SWITCH_ALARM_STATUS_LIST_S;

/**
 * @brief  触发或清除输出开关量的逻辑报警状态结构体(手动告警)
 * @attention 无 None
 */
typedef struct tagNETDEVOutputSwitchesManualAlarmInfo
{   
    INT32                               dwSize;                                    /* 需要设置的报警输出开关量数量   Number of booleans  */
    INT32                               dwIDList[NETDEV_MAX_ALARM_OUT_NUM];        /* 需要设置的输出开关量编号列表 booleans ID list */
    NETDEV_MANUAL_ALARM_CMD_E           dwAlarmAction;                             /* 执行的命令，参见NETDEV_MANUAL_ALARM_CMD_E*/
    BYTE                                 bRes[128];                                /* 保留字段 Reserved */
} NETDEV_OUTPUT_SWITCH_MANUAL_ALARM_INFO_S, *LPNETDEV_OUTPUT_SWITCH_MANUAL_ALARM_INFO_S;

/**
 * @brief  触发开关量输入告警 结构体定义 Trigger boolean output alarm Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVTriggerAlarmOutput
{   
    CHAR                        szName[NETDEV_LEN_64];          /* 开关量名称  Boolean name */
    NETDEV_RELAYOUTPUT_STATE_E  enOutputState;                  /* 触发状态,参考枚举#NETDEV_RELAYOUTPUT_STATE_E  Trigger status, see enumeration #NETDEV_RELAYOUTPUT_STATE_E */
} NETDEV_TRIGGER_ALARM_OUTPUT_S, *LPNETDEV_TRIGGER_ALARM_OUTPUT_S;


/**
 * @brief 时间段配置 结构体定义 Time Sections Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVTimeSectionInfo
{
    CHAR    szBeginTime[NETDEV_LEN_32];              /* 开始时间  Begin time */
    CHAR    szEndTime[NETDEV_LEN_32];                /* 结束时间  End time */
    UINT32  udwArmingType;                           /* 布防类型0: 定时 1: 动检 2: 报警 3: 动检和报警 4: 动检或报警5: 无计划10: 事件  Distribution Type 0: Timing 1: Motive Inspection 2: Alarm 3: Motive Inspection and Alarm 4: Motive Inspection or Alarm 5: Unplanned 10: Event*/
}NETDEV_TIME_SECTION_INFO_S, *LPNETDEV_TIME_SECTION_INFO_S;

/**
 * @brief 计划（天）配置 结构体定义 Play (Day) Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVDayPlanInfo
{
    UINT32                      udwID;                                           /*星期索引1：周一;2：周二；3：周三；4：周四；5：周五；6：周六；7：周日；8：假日；  Weekly Index 1: Monday; 2: Tuesday; 3: Wednesday; 4: Thursday; 5: Friday; 6: Saturday; 7: Sunday; 8: Holidays;*/
    UINT32                      udwNum;                                          /*每天时间段个数 NVR最大为8段；IPC最大为4段  The maximum number of NVRs per day is 8; IPC maximum 4 paragraphs*/
    NETDEV_TIME_SECTION_INFO_S  astTimeSection[NETDEV_MAX_TIME_SECTION_NUM];     /* 时间段配置 同一天各段时间不允许有重合 Time Sections */
}NETDEV_DAY_PLAN_INFO_S, *LPNETDEV_DAY_PLAN_INFO_S;


/**
 * @brief 计划（周）配置 结构体定义 Play (Week) Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVPlanWeekInfo
{
    BOOL                        bEnabled;                                           /* 使能,仅IPC支持  Enabling,IPC only*/
    UINT32                      udwNum;                                             /* 计划天数，NVR最大为8(一周七天和假日)IPC最大为7(一周七天)  Planned days, NVR up to 8(7 days a week and holidays) IPC up to 7(7 days a week)*/
    NETDEV_DAY_PLAN_INFO_S      astDayPlanInfo[NETDEV_MAX_DAY_NUM];                 /* 一周内每天的布防计划列表  List of deployment plans for each day of the week*/

    BYTE                        byRes[512];                                         /* 保留字段  Reserved */
}NETDEV_WEEK_PLAN_INFO_S, *LPNETDEV_WEEK_PLAN_INFO_S;

/**
 * @brief 开关量计划（周）配置 结构体定义 Plan (Week) Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVSwitchWeekPlanInfo
{
    UINT32                      udwSwitchIndex;                 /* 开关量索引 */
    NETDEV_WEEK_PLAN_INFO_S     astWeekPlanInfo;                /* 周计划配置信息 */
    BYTE                        byRes[128];                     /* 保留字段  Reserved */
}NETDEV_SWITCH_WEEK_PLAN_INFO_S, *LPNETDEV_SWITCH_WEEK_PLAN_INFO_S;

/************************************************ OSD********************************************************/

/**
 * @brief  区域 Area
 * @attention 无 None
 */
typedef struct tagNETDEVAreaScope
{
    INT32  dwLocateX;             /** 顶点x坐标值[0,10000] * Coordinates of top point x [0,10000] */
    INT32  dwLocateY;             /** 顶点y坐标值[0,10000] * Coordinates of top point y [0,10000] */
}NETDEV_AREA_SCOPE_S, *LPNETDEV_AREA_SCOPE_S;

/**
 * @brief OSD时间配置信息 OSD time configuration information
 * @attention 无 None
 */
typedef struct tagNETDEVOsdTime
{
    BOOL                    bEnableFlag;        /** 时间OSD使能, BOOL_TRUE为使能,BOOL_FALSE为非使能 * Enable time OSD, BOOL_TRUE means enable and BOOL_FALSE means disable */
    BOOL                    bWeekEnableFlag;    /** 是否显示星期(预留) * Display week or not (reserved) */
    NETDEV_AREA_SCOPE_S     stAreaScope;        /** 区域坐标 * Area coordinates */
    UINT32                  udwTimeFormat;      /** 时间OSD时间格式,详见NETDEV_OSD_TIME_FORMAT_CAP_E * Time OSD format, see NETDEV_OSD_TIME_FORMAT_E */
    UINT32                  udwDateFormat;      /** 日期OSD时间格式,详见NETDEV_OSD_DATE_FORMAT_CAP_E * Date OSD format, see NETDEV_OSD_TIME_FORMAT_E */
}NETDEV_OSD_TIME_S, *LPNETDEV_OSD_TIME_S;

/**
 * @brief OSD字符叠加信息 OSD text overlay information
 * @attention
 */
typedef struct tagNETDEVOsdTextOverlay
{
    BOOL                    bEnableFlag;                /** OSD字符叠加使能, BOOL_TRUE为使能,BOOL_FALSE为非使能 * Enable OSD text overlay, BOOL_TRUE means enable and BOOL_FALSE means disable */
    NETDEV_AREA_SCOPE_S     stAreaScope;                /** OSD字符叠加区域坐标 * OSD text overlay area coordinates */
    CHAR                    szOSDText[NETDEV_OSD_TEXT_MAX_LEN];    /** OSD字符叠加名称字符串 * OSD text overlay name strings */
    BYTE                    byRes[4];                               /* 保留字段  Reserved */
}NETDEV_OSD_TEXT_OVERLAY_S, *LPNETDEV_OSD_TEXT_OVERLAY_S;

/**
 * @brief 通道OSD的基本属性信息 Basic channel OSD information
 * @attention
 */
typedef struct tagNETDEVOsdCfgInfo
{
    NETDEV_OSD_TIME_S         stTimeOSD;        /* 通道的时间OSD信息  Information of channel time OSD */
    NETDEV_OSD_TEXT_OVERLAY_S stNameOSD;        /* 通道的名称OSD信息  Information of channel name OSD */
    INT16                     wTextNum;         /* 字符OSD个数  Text OSD number */
    NETDEV_OSD_TEXT_OVERLAY_S astTextOverlay[NETDEV_OSD_TEXTOVERLAY_NUM];   /* 通道OSD字符叠加信息  Information of channel OSD text overlay */
}NETDEV_VIDEO_OSD_CFG_S, *LPNETDEV_VIDEO_OSD_CFG_S;

/**
 * @brief 区域配置结构体定义 Definition of area configuration structure 
 * @attention
 */
typedef struct tagAreaInfo
{
    INT32   bIsEanbled;           /* 是否启用  Enable or not. */
    INT32   dwTopLeftX;           /* 左上角X [0, 10000]  Upper left corner X [0, 10000]  */
    INT32   dwTopLeftY;           /* 左上角Y [0, 10000]  Upper left corner Y [0, 10000]  */
    INT32   dwBottomRightX;       /* 右下角X [0, 10000]  Lower right corner x [0, 10000] */
    INT32   dwBottomRightY;       /* 右下角Y [0, 10000]  Lower right corner y [0, 10000] */
    INT32   dwIndex;              /* 索引  Index. */
}NETDEV_PRIVACY_MASK_AREA_INFO_S;

/**
 * @brief 隐私遮盖配置信息 Privacy mask configuration information
 * @attention
 */
typedef struct tagPrivacyMaskPara
{
    INT32                                  dwSize;                                     /* 区域个数  Mask area number */ 
    NETDEV_PRIVACY_MASK_AREA_INFO_S        astArea[NETDEV_MAX_PRIVACY_MASK_AREA_NUM];  /* 遮盖区域参数  Mask area parameters */
}NETDEV_PRIVACY_MASK_CFG_S, *LPNETDEV_PRIVACY_MASK_CFG_S;

/**
 * @brief 通道OSD的能力集 OSD Capabilities
 * @attention
 */
typedef struct tagNETDEVOsdCapabilities
{
    BOOL     bIsSupportCfg;                                                     /* 是否支持配置,0：不支持 1：支持 Support configuration or not. 0-No, 1-Ye*/
    BOOL     bIsSupportFontSizeCfg;                                             /* 是否支持OSD大小配置 Support configuration of OSD size or not*/ 
    BOOL     bIsSupportFontColorCfg;                                            /* 是否支持OSD颜色配置 upport configuration of OSD color or not*/ 
    UINT32   udwMaxAreaNum;                                                     /* 支持最大的OSD区域数 Maximum number of OSD area*/ 
    UINT32   udwMaxOSDNum;                                                      /* 支持最大的OSD个数 Maximum number of OSD*/ 
    UINT32   udwMaxPerAreaOSDNum;                                               /* 每个区域支持最大的OSD个数 Maximum number of OSD in each area*/ 
    UINT32   udwSupportedOSDTypeNum;                                            /* 支持的OSD内容类型数量 Number of OSD content type*/ 
    UINT32   udwSupportedTimeFormatNum;                                         /* 支持的时间OSD格式数量 Number of OSD time format*/ 
    UINT32   udwSupportedDateFormatNum;                                         /* 支持的日期OSD格式数量 Number of OSD date format*/ 
    UINT32   aduwSupportedDateFormatList[NETDEV_OSD_DATE_FORMAT_MAX_NUM];       /* 日期OSD格式列表，参见枚举NETDEV_OSD_DATE_FORMAT_E */ 
    UINT32   audwSupportedTimeFormatList[NETDEV_OSD_TIME_FORMAT_MAX_NUM];       /* 时间OSD格式列表，参见枚举NETDEV_OSD_TIME_FORMAT_E */ 
    UINT32   audwSupportedOSDTypeList[NETDEV_OSD_TYPE_MAX_NUM];                 /* 支持配置的OSD内容类型列表，参见枚举NETDEV_OSD_CONTENT_TYPE_E */ 
    UINT32   udwSupportedFontSizeNum;                                           /* 支持的OSD字体大小个数 Number of OSD font size */ 
    UINT32   udwSupportedFontStyleNum;                                          /* 支持的OSD字体形式个数 Number of OSD font style */ 
    UINT32   audwSupportedFontSizeList[NETDEV_OSD_FONT_SIZE_TYPE_MAX_NUM];      /* 支持的OSD字体大小列表，参见枚举 NETDEV_OSD_FONT_SIZE_E */ 
    UINT32   audwSupportedFontStyleList[NETDEV_OSD_FONT_STYLE_TYPE_MAX_NUM];    /* 支持的OSD字体形式列表，参见枚举 NETDEV_OSD_FONT_STYLE_E */ 
    BYTE     byRes[512];                                                        /* 保留字段  Reserved */
}NETDEV_OSD_CAP_S, *LPNETDEV_OSD_CAP_S;

/**
 * @brief 通道OSD内容样式 Display Style of channel OSD
 * @attention
 */
typedef struct tagNETDEVOsdContentStyle
{
    UINT32 udwFontStyle;                         /* 字体形式，参见枚举NETDEV_OSD_FONT_STYLE_E。  Font style. For enumeration, seeNETDEV_OSD_FONT_STYLE_E*/
    UINT32 udwFontSize;                          /* 字体大小，参见枚举NETDEV_OSD_FONT_SIZE_E。  Font Size. For enumeration, seeNETDEV_OSD_FONT_SIZE_E*/
    UINT32 udwColor;                             /* 文字颜色，颜色以RGB的方式描述 0xABCDEF，AB：表示R的值，00~FF，CD：表示G的值，00~FF，EF：表示B的值，00~FF。默认：0xFF0000（红色）*/
    UINT32 udwDateFormat;                        /* 日期格式，参见枚举NETDEV_OSD_DATE_FORMAT_E。  Date Format. For enumeration, seeNETDEV_OSD_DATE_FORMAT_E */
    UINT32 udwTimeFormat;                        /* 时间格式，参见枚举NETDEV_OSD_TIME_FORMAT_E。  Date Format. For enumeration, seeNETDEV_OSD_DATE_FORMAT_E */
    UINT32 audwFontAlignList[NETDEV_LEN_8];      /* 区域内字体对齐，固定8个区域，IPC支持,参见枚举NETDEV_OSD_ALIGN_E。  Font align in area, 8 areasfixed, IPcamera supported. For enumeration, seeNETDEV_OSD_ALIGN_E */
    UINT32 udwMargin;                            /* 边缘空的字符数，IPC支持，参见枚举NETDEV_OSD_MIN_MARGIN_E。  Number of character with margin, IP camera supported. For enumeration, seeNETDEV_OSD_MIN_MARGIN_E */
}NETDEV_OSD_CONTENT_STYLE_S,*LPNETDEV_OSD_CONTENT_STYLE_S;

/**
 * @brief 内容信息 Content
 * @attention
 */
typedef struct tagNETDEVContentInfo
{

    UINT32 udwContentType;                        /* OSD内容类型,参见枚举NETDEV_OSD_CONTENT_TYPE_E OSD content type. For enumeration, see NETDEV_OSD_CONTENT_TYPE_E*/
    CHAR   szOSDText[NETDEV_OSD_TEXT_MAX_LEN];    /* OSD文本信息 OSD text*/
}NETDEV_CONTENT_INFO_S,*LPNETDEV_CONTENT_INFO_S;

/**
 * @brief 通道OSD内容信息 Channel OSD content
 * @attention
 */
typedef struct tagNETDEVOSDContentInfo
{
    BOOL   bEnabled;                                        /* OSD区域使能 Enable OSD area*/
    UINT32 udwOSDID;                                        /* OSD区域序号，范围[0,7] Area No., ranges from 0 to 7.*/
    UINT32 udwAreaOSDNum;                                   /* 当前区域内OSD数目 Number of OSD in current area*/
    UINT32 udwTopLeftX;                                     /* OSD区域横坐标,范围[0,9999] X-axis of OSD area, ranges from 0 to 999*/
    UINT32 udwTopLeftY;                                     /* OSD区域纵坐标,范围[0,9999] Y-axisof OSD area, ranges from 0 to 999*/
	UINT32 udwBotRightX;                                    /* old无此参数，OSD区域横坐标,范围[0,9999] X-axis of OSD area, ranges from 0 to 999*/
	UINT32 udwBotRightY;                                    /* old无此参数，OSD区域纵坐标,范围[0,9999] Y-axisof OSD area, ranges from 0 to 999*/
    NETDEV_CONTENT_INFO_S astContentInfo[NETDEV_LEN_8];     /* 当前区域内OSD内容信息 OSD content in current area*/
}NETDEV_OSD_CONTENT_INFO_S,*LPNETDEV_OSD_CONTENT_INFO_S;

/**
 * @brief 通道OSD所有内容 All contents of channel OSD
 * @attention
 */
typedef struct tagNETDEVOsdContent
{
    UINT32                    udwNum;                          /* OSD区域数量 Number of OSD area*/
    NETDEV_OSD_CONTENT_INFO_S astContentList[NETDEV_LEN_32];   /* OSD区域内容信息列表 Content list of OSD area*/
}NETDEV_OSD_CONTENT_S,*LPNETDEV_OSD_CONTENT_S;

/************************************************ 视频分析********************************************************/

/**
 * @brief 遮挡检测分析信息 Tampering detection analysis info
 * @attention 无 None
 */
typedef struct tagNETDEVTamperAlarmInfo
{
    INT32  dwSensitivity;                               /* 灵敏度  Sensitivity */
    BYTE   byRes[256];                                  /* 保留字段  Reserved */
}NETDEV_TAMPER_ALARM_INFO_S, *LPNETDEV_TAMPER_ALARM_INFO_S;

/**
 * @brief 运动检测分析信息 Motion detection analysis info
 * @attention 无 None
 */
typedef struct tagNETDEVMotionAlarmInfo
{
    INT32  dwSensitivity;                                                     /* 灵敏度  Sensitivity */
    INT32  dwObjectSize;                                                      /* 物体大小  Objection Size */
    INT32  dwHistory;                                                         /* 持续时间  History */
    INT16  awScreenInfo[NETDEV_SCREEN_INFO_ROW][NETDEV_SCREEN_INFO_COLUMN];   /* 屏幕宏块信息  Screen Info */
    BYTE   byRes[64];                                                         /* 保留字段  Reserved */
}NETDEV_MOTION_ALARM_INFO_S, *LPNETDEV_MOTION_ALARM_INFO_S;

/**
 * @struct tagNETDEVMotionDetectionAreaGridInfo
 * @brief 运动检测宏块区域信息 Motion detection area grid info
 * @attention 无 None
 */
typedef struct tagNETDEVMotionDetectionAreaGridInfo
{
    BOOL    bEnabled;                                                        /* 区域使能标识 */
    UINT32  udwSensitivity;                                                  /* 运动检测灵敏度，值越大越灵敏，范围[1,100]  Sensitivity */
    INT16   awGridInfo[NETDEV_SCREEN_INFO_ROW][NETDEV_SCREEN_INFO_COLUMN];  /* 检测区域屏幕宏块信息  Grid Info */
    BYTE    byRes[256];                                                         /* 保留字段  Reserved */
}NETDEV_MOTION_DETECTION_AREA_GRID_INFO_S, *LPNETDEV_MOTION_DETECTION_AREA_GRID_INFO_S;

/**
 * @struct tagNETDEVRectAreaInfo
 * @brief 矩形区域坐标信息 结构体定义 Rectangle Area info  Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVRectAreaInfo
{
    UINT32   udwTopLeftX;                       /* x轴左点值 X axis left point value */
    UINT32   udwTopLeftY;                       /* y轴顶点值 Y axis top point value */
    UINT32   udwBottomRightX;                   /* x轴右点值 X axis right point value */
    UINT32   udwBottomRightY;                   /* y轴底点值 Y axis bottom point value */
}NETDEV_RECT_AREA_INFO_S, *LPNETDEV_RECT_AREA_INFO_S;

/**
 * @struct tagNETDEVMotionDetectionAreaRectangleInfo
 * @brief 运动检测矩形区域信息 Motion detection area rectangle info
 * @attention 无 None
 */
typedef struct tagNETDEVMotionDetectionAreaRectangleInfo
{
    UINT32  udwID;                              /* 矩形区域编号 */
    BOOL    bEnabled;                           /* 区域使能标识 */
    UINT32  udwSensitivity;                     /* 运动检测灵敏度，值越大越灵敏，范围[1,100]  Sensitivity */
    UINT32  udwDuration;                        /* 持续时间，范围[1,100] */
    UINT32  udwTargetSize;                      /* 物体大小，范围[1,100] */
    NETDEV_RECT_AREA_INFO_S   stRectAreaInfo;   /* 矩形区域信息,坐标值范围[0,9999]  rectangle area Info [0,9999] */
    BYTE    byRes[128];                                                         /* 保留字段  Reserved */
}NETDEV_MOTION_DETECTION_AREA_RECTANGLE_INFO_S, *LPNETDEV_MOTION_DETECTION_AREA_RECTANGLE_INFO_S;

/**
 * @struct tagNETDEVMotionDetectionAreaRectangleInfoList
 * @brief 运动检测矩形区域信息列表 Motion detection area rectangle info
 * @attention 无 None
 */
typedef struct tagNETDEVMotionDetectionAreaRectangleInfoList
{
    UINT32                                          udwNum;                                 /* 矩形区域个数 */
    NETDEV_MOTION_DETECTION_AREA_RECTANGLE_INFO_S   astRectangleAreaInfoList[NETDEV_LEN_8]; /* 矩形区域信息列表 */
    BYTE    byRes[128];                                                                     /* 保留字段  Reserved */
}NETDEV_MOTION_DETECTION_AREA_RECTANGLE_INFO_LIST_S, *LPNETDEV_MOTION_DETECTION_AREA_RECTANGLE_INFO_LIST_S;

/**
* @enum tagNETDEVMotionDetectionAreaType
* @brief 运动检测区域类型信息 motion detection area type
* @attention 
*/
typedef struct tagNETDEVMotionDetectionAreaType
{
    UINT32  udwAreaType;                    /* 区域类型 参见枚举#NETDEV_MOTION_DETECTION_AREA_TYPE_E */
    BYTE    byRes[128];                     /* 保留字节 */
}NETDEV_MOTION_DETECTION_AREA_TYPE_S, *LPNETDEV_MOTION_DETECTION_AREA_TYPE_S;

typedef struct tagNETDEVCrossLinePointInfo
{
    BOOL    bEnable;                /* 是否启用  Supported or not */
    INT32   dwSensitivity;        /* 灵敏度  Sensitivity */
    INT32   dwDirection;          /* 触发方向 trigger Direction */
    INT32   dwTopLeftX;           /* 左上角X [0, 10000]  Upper left corner X [0, 10000]  */
    INT32   dwTopLeftY;           /* 左上角Y [0, 10000]  Upper left corner Y [0, 10000]  */
    INT32   dwBottomRightX;       /* 右下角X [0, 10000]  Lower right corner x [0, 10000] */
    INT32   dwBottomRightY;       /* 右下角Y [0, 10000]  Lower right corner y [0, 10000] */
}NETDEV_CROSS_LINE_POINT_INFO_S, *LPNETDEV_CROSS_LINE_POINT_INFO_S;

/**
* @brief 越界检测分析信息
* @attention 无 None
*/
typedef struct tagNETDEVCrossLineAlarmInfo
{
    BOOL    bEnable;                                                  /* 是否启用  Supported or not */
    NETDEV_CROSS_LINE_POINT_INFO_S stAreaInfo[4];                       /* 区域信息 area info */
    BYTE   byRes[64];                                                   /* 保留字段  Reserved */
}NETDEV_CROSS_LINE_ALARM_INFO_S, *LPNETDEV_CROSS_LINE_ALARM_INFO_S;

/**
* @brief 入侵检测区域点坐标
* @attention 无 None
*/
typedef struct tagNETDEVIntrusionPointInfo
{

    INT32   dwPointX;           /* X [0, 10000]*/
    INT32   dwPointY;           /* Y [0, 10000]*/
}NETDEV_INTRUSION_POINT_INFO_S, *LPNETDEV_INTRUSION_POINT_INFO_S;


/**
* @brief 入侵检测区域信息
* @attention 无 None
*/
typedef struct tagNETDEVIntrusionAreaInfo
{
    BOOL    bEnable;                                            /* 是否启用  Supported or not */
    INT32   dwSensitivity;                                      /* 灵敏度，范围1-100  Sensitivity */
    INT32   dwTimeThreshold;                                    /* 时间阈值 范围1-10*/
    INT32   percentage;                                         /* 比率 范围1-100 */
    INT32   dwPointCount;                                       /* 区域点个数，范围3-6，如果不设置该区域，点个数将忽略，*/
    NETDEV_INTRUSION_POINT_INFO_S   stPointInfo[NETDEV_LEN_6];  /* 区域点坐标信息 */
    BYTE   byRes[64];                                           /* 保留字段  Reserved */

}NETDEV_INTRUSION_AREA_INFO_S, *LPNETDEV_INTRUSION_AREA_INFO_S;

/**
* @brief 入侵检测分析信息
* @attention 无 None
*/
typedef struct tagNETDEVIntrusionAlarmInfo
{
    BOOL    bEnable;                                                  /* 是否启用  Supported or not */
    NETDEV_INTRUSION_AREA_INFO_S stAreaInfo[NETDEV_LEN_4];            /* 区域信息 ，最多支持设置4个区域，每个区域由三到六边形构成 area info */
    BYTE   byRes[64];                                                   /* 保留字段  Reserved */
}NETDEV_INTRUSION_ALARM_INFO_S, *LPNETDEV_INTRUSION_ALARM_INFO_S;

/**
 * @brief 协议信息  Protocol info
 * @attention 无 None
 */
typedef struct tagNETDEVUpnpPortState
{
    NETDEV_PROTOCOL_TYPE_E   eType;                            /* 协议类型参见枚举# NETDEV_PROTOCOL_TYPE_E  Protocol type, see enumeration #NETDEV_PROTOCOL_TYPE_E */
    BOOL                     bEnbale;                          /* 是否支持  Supported or not */
    INT32                    dwPort;                           /* 端口号  Port number */
    BYTE                     byRes[128];                       /* 保留字段  Reserved */
}NETDEV_UPNP_PORT_STATE_S, *LPNETDEV_UPNP_PORT_STATE_S;


/**
 * @brief 协议信息列表  Protocol info list
 * @attention 无 None
 */
typedef struct tagNETDEVUpnpNatState
{
    INT32   dwSize;                                            /* 协议个数  Number of protocols */
    NETDEV_UPNP_PORT_STATE_S  astUpnpPort[NETDEV_LEN_16];      /* 协议信息  Protocol info */
}NETDEV_UPNP_NAT_STATE_S, *LPNETDEV_UPNP_NAT_STATE_S;


/**
 * @brief 设备发现的设备信息  Info of discovered device
 * @attention 无 None
 */
typedef struct tagNetDEVDiscoveryDevInfo
{
    CHAR    szDevAddr[NETDEV_LEN_64];                            /* 设备地址  Device address */
    CHAR    szDevModule[NETDEV_LEN_64];                          /* 设备型号  Device model */
    CHAR    szDevSerailNum[NETDEV_LEN_64];                       /* 设备序列号  Device serial number */
    CHAR    szDevMac[NETDEV_LEN_64];                             /* 设备MAC地址  Device MAC address */
    CHAR    szDevName[NETDEV_LEN_64];                            /* 设备名称  Device name */
    CHAR    szDevVersion[NETDEV_LEN_64];                         /* 设备版本  Device version */
    NETDEV_DEVICE_TYPE_E  enDevType;                              /* 设备类型  Device type */
    INT32   dwDevPort;                                           /* 设备端口号  Device port number */
    CHAR    szManuFacturer[NETDEV_LEN_64];                       /* 生产商 Device manufacture */
    CHAR    szActiveCode[NETDEV_LEN_64];                         /* 激活码 activeCode */
    CHAR    szCloudUserName[NETDEV_LEN_64];                       /* 云用户名称 cloudUserName */
    BYTE    byRes[68];                                              /* 保留字段  Reserved */
}NETDEV_DISCOVERY_DEVINFO_S, *LPNETDEV_DISCOVERY_DEVINFO_S;

/**
* @brief 时间参数 结构体定义 Time parameter Structure definition
* @attention 无 None
*/
typedef struct tagNETDEVTime
{
    INT32   dwYear;                       /* 年  Year */
    INT32   dwMonth;                      /* 月  Month */
    INT32   dwDay;                        /* 日  Day */
    INT32   dwHour;                       /* 时  Hour */
    INT32   dwMinute;                     /* 分  Minute */
    INT32   dwSecond;                     /* 秒  Second */
}NETDEV_TIME_S, *LPNETDEV_TIME_S;

/**
* @brief 时间配置 结构体定义 Time configuration structure definition
* @attention
*/
typedef struct tagNETDEVSystemTimeDST
{
    INT32 dwMonth;              /* 月(1~12)  Month(1~12)*/
    INT32 dwWeekInMonth;        /* 每月的第N周（1~5）  1 for the first week and 5 for the last week in the month */
    INT32 dwDayInWeek;          /* 每周的星期几 参见#NETDEV_DAY_IN_WEEK_E  0 for Sunday and 6 for Saturday see enumeration NETDEV_DAY_IN_WEEK_E */
    INT32 dwHour;               /* 时  Hour */
}NETDEV_TIME_DST_S, *LPNETDEV_TIME_DST_S;

/**
* @brief 时间配置 结构体定义 Time configuration structure definition
* @attention
*/
typedef struct tagNETDEVSystemTimeDSTCfg
{
    NETDEV_TIME_DST_S   stBeginTime;        /* 夏令时开始时间 参见枚举#NETDEV_TIME_DST_S  DST begin time see enumeration NETDEV_TIME_DST_S */
    NETDEV_TIME_DST_S   stEndTime;          /* 夏令时结束时间 参见枚举#NETDEV_TIME_DST_S  DST end time see enumeration NETDEV_TIME_DST_S */
    INT32               dwOffsetTime;       /* 夏令时节约时间 参见枚举# NETDEV_DST_OFFSET_TIME  DST saving time see enumeration NETDEV_DST_OFFSET_TIME */
}NETDEV_TIME_DST_CFG_S, *LPNETDEV_TIME_DST_CFG_S;

/**
* @brief 时间配置 结构体定义 Time configuration structure definition
* @attention
*/
typedef struct tagNETDEVSystemTimeInfo
{
    NETDEV_TIME_ZONE_E      dwTimeZone;             /* 时区 参见枚举# NETDEV_TIME_ZONE_E  Time zone, see enumeration #NETDEV_TIME_ZONE_E */
    NETDEV_TIME_S           stTime;                 /* 时间  Time */
    BOOL                    bEnableDST;             /* 夏令时使能 DST enable */
    NETDEV_TIME_DST_CFG_S   stTimeDSTCfg;           /* 夏令时配置 DST time config*/
    UINT32                  udwDateFormat;          /* 日期格式 0：YYYY-MM-DD 年月日 1：MM-DD-YYYY 月日年 2：DD-MM-YYYY 日月年*/
    UINT32                  udwHourFormat;          /* 时间格式 0 ：12小时制  1:24 小时制*/
    BYTE                    byRes[212];             /* 保留字段  Reserved */
}NETDEV_TIME_CFG_S, *LPNETDEV_TIME_CFG_S;

/**
* @brief 夏令时配置信息 结构体定义 DST configuration structure definition
* @attention
*/
typedef struct tagNETDEVDSTCfgInfo
{
    BOOL                    bEnableDST;             /* 夏令时使能 DST enable */
    NETDEV_TIME_DST_CFG_S   stTimeDSTCfg;           /* 夏令时配置 DST time config*/
    BYTE                    byRes[128];             /* 保留字段  Reserved */
}NETDEV_DST_CFG_S, *LPNETDEV_DST_CFG_S;

/**
* @brief 超时时间 结构体定义  Timeout structure definition
* @attention
*/
typedef struct tagNETDEVRevTimeout
{
    INT32   dwRevTimeOut;                 /* 设置接收超时时间 Set timeout for receiving */
    INT32   dwFileReportTimeOut;          /* 设置文件操作超时时间 Set timeout for file operation */
    BYTE    byRes[128];                   /* 保留字段  Reserved */
}NETDEV_REV_TIMEOUT_S, *LPNETDEV_REV_TIMEOUT_S;




/**
 * @brief 硬盘详细信息 Disk info
 * @attention 无 None
 */
typedef struct tagNETDEVDiskInfo
{
    INT32 dwDiskCabinetIndex;
    INT32 dwSlotIndex;                          /* 硬盘所在槽位索引 Slot Index */
    INT32 dwTotalCapacity;                      /* 硬盘总容量 Total Capacity */
    INT32 dwUsedCapacity;                       /* 已经使用量 Used Capacity */
    NETDEV_DISK_WORK_STATUS_E enStatus;         /* 运行状态 Status */
    CHAR szManufacturer[NETDEV_LEN_32];         /* 厂商 Manufacturer */
}NETDEV_DISK_INFO_S,*LPNETDEV_DISK_INFO_S;

/**
 * @brief 硬盘信息列表 Disk info list
 * @attention 无 None
 */
typedef struct tagNETDEVDiskInfoList
{
    INT32 dwSize;                                       /* 硬盘个数 Disk number */
    NETDEV_DISK_INFO_S astDisksInfo[NETDEV_DISK_MAX_NUM];     /* 硬盘信息 Disk info */
}NETDEV_DISK_INFO_LIST_S,*LPNETDEV_DISK_INFO_LIST_S;

/**
* @brief 透雾信息 Defogging info
* @attention
*/
typedef struct tagNETDEVDefoggingInfo
{
    NETDEV_DEFOGGING_MODE_E  enDefoggingMode;           /* 除雾模式 Defogging mode */
    FLOAT                    fDefoggingLevel;           /* 除雾等级 Defogging level (0.0, 1.0) */
    BYTE                     bRes[64];                  /* 保留字段 Reserved */
}NETDEV_DEFOGGING_INFO_S, *LPNETDEV_DEFOGGING_INFO_S;

/**
* @brief 聚焦信息 Focus Info
* @attention
*/
typedef struct tagNETDEVFocusInfo
{
    NETDEV_FOCUS_MODE_E     enFocusMode;                /* 聚焦模式 Defogging mode */
    BYTE                    bRes[16];                   /* 保留字段 Reserved */
}NETDEV_FOCUS_INFO_S, *LPNETDEV_FOCUS_INFO_S;


/**
* @brief 昼夜模式信息 IrCut filter info
* @attention
*/
typedef struct tagNETDEVIrFilterInfo
{
    NETDEV_IR_CUT_FILTER_MODE_E enIrCutFilterMode;      /* 昼夜模式 IrCut Filter mode */
    BYTE                        bRes[16];               /* 保留字段 Reserved */
}NETDEV_IRCUT_FILTER_INFO_S, *LPNETDEV_IRCUT_FILTER_INFO_S;

/**
* @brief 手动录像 结构体定义 Manual Record structure definition
* @attention
*/
typedef struct tagNETDEVManualRecordcfg
{
    INT32                   dwChannelID;        /* 通道号  ChannelID */
    NETDEV_RECORD_TYPE_E    enRecordType;       /* 录像类型 Record type 参考#NETDEV_RECORD_TYPE_E */
    BYTE                    byRes[64];          /* 保留字段  Reserved */
}NETDEV_MANUAL_RECORD_CFG_S, *LPNETDEV_MANUAL_RECORD_CFG_S;


/**
 * @brief 按月查询录像分布信息配置 结构体定义 get video by Month Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVMonthInfo
{
    UINT32  udwYear;        /* 年份  year*/
    UINT32  udwMonth;       /* 月份  month */
    UINT32  udwPosition;    /* 录像查询位置 NETDEV_VIDEO_POSITION_E video query location */
}NETDEV_MONTH_INFO_S, *LPNETDEV_MONTH_INFO_S;

/**
 * @brief 录像分布状态 结构体定义 video status Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVMonthStatus
{
    UINT32  udwDayNumInMonth;                       /* 某月的实际天数 The number of a month's days */
    UINT32  szVideoStatus[NETDEV_MONTH_DAY_MAX];    /* 录像状态列表 video status list, see in NETDEV_VIDEO_STATUS_E */
}NETDEV_MONTH_STATUS_S, *LPNETDEV_MONTH_STATUS_S;


/**
 * @brief 多通道 结构体定义 multichannel Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVChannels
{
    UINT32  udwSize;                            /* 通道个数 Channel size */
    INT32   dwChannelIDs[NETDEV_CHANNEL_MAX];   /* 需要查询的视频输入通道号列表 Channel ID list[1,2,3,4] */
}NETDEV_CHANNELS_S, *LPNETDEV_CHANNELS_S;


/**
* @brief 客流量统计命令 结构体定义 Command of Passenger flow statistic Structure definition
* @attention 无 None
*/
typedef struct tagNETDEVTrafficStatisticsCond
{
    INT32       dwChannelID;            /* 通道号 Channel ID */
    INT32       dwStatisticsType;       /* 统计模式 参考# NETDEV_TRAFFIC_STATISTICS_TYPE_E Statistics type */
    INT32       dwFormType;             /* 统计报表 参考# NETDEV_FORM_TYPE_E Form type */
    INT64       tBeginTime;             /* 起始时间 Begin time */
    INT64       tEndTime;               /* 结束时间 End time */
}NETDEV_TRAFFIC_STATISTICS_COND_S, *LPNETDEV_TRAFFIC_STATISTICS_COND_S;

/**
* @brief 客流量统计 结构体定义 Passenger flow statistic Structure definition
* @attention 无 None
*/
typedef struct tagNETDEVTrafficStatisticsData
{
    INT32  dwSize;                                          /* 报表长度 根据不同报表类型长度不同 */
    INT32  adwEnterCount[NETDEV_PEOPLE_CNT_MAX_NUM];        /* 进入人数计数值 */
    INT32  adwExitCount[NETDEV_PEOPLE_CNT_MAX_NUM];         /* 离开人数计数值 */
}NETDEV_TRAFFIC_STATISTICS_DATA_S, *LPNETDEV_TRAFFIC_STATISTICS_DATA_S;


/**
* @brief 定位信息 结构体定义 Geolocation info Structure definition
* @attention 无 None
*/
typedef struct tagNETDEVGeolocationInfo 
{
    FLOAT fLongitude;       /* 经度 Longitude */
    FLOAT fLatitude;        /* 纬度 Latitude */
}NETDEV_GEOLACATION_INFO_S, *LPNETDEV_GEOLACATION_INFO_S;

/**
* @brief WIFISnifferMac信息 结构体定义  WIFISnifferMac info Structure definition 
* @attention 无 None
*/
typedef struct tagNETDEVWiFiSnifferMacInfo
{
    CHAR  aszMACInfo[NETDEV_WIFISNIFFER_MAC_MAX_NUM];     /* WiFi sniffer mac 地址 WiFi sniffer mac address*/
    INT16 wMaxSig;                                        /* Mac地址对应最大信号强度,单位dBm Mac address’ corresponding max signal strength (in dBm) */
    CHAR  aszMaxSigTime[NETDEV_MAX_DATE_STRING_LEN];      /* Mac地址对应最大信号强度获取时间 Time to obtain Mac address’ corresponding max signal strength*/
}NETDEV_WIFISNIFFER_MAC_INFO_S, *LPNETDEV_WIFISNIFFER_MAC_INFO_S;

/**
* @brief WIFISnifferMac数组信息 结构体定义 WIFISnifferMac array Structure definition  
* @attention 无 None
*/
typedef struct tagNETDEVWiFiSnifferMacList
{
    INT32 dwSize;
    NETDEV_WIFISNIFFER_MAC_INFO_S  astMACList[NETDEV_WIFISNIFFER_MAC_ARRY_MAX_NUM];
}NETDEV_WIFISNIFFER_MAC_LIST_S, *LPNETDEV_WIFISNIFFER_MAC_LIST_S;


typedef struct tagNETDEVAlarmSnapShotCond
{
    INT32                           dwChannelID;                                /* 通道号  Channel number 或者 开关量告警编号，参数为通道号*100+报警输出号，设备本身通道号为0*/
    INT64                           tAlarmTime;                                 /* 告警产生时间 */
    NETDEV_ALARM_SNAPSHOT_TYPE_E    enAlarmType;                                /* 告警类型 */
    BYTE                            byRes[244];                                 /* 保留字段  Reserved */
}NETDEV_ALARM_SNAPSHOT_COND_S,*LPNETDEV_ALARM_SNAPSHOT_COND_S;

typedef struct tagNETDEVAlarmSnapShotPicInfo
{
    CHAR    szURL[NETDEV_MAX_URL_LEN];  /* 图片URL */
    CHAR    szName[NETDEV_LEN_64];      /* 图片名称 */
    INT32   dwSize;                     /* 图片大小 */
    BYTE    byRes[256];                 /* 保留字段  Reserved */
}NETDEV_ALARM_SNAPSHOT_PIC_S,*LPNETDEV_ALARM_SNAPSHOT_PIC_S;

typedef struct tagNETDEVSnapShotFileInfo
{
    CHAR    szURL[NETDEV_MAX_URL_LEN];         /* 图片URL */
    BOOL    bSaveLocal;                        /* 是否保存在本地，TURE表示保存本地，FALSE表示写入缓存 */
    CHAR    szFileName[NETDEV_LEN_260];        /* 保存图片的本地路径及名称 */
    CHAR*   pcBuffer;                          /* 保存图片缓存,需客户申请内存，大小为dwSize缓存大小 */
    INT32   dwSize;                            /* 缓存大小 */
    INT32   dwCaptureMode;                     /* 保存图像格式,参见#NETDEV_PICTURE_FORMAT_E*/
    BYTE    byRes[252];                        /* 保留字段  Reserved */
}NETDEV_PIC_FILE_INFO_S, *LPNETDEV_PIC_FILE_INFO_S;

/************************************************************************/
/*                       NVR周计划配置                                  */
/************************************************************************/

/**
 * @brief 时间段配置 结构体定义 Time Sections Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVVideoTimeSection
{
    CHAR    szBeginTime[NETDEV_LEN_64];              /* 开始时间  Begin time */
    CHAR    szEndTime[NETDEV_LEN_64];                /* 结束时间  End time */
    UINT32  udArmingType;                            /* 布防类型   ArmingType 参考NETDEV_ARMING_TYPE_E */
}NETDEV_VIDEO_TIME_SECTION_S, *LPNETDEV_VIDEO_TIME_SECTION_S;

/**
 * @brief 计划（天）配置 结构体定义 Play (Day) Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVVideoDayPlan
{
    UINT32                         udwIndex;                                                  /* 星期索引,参见：NETDEV_LAPI_WEEK_INFO_E  day index */
    UINT32                         udwSectionNum;                                             /* 每天时间段个数  Section Num NVR最大为8段,IPC最大为4段 */
    NETDEV_VIDEO_TIME_SECTION_S    astTimeSection[NETDEV_MAX_TIME_SECTION_NUM];   /* 布防时间段配置  Time Sections */
}NETDEV_VIDEO_DAY_PLAN_S, *LPNETDEV_VIDEO_DAY_PLAN_S;

/**
 * @brief  计划（周）配置 结构体定义  Plan (Week) Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVVideoPlanWeek
{
    BOOL                        bEnabled;                                            /* 布防计划是否使能,仅IPC支持使能开关 VMS NVR默认使能;参考NETDEV_DEFENCE_PLAN_ENABLE_E */
    UINT32                      udwDayNum;                                           /* 计划天数,NVR最大为8(一周七天和假日);IPC最大为7(一周七天) */
    NETDEV_VIDEO_DAY_PLAN_S     astDayPlan[NETDEV_MAX_DAY_NUM];                      /* 一周内每天的布防计划列表 */
    BYTE                        byRes[32];                                           /* 保留字段 */
}NETDEV_VIDEO_WEEK_PLAN_S, *LPNETDEV_VIDEO_WEEK_PLAN_S;

/**
 * @brief  录像计划规则 结构体定义   Record Rule Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVRecordRule
{
    UINT32                      udwPreRecordTime;                                  /* 警前预录时间,参考NETDEV_PRE_RECORD_TIME_E */
    UINT32                      udwPostRecordTime;                                 /* 警后录像时间,参考NETDEV_POST_RECORD_TIME_E */
    BYTE                        byRes[32];                                         /* 保留字段 */
}NETDEV_RECORD_RULE_S, *LPNETDEV_RECORD_RULE_S;

/**
 * @struct tagstNETDEVTimeTemplate
 * @brief 时间模板信息
 * @attention
 */
typedef struct tagstNETDEVTimeTemplate
{
    CHAR    szTamplateName[NETDEV_NAME_MAX_LEN];        /* 模板名称 */
    CHAR    szTamplateDesc[NETDEV_DESCRIBE_MAX_LEN];    /* 模板描述 */
    INT32   dwTamplateID;                               /* 模板ID */
}NETDEV_TIME_TEMPLATE_S, *LPNETDEV_TIME_TEMPLATE_S;

/**
 * @brief  录像计划配置信息 结构体定义   Record plan config info Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVRecordPlanCfgInfo
{
    BOOL                       bPlanEnable;                                        /* 计划使能 */
    BOOL                       bRedundantStorage;                                  /* 冗余录像使能 仅NVR支持 */
    NETDEV_RECORD_RULE_S       stRecordRule;                                       /* 录像计划规则 仅NVR支持 */
    NETDEV_VIDEO_WEEK_PLAN_S   stWeekPlan;                                         /* 计划配置 仅NVR支持 */
    UINT32                     udwChlID;                                           /* 视频输入通道号 批量获取/添加时使用 */
    UINT32                     udwReqSeq;                                          /* 请求数据序号 [1, 50] 仅VMS支持 添加录像计划Post必选 */
    UINT32                     udwTamplateID;                                      /* 时间模板ID 仅VMS支持 */
    CHAR                       szTamplateName[NETDEV_NAME_MAX_LEN];                /* 时间模板名称 仅VMS支持 Get接口返回 */
    BYTE                       byRes[116];                                         /* 保留字段 */
}NETDEV_RECORD_PLAN_CFG_INFO_S, *LPNETDEV_RECORD_PLAN_CFG_INFO_S;

/**
 * @brief  录像计划配置信息列表 结构体定义   Record plan config info Structure definition list
 * @attention 无 None
 */
typedef struct tagNETDEVRecordPlanCfgList
{
    UINT32                              udwNum;                             /* 通道录像计划数量 */
    LPNETDEV_RECORD_PLAN_CFG_INFO_S     pstRecordScheduleList;              /* 通道录像计划列表 Malloc申请内存 */
    BYTE                                byRes[256];                         /* 保留字段 */
}NETDEV_RECORD_PLAN_CFG_LIST_S, *LPNETDEV_RECORD_PLAN_CFG_LIST_S;

/**
 * @brief  告警信息 结构体定义 Alarm infomation Sturcture definition
 * @attention 无 None
 note:
 1. dwAlarmSrcType为NETDEV_ALARM_SRC_LOCAL_HARD_DISK到NETDEV_ALARM_SRC_SD_STORAGE_DISK之间，dwChannelID代表存储盘索引；
 2. dwAlarmSrcType为8，dwChannelID代表视频通道号；
 3. dwAlarmSrcType为9，dwChannelID代表报警输入通道号，报警源见dwInputSwitchID字段。
 4. dwAlarmSrcType为10,dwChannelID默认为0,代表系统本身
 */
typedef struct tagNETDEVAlarmInfoEx
{ 
    INT32   dwAlarmType;                        /* 告警类型,参见枚举# NETDEV_ALARM_TYPE_E  Alarm type, see enumeration #NETDEV_ALARM_TYPE_E */
    INT64   tAlarmTime;                         /* 告警发生时间  Alarm time */
    INT32   dwChannelID;                        /* 通道号 */
    INT32   dwAlarmSrcType;                     /* 告警源类型 参见枚举#NETDEV_ALARM_SRC_TYPE_E */
    CHAR    szAlarmSrcName[NETDEV_LEN_132];     /* 告警源名称,当告警源类型无效NETDEV_ALARM_SRC_INVALID时有效 */
    UINT16  wIndex;                             /* 索引号  Index number, index number */
    INT32   dwTotalBandWidth;                   /* 当前带宽总量,单位为MBps  Current total bandwidth (in MBps) */
    INT32   dwUnusedBandwidth;                  /* 未使用的带宽,单位为MBps  Bandwidth left (in MBps)*/
    INT32   dwTotalStreamNum;                   /* 总路数 Total cameras*/
    INT32   dwFreeStreamNum;                    /* 未使用路数 Cameras left */
    INT32   dwMediaMode;                        /* 流类型,参见枚举# NETDEV_MEDIA_MODE_E Stream type. For enumerations, see#NETDEV_MEDIA_MODE_E*/
    INT32   dwAlarmLevel;                       /* 告警等级，0:一级 1:二级 2:三级 3:四级 4:五级  一级最严重,一级至五级严重程度递减 */
    INT32   dwAlarmSeq;                         /* 告警序号 */
    INT32   dwEventCode;                        /* 事件类型，用于上报解码层事件类型,参见枚举#NETDEV_PLAYER_RUN_INFO_TYPE_E */
    BYTE    byRes[244];                         /* 保留字段 */
}NETDEV_ALARM_INFO_EX_S, *LPNETDEV_ALARM_INFO_EX_S;

/**
* @enum tagNETDEVLapiSubInfo
* @brief Lapi告警订阅信息
* @attention 无 None
*/
typedef struct tagNETDEVLapiSubInfo
{
    UINT32 udwType;                          /* 订阅类型 按位表示 
                                                Bit0：设备状态类型告警
                                                Bit1：监控业务类告警
                                                Bit2：泛智能告警
                                                Bit3：智能类告警
                                                Bit4：人脸识别
                                                Bit5：结构化数据 下发0则全部订阅
                                                Bit6：车牌识别
                                                Bit7：交通数据
                                                Bit8：超感数据
                                                Bit9：资源变更数据
                                                Bit10：人员核验 
                                                Bit10：人员核验 
                                                BIT11:停车场识别抓拍 详见枚举 NETDEV_LAPI_SUB_TYPE_E
                                                Bit12：火点告警 */
    UINT32 udwLibIDNum;                      /* 订阅的库ID数目 LibIDNum为0xffff时 表示订阅所有库 */
    UINT32 audwLibIDList[NETDEV_LEN_32];     /* 订阅的库ID列表 */
    BYTE   byRes[132];                       /* 保留字节 */
}NETDEV_LAPI_SUB_INFO_S,*LPNETDEV_LAPI_SUB_INFO_S;

/**
* @enum tagNETDEVSubscribeSuccInfo
* @brief 订阅信息成功返回信息
* @attention 无 None
*/
typedef struct tagNETDEVSubscribeSuccInfo
{
    UINT32 udwID;                      /* 订阅ID */
    UINT32 udwCurrrntTime;             /* 当前时间，UTC格式，从1970年1月1日0点开始的秒数 */
    UINT32 udwTerminationTime;         /* 结束时间，UTC格式，从1970年1月1日0点开始的秒数 */
    UINT32 udwSupportAlarmType;        /* 请求消息携带订阅告警类型时返回值需携带此参数，返回0说明响应未携带该数据 */
    CHAR   szReference[NETDEV_LEN_260];/* 订阅者描述信息 以URL格式体现 */
    BYTE   byRes[124];                 /* 保留字节 */
}NETDEV_SUBSCRIBE_SUCC_INFO_S,*LPNETDEV_SUBSCRIBE_SUCC_INFO_S;

/**
* @struct tagNETDEVResInfo
* @brief 资源数据变更信息 结构体定义
* @attention 无
*/
typedef struct tagNETDEVResInfo
{
    UINT32   udwResType;                              /* 资源类型, 请参考# NETDEV_RES_TYPE_E */
    UINT32   udwResID;                                /* 资源ID */
    BYTE     byRes[256];                              /* 保留字段  Reserved */
}NETDEV_RES_CHANGE_INFO_S, *LPNETDEV_RES_CHANGE_INFO_S;

/**
* @struct tagNETDEVResChangeEventInfo
* @brief 资源变更事件 结构体定义
* @attention 无
*/
typedef struct tagNETDEVResChangeEventInfo
{
    CHAR     szReference[NETDEV_LEN_260];                           /* 用于客户端确认推送告警事件消息的url
                                                                    <SubscribersID>:便于同一IP和port用户多点登陆时区分不同的订阅客户端*/
    UINT32   udwAction;                                             /* 资源变更子事件类型, 请参考# NETDEV_RES_CHANGE_SUBEVENT_TYPE_E */
    UINT32   udwNum;                                                /* 变更的资源个数*/
    NETDEV_RES_CHANGE_INFO_S   audwResInfos[NETDEV_CHANNEL_MAX];    /* 资源数据变更信息*/
    BYTE     byRes[256];                                            /* 保留字段  Reserved */
}NETDEV_RES_CHANGE_EVENT_INFO_S, *LPNETDEV_RES_CHANGE_EVENT_INFO_S;


/**
 * @brief 云端设备登录信息    Cloud Device information Structure definition
 * @attention 无 None
 */
typedef struct tagNetDEVCloudDevLoginInfo
{

    CHAR    szDeviceName[NETDEV_LEN_260];       /* 设备名称 Device name */
    CHAR    szDevicePassword[NETDEV_LEN_64];    /* 设备登录密码 (可选) Device login password (optional) */
    INT32   dwT2UTimeout;                       /* P2P超时时间, 默认为15s P2P timeout (default: 15s) */
    INT32   dwConnectMode;                      /* 连接模式 Connect Mode  参见枚举 NETDEV_CLOUD_CONNECT_MODE  传 NETDEV_CLOUD_CONNECT_MODE_ALL时无法准确获取最终登陆成的模式时打洞还是转发*/
    NETDEV_LOGIN_PROTO_E dwLoginProto;          /* 登录协议, 参见NETDEV_LOGIN_PROTO_E */
    BYTE  byRes[252];                           /* 保留字段 */
} NETDEV_CLOUD_DEV_LOGIN_INFO_S, *LPNETDEV_CLOUD_DEV_LOGIN_INFO_S;


/**登录速度优化
 * @brief 登录信息 结构体定义 Device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVLoginInfo
{
    UINT32 LoginType;                               /* 登录类型 参考枚举#NETDEV_LOGIN_TYPE_E */
    LPVOID lpUserID;                                /* 云端账户登录ID User login ID */
    LPNETDEV_CLOUD_DEV_LOGIN_INFO_S pstCloudInfo;   /* pstCloudInfo云端设备登录信息 */
    INT32 dwCloudFunVersion;                        /* 内部保留,云端接口版本, 参见NETDEV_CLOUD_FUN_VERSION_E */
    INT32 dwShareSrcType;                           /* 内部保留,共享源类型, 参见NETDEV_CLOUD_SHARE_SRC_TYPE_E */
    CHAR szDevIP[NETDEV_LEN_64];                    /* 设备IP Device IP */
    CHAR szUserName[NETDEV_LEN_64];                 /* 用户名 User Name */
    CHAR szPassword[NETDEV_LEN_64];                 /* 密码 Password */
    INT32 dwDevPort;                                /* 设备服务器端口 Device Server Port */
    INT32   dwDevType;                              /* 设备类型,参见枚举#NETDEV_DEVICETYPE_E  Device type, see enumeration #NETDEV_DEVICETYPE_E */
    INT32   dwChannelNum;                           /* 通道个数  Number of Channels */
    CHAR szRegisterCode[NETDEV_LEN_64];             /* 设备注册码 */
    CHAR szDeviceSN[NETDEV_LEN_64];                 /* 设备SN Device SN */
    UINT32 udwAccessType;                           /* 接入协议类型 参见NETDEV_ACCESS_PROTOCOL_E */ 
    UINT32 udwRemainLockTimes;                      /* 用户安全登录次数 */
    UINT32 udwRemainUnlockTime;                     /* 用户安全登录时间 */
    BYTE byRes[356];                                /* 保留字段  Reserved */
}NETDEV_LOGIN_INFO_S,*LPNETDEV_LOGIN_INFO_S;

/**
* @brief  设备、通道共享响应 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVResponse
{
    CHAR szUserName[NETDEV_CLOUD_SHARE_TARGET_NAME_LEN];                   /* 共享对象 */
    CHAR szDescription[NETDEV_CLOUD_SHARE_DESCRIBE_LEN];                   /* 失败原因描述 */
    BYTE byRes[128];                                                       /* 保留字段 */
}NETDEV_RESPONSE_S,*LPNETDEV_RESPONSE_S;

/**
* @brief  共享限制信息
* @attention 无 None
*/
typedef struct tagNETDEVLimitInfo
{
    INT64   tValidTimeSecond;                                             /* 共享有效时间 单位：秒 */
    CHAR    szPermission[NETDEV_CLOUD_DEV_USER_AUTH_LEN];                   /* 共享权限 */
    CHAR    szChannelNum[NETDEV_DEV_OTHER_LEN_MAX];                         /* 共享通道号 */
    CHAR    szChannelName[NETDEV_CLOUD_SHARE_TARGET_NAME_LEN];              /* 共享通道名 */
    CHAR    szDescription[NETDEV_CLOUD_SHARE_DESCRIBE_LEN];                 /* 共享描述 */
    BYTE    byRes[128];                                                     /* 保留字段 */
}NETDEV_LIMIT_INFO_S,*LPNETDEV_LIMIT_INFO_S;

/**
* @brief  设备、通道共享信息 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVChannelShareInfo
{
    CHAR                    szDevName[NETDEV_DEV_NAME_LEN_MAX];             /* 设备名 */
    CHAR                    szUserName[NETDEV_CLOUD_USER_NAME_LEN];         /* 共享对象用户名 */
    NETDEV_LIMIT_INFO_S     stLimitInfo;                                    /* 共享限制信息 */
    CHAR                    szEZPassword[NETDEV_DEV_PASSWORD_LEN_MAX];      /* EZCloud密码 */
    CHAR                    szEZUserName[NETDEV_CLOUD_USER_NAME_LEN];       /* EZCloud用户名 */
    BYTE                    byRes[128];                                     /* 保留字段 */
}NETDEV_CHANNEL_SHARE_INFO_S,*LPNETDEV_CHANNEL_SHARE_INFO_S;

/**
* @brief   共享限制信息 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVShareLimitInfo
{
    CHAR    szUserName[NETDEV_CLOUD_USER_NAME_LEN];             /* 共享对象用户名 */
    CHAR    szUserPhone[NETDEV_DEV_OTHER_LEN_MAX];              /* 共享对象手机号 */
    CHAR    szUserMail[NETDEV_DEV_OTHER_LEN_MAX];               /* 共享对象邮箱地址 */
    INT64   tValidTimeSecond;                                   /* 共享有效时间 单位：秒 */
    INT64   tVaildTimeSlot;                                     /* 共享有效时间段 单位：秒 */
    CHAR    szPermission[NETDEV_CLOUD_DEV_USER_AUTH_LEN];       /* 共享权限 */
    INT64   dwChannelNum;                                       /* 共享通道号 */
    CHAR    szDescription[NETDEV_CLOUD_SHARE_DESCRIBE_LEN];     /* 共享描述 */
    CHAR    szChannelName[NETDEV_CLOUD_SHARE_TARGET_NAME_LEN];  /* 通道名 */
    BYTE    byRes[64];                                          /* 保留字段 */
}NETDEV_SHARE_LIMIT_INFO_S,*LPNETDEV_SHARE_LIMIT_INFO_S;

/**
* @brief 云端共享设备信息 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVDevInfo
{
    CHAR    szDevName[NETDEV_DEV_NAME_LEN_MAX];     /* 设备名 */
    CHAR    szDevAlias[NETDEV_DEV_OTHER_LEN_MAX];   /* 设备别名 */
    INT32   dwSize;                                 /* 共享限制记录个数 */
    BYTE    byRes[128];                             /* 保留字段 */
}NETDEV_DEV_INFO_S,*LPNETDEV_DEV_INFO_S;

/**
* @brief 取消设备/通道共享 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVDeleteShareChannelInfo
{
    CHAR szDevOwner[NETDEV_DEV_OTHER_LEN_MAX];          /* 设备所有者标识位 */
    CHAR szDevName[NETDEV_DEV_NAME_LEN_MAX];            /* 设备名 */
    CHAR szChannelNum[NETDEV_DEV_OTHER_LEN_MAX];        /* 通道号 */
    CHAR szUserName[NETDEV_DEV_OTHER_LEN_MAX];          /* 取消共享对象标识位 */
    CHAR szEZPassword[NETDEV_DEV_PASSWORD_LEN_MAX];     /* EZCloud密码 */
    CHAR szEZUserName[NETDEV_CLOUD_USER_NAME_LEN];      /* EZCloud用户名 */
    BYTE byRes[128];                                    /* 保留字段 */
}NETDEV_DELETE_SHARE_CHANNEL_INFO_S,*LPNETDEV_DELETE_SHARE_CHANNEL_INFO_S;



/**
 * @brief 云端设备信息 结构体定义 Cloud Device information Structure definition
 * @attention 废弃,不建议使用
 */
typedef struct tagNETDEVCloudDevInfo
{
    CHAR    szIPAddr[NETDEV_IPADDR_STR_MAX_LEN];            /* 设备IP */
    CHAR    szDevUserName[NETDEV_LEN_260];                  /* 设备用户名 */
    CHAR    szDevName[NETDEV_LEN_260];                      /* 设备名称 */
    CHAR    szDevModel[NETDEV_LEN_64];                      /* 设备型号 */
    CHAR    szDevSerialNum[NETDEV_LEN_64];                  /* 设备序列号 */
    INT32   dwOrgID;                                        /* 所属组织ID */
    INT32   dwDevPort;                                      /* 设备端口 */
    BOOL    bIsOnline;                                      /* 设备是否在线 */
    INT32   dwConnectMode;                                  /* 连接模式 Connect Mode*/
    INT32   dwDisTributeCloud;                               /* 分发模式  参见枚举 NETDEV_DISTRIBUTE_CLOUD_SRV_E*/
    BYTE    byRes[256];
}NETDEV_CLOUD_DEV_INFO_S,*LPNETDEV_CLOUD_DEV_INFO_S;

/**
 * @brief 云端设备基本信息 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVCloudDevUserAuthority
{
    CHAR    szDevUserAuth[NETDEV_CLOUD_DEV_USER_AUTH_LEN];            /* 设备用户权限 */
    BYTE    byRes[512];
}NETDEV_CLOUD_DEV_USER_AUTH_S, *LPNETDEV_CLOUD_DEV_USER_AUTH_S;

/**
 * @brief 云端设备共享信息 结构体定义 Cloud Device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVCloudDevShareInfo
{
    BOOL    bIsShareDev;                                    /* 共享设备标志位 */
    INT64   tValidTimeSecond;                               /* 共享有效期 单位：秒 */
    CHAR    szDevUserName[NETDEV_CLOUD_DEV_USER_NAME_LEN];  /* 设备ID */
    CHAR    szCloudUserName[NETDEV_CLOUD_USER_NAME_LEN];    /* 共享设备所有者云账号名称 */
    INT32   dwUserAuthSize;                                 /* 设备用户权限个数 */
    LPNETDEV_CLOUD_DEV_USER_AUTH_S pstUserAuth;             /* 设备用户权限列表 权限列表内存个数与dwUserAuthoritySize对应，建议至少分配128个 */
}NETDEV_CLOUD_DEV_SHARE_INFO_S,*LPNETDEV_CLOUD_DEV_SHARE_INFO_S;


 /**
 * @brief 云端设备共享对象名称 
 * @attention 无 None
 */
typedef struct tagNETDEVCloudDevShareTarget
{
    CHAR    szName[NETDEV_CLOUD_SHARE_TARGET_NAME_LEN];     /* 共享对象名称 */
    INT32   dwResultCode;                                   /* 共享错误码 0:共享成功, 其他:共享失败(错误码见云端设备相关错误码 NETDEV_E_CLOUD_INVALID_REG_CODE) */
    BYTE    byRes[128];                                     /* 保留字段 */
}NETDEV_CLOUD_DEV_SHARE_TARGET_S, *LPNETDEV_CLOUD_DEV_SHARE_TARGET_S;

 /**
 * @brief 云端设备共享对象名称列表 
 * @attention 无 None
 */
typedef struct tagNETDEVCloudDevShareTargetList
{
    INT32                               dwSize;         /* 共享对象个数 */
    LPNETDEV_CLOUD_DEV_SHARE_TARGET_S   pstTarget;      /* 共享对象 用户根据size分配内存 */
    BYTE                                byRes[128];
}NETDEV_CLOUD_DEV_SHARE_TARGET_LIST_S, *LPNETDEV_CLOUD_DEV_SHARE_TARGET_LIST_S;

 /**
 * @brief 云端共享设备信息
 * @attention 无 None
 */
typedef struct tagNETDEVCloudDevShareCfg
{
    INT64 tValidTimeSecond;                                /* 共享有效时间 单位：秒 */
    CHAR  szDevUserAuth[NETDEV_CLOUD_DEV_USER_AUTH_LEN];   /* 设备用户权限 */
    CHAR  szDescribe[NETDEV_CLOUD_SHARE_DESCRIBE_LEN];     /* 共享描述 */
    CHAR  szDevUserName[NETDEV_CLOUD_DEV_USER_NAME_LEN];   /* 设备ID */
    NETDEV_CLOUD_DEV_SHARE_TARGET_LIST_S  stTargetList;    /* 共享对象列表 */
}NETDEV_CLOUD_DEV_SHARE_CFG_S,*LPNETDEV_CLOUD_DEV_SHARE_CFG_S;

 /**
 * @brief 云端设备共享记录信息 
 * @attention 无 None
 */
typedef struct tagNETDEVCloudDevShareRecord
{
    INT64 tValidTimeSecond;                                                /* 共享有效时间 单位：秒 */
    CHAR  szTargetUserName[NETDEV_CLOUD_SHARE_TARGET_NAME_LEN];            /* 共享对象用户名 */
    CHAR  szTargetPhoneNum[NETDEV_CLOUD_SHARE_TARGET_NAME_LEN];            /* 共享对象手机号 */
    CHAR  szTargetMailNum[NETDEV_CLOUD_SHARE_TARGET_NAME_LEN];             /* 共享对象邮箱号 */
    CHAR  szDevName[NETDEV_CLOUD_DEV_NAME_LEN];                            /* 设备名称 */
    CHAR  szDevUserName[NETDEV_CLOUD_DEV_USER_NAME_LEN];                   /* 设备用户名 */
    CHAR  szDevUserAuth[NETDEV_CLOUD_DEV_USER_AUTH_LEN];                   /* 设备用户权限 */
    CHAR  szDescribe[NETDEV_CLOUD_SHARE_DESCRIBE_LEN];                     /* 共享描述 */
}NETDEV_CLOUD_DEV_SHARE_RECORD_S, *LPNETDEV_CLOUD_DEV_SHARE_RECORD_S;

 /**
 * @brief 批量云端设备名称 
 * @attention 无 None
 */
typedef struct tagNETDEVBatchCloudDevInfo
{
    CHAR  szDevUserName[NETDEV_CLOUD_DEV_NAME_LEN];              /* 设备名称 */
    INT32 dwResultCode;                                       /* 共享错误码 0:共享成功, 其他:取消设备绑定失败(错误码见云端设备相关错误码 NETDEV_E_CLOUD_INVALID_REG_CODE) */
}NETDEV_BATCH_CLOUD_DEV_INFO_S, *LPNETDEV_BATCH_CLOUD_DEV_INFO_S;

/**
 * @brief 批量云端设备列表
 * @attention 无 None
 */
typedef struct tagNETDEVBatchCloudDevList
{
    UINT32                              udwSize;            /* 云端设备个数，最大64个 */
    LPNETDEV_BATCH_CLOUD_DEV_INFO_S     pstBatchDevInfo;    /* 云端设备名称指针，用户动态分配内存,内存大小与udwSize相对应 */
}NETDEV_BATCH_CLOUD_DEV_LIST_S, *LPNETDEV_BATCH_CLOUD_DEV_LIST_S;

 /**
 * @brief 批量关闭云端共享设备信息
 * @attention 无 None
 */
typedef struct tagNETDEVBatchDevShareInfo
{
    CHAR szDevUserName[NETDEV_CLOUD_DEV_NAME_LEN];                /* 云端设备ID */
    NETDEV_CLOUD_DEV_SHARE_TARGET_LIST_S  stTargetList;           /* 共享对象列表  */
 }NETDEV_BATCH_DEV_SHARE_INFO_S,*LPNETDEV_BATCH_DEV_SHARE_INFO_S;

 /**
 * @brief 批量关闭云端共享设备信息列表
 * @attention 无 None
 */
typedef struct tagNETDEVBatchDevShareList
{
    BOOL    bIsStopedByOwner;                                   /* 是否由设备所有者关闭共享 （当bIsStopedByOwner等于FALSE时传入一个共享对象pstTarget，共享对象名称为空） */
    UINT32  udwSize;                                            /* 共享设备个数 */
    LPNETDEV_BATCH_DEV_SHARE_INFO_S  pstBatchDevShareInfo;      /* 批量关闭云端共享设备信息 */
}NETDEV_BATCH_DEV_SHARE_LIST_S,*LPNETDEV_BATCH_DEV_SHARE_LIST_S;



/**
 * @brief 云端设备组织信息 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVCloudOrgInfoEx
{
    INT32   dwOrgID;                        /* 所属组织ID */
    INT32   dwOrgParentID;                  /* 所在父设备ID */
    CHAR    szOrgName[NETDEV_LEN_260];      /* 组织名称 */
    BYTE    byRes[128];                     /* 保留字段 */
}NETDEV_CLOUD_ORG_INFO_S,*LPNETDEV_CLOUD_ORG_INFO_S;


/**
 * @brief 云端设备组织信息 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVCloudDevBindInfo
{
    CHAR szDevRegisterCode[NETDEV_LEN_64];      /* 设备注册码 */
    CHAR szDevAlias[NETDEV_LEN_64];             /* 设备别名 */
    CHAR szDevCloudUsername[NETDEV_LEN_64];     /* 设备用户名 */
    CHAR szDevSerialNum[NETDEV_LEN_64];         /* 设备序列号 */
    CHAR szDevModel[NETDEV_LEN_64];             /* 设备型号 Device model */
    BYTE byRes[256];                            /* 保留字段 */
}NETDEV_CLOUD_DEV_BASE_INFO_S,*LPNETDEV_CLOUD_DEV_BASE_INFO_S;


/**
 * @brief 设备分发策略信息结构体
 * @attention 无None
 */
typedef struct tagNETDEVCloudDevDistributeInfo
{
    INT32   dwDistributeCloud;                          /* 支持的分发服务商，参考枚举NETDEV_DISTRIBUTE_CLOUD_SRV_E */
    INT32   dwBitrateLimit;                             /* 码率限制(单位：Kbps) */
    INT32   dwDistributeMode;                           /* 分发模式，参考枚举NETDEV_DISTRIBUTE_MODE_E */
    CHAR    szDevDistributeCap[NETDEV_LEN_64];          /* 设备分发能力 */
    BYTE    byRes[128];                                 /* 保留字段 Reserved */
}NETDEV_CLOUD_DEV_DISTRIBUTE_INFO_S,*LPNETDEV_CLOUD_DEV_DISTRIBUTE_INFO_S;

/**
 * @brief 通道视频流信息 结构体定义 Channel video stream information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVVideoStreamInfo
{
    NETDEV_LIVE_STREAM_INDEX_E  enStreamType;       /* 码流索引  Stream index */
    INT32                       bEnableFlag;        /* 是否启用  Enable or not */
    INT32                       dwHeight;           /* 视频编码分辨率-Height  Video encoding resolution - Height */
    INT32                       dwWidth;            /* 视频编码分辨率-Width  Video encoding resolution - Width */
    INT32                       dwFrameRate;        /* 视频编码配置帧率  Video encoding configuration frame rate */
    INT32                       dwBitRate;          /* 码率  Bit rate */
    NETDEV_VIDEO_CODE_TYPE_E    enCodeType;         /* 视频编码格式  Video encoding format */
    NETDEV_VIDEO_QUALITY_E      enQuality;          /* 图像质量  Image quality */
    INT32                       dwGop;              /* I帧间隔  I-frame interval */
    BOOL                        bConstantBitRate;   /* 是否为定码率 0:变码率 1:定码率 Constant Bit Rate or Variable bit rate;0:Variable 1:Constant*/
    BYTE                        byRes[28];          /* 保留字段  Reserved */
}NETDEV_VIDEO_STREAM_INFO_S, *LPNETDEV_VIDEO_STREAM_INFO_S;

/**
 * @brief 云端设备通道信息结构体定义
 * @attention 无None
 */
 typedef struct tagNETDEVCloudDevChlInfo
{
    INT32                          dwChannelID;                         /* 通道ID */
    CHAR                           szChannelSN[NETDEV_LEN_260];         /* 通道（IPC）序列号 */
    CHAR                           szChannelName[NETDEV_LEN_260];       /* 通道名 */
    NETDEV_VIDEO_STREAM_INFO_S     astStreamInfo[NETDEV_LEN_8];         /* 流信息列表 */
    BOOL                           bChannelStatus;                      /* 通道状态 */
    BYTE                           byRes[128];                          /* 保留字段 */
}NETDEV_CLOUD_DEV_CHL_INFO_S,*LPNETDEV_CLOUD_DEV_CHL_INFO_S;

/**
 * @brief 分页查询条件信息结构体
 * @attention 无None
 */
typedef struct tagNETDEVPageQueryCond
{
    INT32   dwQueryCond;        /* 查询条件0：设备状态；1：设备所在组织。 */
    INT32   dwSubQueryCond;     /* 当前查询条件的右值,用于补充说明查询条件中设备状态:0表示离线，1表示在线 */
    INT32   dwLogicalType;      /* 查询条件逻辑类型:参见枚举类型#NETDEV_QUERYCOND_LOGICTYPE_E */
    BYTE    byRes[128];         /* 保留字段 */
}NETDEV_PAGE_FIND_LOGIC_S,*LPNETDEV_PAGE_FIND_LOGIC_S;


/** 
 * @brief 分页查询信息结构体
 * @attention 无None
 */
typedef struct tagNETDEVPageQueryInfo
{
    INT32   dwLimitNum;                                          /* 单页查询设备数量，建议参考#NETDEV_PAGE_QUERY_CAP_INFO_S结构体中dwSuggestSinglePageQuantily值大小来设置*/
    INT32   dwStartID;                                           /* 单页查询设备的起始id,连续查询中可以用上次分页查询获取到的最后一个设备中的id字段+1，作为此次查询的开始id。*/
    INT32   dwCondNum;                                           /* 查询条件数量 */
    NETDEV_PAGE_FIND_LOGIC_S  astFindCond[NETDEV_LEN_16];        /* 查询条件信息列表,查询条件数量最多为16个,当查询数量为0时,此节点可选 */
    BYTE    byRes[128];                                          /* 保留字段*/
}NETDEV_PAGE_FIND_COND_S,*LPNETDEV_PAGE_FIND_COND_S;

/**
 * @brief 分页查询能力集信息结构体
 * @attention 无None
 */
typedef struct tagNETDEVCloudDevPopulationInfo
{
    INT32   dwDevTotalNum;          /* 当前云账号下所有的设备数量 */
    INT32   dwDevOfflineNum;        /* 当前云账号下离线设备总数 */
    BYTE    byRes[128];             /* 保留字段 */
}NETDEV_CLOUD_DEV_POPUL_INFO_S,*LPNETDEV_CLOUD_DEV_POPUL_INFO_S;

/**
 * @struct tagNETDEVCloudMobileInfo
 * @brief 终端信息
 * @attention 无 None
 */
typedef struct tagNETDEVCloudMobileInfo
{
    CHAR    szMobileModule[NETDEV_LEN_32];                      /* 终端信号 Module of Terminal */
    CHAR    szSystemType[NETDEV_LEN_16];                        /* 操作系统类型 System Type of Terminal */
    CHAR    szSystemVersion[NETDEV_LEN_16];                     /* 操作系统版本 System Version of Terminal */
    BOOL    bDonotDisturb;                                      /* 免打扰标志 Flag of Do Not Disturb */
    BOOL    bPushBuiltFlag;                                     /* 推送连接建立标识 Flag of push connected,Ture means Long Link*/
    CHAR    szAppName[NETDEV_LEN_32];                           /* App名称 App Name */
    CHAR    szAppLanguage[NETDEV_LEN_32];                       /* App语言环境 App Language. ex:en-us|zh-cn */
    CHAR    szAppVersion[NETDEV_LEN_16];                        /* App版本信息 App Version */
    BOOL    bIosEnvir;                                          /* IOS的环境标志 environment of IOS, True:Production False:Development*/
    BYTE    byRes[256];                                         /* 保留字段 Reserved */
}NETDEV_CLOUD_MOBILE_INFO_S,*LPNETDEV_CLOUD_MOBILE_INFO_S;

/**
 * @struct tagNETDEVCloudLimitInfo
 * @brief 终端限制信息
 * @attention 无 None
 */
typedef struct tagNETDEVCloudLimitInfo
{
    UINT32  udwMaxDeviceNum;                                    /* 设备最大接入数 Max Num of Online Device */
    UINT32  udwMaxAppTimeS;                                     /* App最大使用时间(秒) Max Time of App Cost */
    UINT32  udwMaxRTSNum;                                       /* 最大实况数量 Max Num of Real Time Stream */
    BYTE    byRes[256];                                         /* 保留字段 Reserved */
}NETDEV_CLOUD_LIMIT_INFO_S,*LPNETDEV_CLOUD_LIMIT_INFO_S;

/**
 * @struct tagNETDEVCloudNoAccountInfo
 * @brief 无账户信息
 * @attention szDeviceName is Not Required Using for Cancel Binding
 */
typedef struct tagNETDEVCloudNoAccountInfo
{
    CHAR    szDeviceSN[NETDEV_LEN_260];                         /* 设备序列号 SN of Device */
    CHAR    szDeviceName[NETDEV_LEN_260];                       /* 设备别名 Device Name Named By User */
    BYTE    byRes[256];                                         /* 保留字段 Reserved */
}NETDEV_CLOUD_NOACCOUNT_INFO_S, *LPNETDEV_CLOUD_NOACCOUNT_INFO_S;

/**
 * @struct tagNETDEVCloudFindVideoTimeCond
 * @brief 云存储时间信息查询条件
 * @attention 无 None
 */
typedef struct tagNETDEVCloudFindVideoTimeCond
{
    INT32    dwChannelID;                       /* 通道ID  ChannelID */
    DOUBLE   tBeginTime;                        /* 起始时间 Begin time */
    DOUBLE   tEndTime;                          /* 结束时间 End time */
    BYTE     byRes[256];                        /* 保留字段 */
}NETDEV_CLOUD_FIND_VIDEO_TIME_COND_S,*LPNETDEV_CLOUD_FIND_VIDEO_TIME_COND_S;

/**
 * @struct tagNETDEVCloudVideoTimeBlock
 * @brief 云端视频时间信息查询结果
 * @attention 无 None
 */
typedef struct tagNETDEVCloudVideoTimeBlock
{
    DOUBLE   tBeginTime;                         /* 起始时间 Begin time */
    DOUBLE   tEndTime;                           /* 结束时间 End time */
    BYTE    byRes[128];                          /* 保留字段 */
}NETDEV_CLOUD_VIDEO_TIME_BLOCK_S,*LPNETDEV_CLOUD_VIDEO_TIME_BLOCK_S;

/**
 * @struct tagNETDEVCloudVideoInfo
 * @brief 查找到的视频云存储信息
 * @attention 无 None
 */
typedef struct tagNETDEVCloudVideoInfo
{
    DOUBLE   tBeginTime;                         /* 起始时间 Begin time */
    DOUBLE   tEndTime;                           /* 结束时间 End time */
    DOUBLE   tExpireTime;                        /* 过期时间 Expiration time */
    UINT32   udwM3u8AvailSize;                   /* M3u8空间可用大小 */
    CHAR*    pszM3u8;                            /* M3u8信息,此内容较大，建议从堆上申请 */
    BYTE     byRes[256];                         /* 保留字段 */
}NETDEV_CLOUD_VIDEO_INFO_S,*LPNETDEV_CLOUD_VIDEO_INFO_S;

/**
*@enum tagNETDEVCloudStorageType
*@brief 云存储支持类型
*@attention 无
*/
typedef enum tagNETDEVCloudStorageType
{
    NETDEV_CLOUD_STORAGE_TYPE_PIC                 = 1,            /* 开启云存储图片告警 */
    NETDEV_CLOUD_STORAGE_TYPE_VIDEO               = 2,            /* 开启视频回放云存储 */
    NETDEV_CLOUD_STORAGE_TYPE_PIC_AND_VIDEO       = 3,            /* 开启云存储图片告警及视频回放云存储*/
    NETDEV_CLOUD_STORAGE_TYPE_INVALID
}NETDEV_CLOUD_STORAGE_TYPE_E;


/**
 * @brief 云端设备基本信息 结构体定义 Cloud Device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVCloudDevBasicInfo
{
    CHAR    szIPAddr[NETDEV_IPV4_LEN_MAX];              /* 设备IP Device IP */
    CHAR    szDevUserName[NETDEV_LEN_260];              /* 设备用户名 Device username */
    CHAR    szDevName[NETDEV_LEN_260];                  /* 设备名称 Device name */
    CHAR    szDevModel[NETDEV_LEN_64];                  /* 设备型号 Device model */
    CHAR    szDevSerialNum[NETDEV_LEN_64];              /* 设备序列号 Device serial number */
    INT32   dwOrgID;                                    /* 所属组织ID Home organization ID */
    INT32   dwDevPort;                                  /* 设备端口 Device port */
    INT32   dwDevID;                                    /* 设备ID此设备在设备列表中的序号 */
    CHAR    szDevSubName[NETDEV_LEN_260];               /* 设备别名：包括共享设备别名 */
    INT32   dwDevType;                                  /* 设备类型：参见枚举#NETDEV_CLOUD_DEVICE_TYPE  Device type, see enumeration #NETDEV_CLOUD_DEVICE_TYPE */
    BOOL    bKeepLiveStatus;                            /* 设备保活状态：在线返回true，不在线返回false */
    BOOL    bIsShareDev;                                /* 共享设备标志位，如果是共享设备，则为true，自己名下的设备为false */
    INT32   dwValidityShareTime;                        /* 共享有效期，单位秒。例如返回“3600.0000000”，客户端当前时间2014-2-27 9:22，就允许-2-27 10:22前发起连接。当共享设备标志位为true时有效。*/
    CHAR    szShareDevUserName[NETDEV_LEN_260];         /* 共享设备所有者用户名，当bIsShareDev为true时有效 */
    INT32   dwConnectMode;                              /* 连接模式 Connect Mode*/
    INT32   dwDisTributeCloud;                          /* 分发模式  参见枚举 NETDEV_DISTRIBUTE_CLOUD_SRV_E*/
    INT32   dwCloudStorageType;                         /* 设备云存储类型 参考枚举 NETDEV_CLOUD_STORAGE_TYPE_E*/
    BYTE    byRes[120];                                 /* 保留字段 */
}NETDEV_CLOUD_DEV_BASIC_INFO_S,*LPNETDEV_CLOUD_DEV_BASIC_INFO_S;


/**
 * @struct tagstNETDEVSELogInfo
 * @brief 安全登录信息
 * @attention
 */
typedef struct tagstNETDEVSELogInfo
{
    INT32  dwSELogCount;    /* 安全登录次数 */
    INT32  dwSELogTime;     /* 安全登录时间 */
    BYTE   byRes[64];       /* 保留字段 */
}NETDEV_SELOG_INFO_S, *LPNETDEV_SELOG_INFO_S;

/**
 * @struct tagstNETDEVLoginInfo
 * @brief 设备登录信息
 * @attention
 */
typedef struct tagstNETDEVDeviceLoginInfo
{    
    CHAR    szIPAddr[NETDEV_LEN_260];       /* IP地址/域名 */
    INT32   dwPort;                         /* 端口号 */
    CHAR    szUserName[NETDEV_LEN_132];     /* 用户名 */
    CHAR    szPassword[NETDEV_LEN_128];     /* 密码 */
    INT32   dwLoginProto;                   /* 登录协议, 参见NETDEV_LOGIN_PROTO_E */
    INT32   dwDeviceType;                   /* 设备类型, 参见NETDEV_DEVICE_TYPE_E */
    BYTE    byRes[256];                     /* 保留字段 */
}NETDEV_DEVICE_LOGIN_INFO_S, *LPNETDEV_DEVICE_LOGIN_INFO_S;


/**
 * @struct tagNETDEVAlarmInfo
 * @brief 告警信息 结构体定义 Alarm information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVAlarmInfoV30
{
    INT32 dwAlarmType;                                  /* 告警类型，参见枚举#NETDEV_ALARM_TYPE_E  Alarm type, see enumeration #NETDEV_ALARM_TYPE_E */
    INT32 dwAlarmSubType;                               /* 告警子类型，参见NETDEV_ALARM_SUBTYPE_E */
    INT32 dwAlarmLevel;                                 /* 告警等级，1到5级，1级最严重 */
    INT64 tAlarmTimeStamp;                              /* 告警发生时间  Alarm occurrence time */
    INT32 dwChannelID;                                  /* 通道ID,非一体机设备使用  Channel ID */
    INT32 dwAlarmID;                                    /* 告警ID，一体机设备使用 */
    INT32 dwAlarmSrcID;                                 /* 告警源ID 参见枚举# NETDEV_ALARM_SRC_TYPE_E */
    CHAR  szAlarmSrc[NETDEV_ALARM_SOURCE_MAX_LEN];      /* 告警源信息（名称） */
    BOOL IsAlarmSnapExisted;                            /* 告警是否有抓图 0没有抓图 1有抓图  vms使用*/
    UINT16  wIndex;                                     /* 索引号  Index number, index number */
    INT32   dwTotalBandWidth;                           /* 当前带宽总量,单位为MBps  Current total bandwidth (in MBps) */
    INT32   dwUnusedBandwidth;                          /* 未使用的带宽,单位为MBps  Bandwidth left (in MBps)*/
    INT32   dwTotalStreamNum;                           /* 总路数 Total cameras*/
    INT32   dwFreeStreamNum;                            /* 未使用路数 Cameras left */
    INT32   dwMediaMode;                                /* 流类型,参见枚举#NETDEV_MEDIA_MODE_E Stream type. For enumerations, see#NETDEV_MEDIA_MODE_E*/
    INT32   dwEventCode;                                /* 事件类型，用于上报解码层事件类型，参见枚举# NETDEV_PLAYER_RUN_INFO_TYPE_E */
    INT32   dwReserved;                                 /* 异常上报保留参数，用于上报解码层保留参数 */
    CHAR    szFileName[NETDEV_LEN_256];                 /* ND上报字符串参数信息 */
    BYTE    byRes[248];                                 /* 保留字段 */
}NETDEV_ALARM_INFO_V30_S, *LPNETDEV_ALARM_INFO_V30_S;


/**
 * @struct tagNETDEVEventRes
 * @brief 事件资源信息 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVEventRes
{
    INT32   dwResType;                          /* 资源类型，参见枚举# NETDEV_EVENT_RES_TYPE_E */
    INT32   dwResID;                            /* 资源ID */
    INT32   dwFirstSubResID;                    /* 第一子资源ID */
    INT32   dwSecondSubResID;                   /* 第二子资源ID 不同资源类型对应意义不同。如：电视墙分屏资源的资源ID是电视墙ID，第一子资源ID是窗口ID，第二子资源ID就是分屏ID*/

    BYTE    byRes[16];                          /* 保留字段 */
}NETDEV_EVENT_RES_S, *LPNETDEV_EVENT_RES_S;


/**
 * @struct tagNETDEVEventInfo
 * @brief 事件信息 结构体定义 Alarm information Structure definition
 * @attention  事件个数超过NETDEV_MAX_EVENT_RES_SIZE个时，超过部分使用存放在指针pstEventRes中，该指针的内存进行动态申请
 */
typedef struct tagNETDEVEventInfo
{
    INT32                   dwSize;                                     /* 资源数量 */
    NETDEV_EVENT_RES_S      astEventRes[NETDEV_MAX_EVENT_RES_SIZE];     /* 事件资源信息 */
    INT32                   dwEventActionType;                          /* 事件类型，参见枚举# NETDEV_EVENT_ACTION_TYPE_E */
    LPNETDEV_EVENT_RES_S    pstEventRes;                                /* 超过NETDEV_MAX_EVENT_RES_SIZE的事件资源信息 需要动态申请*/
    BYTE                    byRes[28];                                  /* 保留字段 */
}NETDEV_EVENT_INFO_S, *LPNETDEV_EVENT_INFO_S;

/**
 * @struct tagNETDEVReportInfo
 * @brief 告警/事件上报信息 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVReportInfo
{
    INT32                       dwReportType;       /* 上报类型，参见枚举#NETDEV_REPORT_TYPE_E */
    NETDEV_ALARM_INFO_V30_S     stAlarmInfo;        /* 告警信息，当dwReportType为NETDEV_REPORT_TYPE_ALARM时有效 */
    NETDEV_EVENT_INFO_S         stEventInfo;        /* 事件信息，当dwReportType为NETDEV_REPORT_TYPE_EVENT时有效 */
}NETDEV_REPORT_INFO_S, *LPNETDEV_REPORT_INFO_S;

/**
 * @struct tagstNETDEVUserSimpleInfo
 * @brief 用户账号信息（用户名＋密码）
 * @attention
 */
typedef struct tagstNETDEVUserSimpleInfo
{    
    CHAR szUserName[NETDEV_USERNAME_LEN];       /* 用户名 */
    CHAR szPassword[NETDEV_PASSWORD_LEN];       /* 密码 */
    BYTE byRes[64];                             /* 保留字段 */
}NETDEV_USER_SIMPLE_INFO_S, *LPNETDEV_USER_SIMPLE_INFO_S;

/**
 * @struct tagstNETDEVIPAddrInfo
 * @brief IP地址信息
 * @attention
 */
typedef struct tagstNETDEVIPAddrInfo
{
    INT32   dwType;                            /* 地址类型，参见枚举NETDEV_IP_ADDRESS_TYPE_E */
    CHAR    szIPAddr[NETDEV_MAX_URL_LEN];      /* IP地址/域名 */
    INT32   dwPort;                            /* 端口号 */
    BYTE    byRes[60];                         /* 保留字段 */
}NETDEV_IPADDR_INFO_S, *LPNETDEV_IPADDR_INFO_S;

/**
* @brief Onvif信息
* @attention
*/
typedef struct tagstNETDEVOnvifInfo
{   
    UINT32   udwTransportMode;                          /* 传输模式，参见枚举NETDEV_TRANS_PROTOCOL_E */

    BYTE  byRes[128];                                   /* 保留字段  Reserved field*/
}NETDEV_ONVIF_INFO_S, *LPNETDEV_ONVIF_INFO_S;

/**
 * @struct tagNETDEVGBInfo
 * @brief 国标信息
 * @attention 无 None
 */
typedef struct tagNETDEVGBInfo
{
    CHAR     szUniCode[NETDEV_LEN_32];      /* 国标资源编码，范围[1, 32]*/
    UINT32   udwTransport;                  /* 传输模式 0: TCP 1: UDP*/
    BYTE   byRes[128];                      /* 保留字节 */
}NETDEV_GBINFO_S, *LPNETDEV_GBINFO_S;

/**
 * @struct tagNETDEVSmartLockInfo
 * @brief 智能锁信息
 * @attention 无 None
 */
typedef struct tagNETDEVSmartLockInfo
{
    UINT32 udwType;                         /* 锁类型 0: WIFI锁 1: NBIoT锁 */
    UINT32 udwSignal;                       /* 锁信号 详见 NETDEV_LOCK_SIGNAL_E */
    UINT32 udwStatus;                       /* 锁状态 0：在线  1：离线*/
    UINT32 udwBatteryPercent;               /* 电量，取值范围[0,100] */
    CHAR   szSN[NETDEV_LEN_64];             /* 锁设备序列号，字符串范围[0,20] */
    CHAR   szIMEI[NETDEV_LEN_64];           /* 国际移动设备识别码 Type为1时携带,字符串长度范围[1,16] */
    CHAR   szVersion[NETDEV_LEN_256];       /* 锁版本信息 字符串长度范围[1,64] */
    CHAR   szRoomName[NETDEV_LEN_480];      /* 绑定房间名称 字符串长度范围[1, 128]*/
    BYTE   byRes[128];                      /* 保留字节 */
}NETDEV_SMART_LOCK_INFO_S,*LPNETDEV_SMART_LOCK_INFO_S;

/*
 * @struct tagNETDEVPlayerBasicInfo
 * @brief 播放盒信息 结构体定义
 * @attention 无 None
*/
typedef struct tagNETDEVIPMPlayerBasicInfo
{
    UINT32                          udwPlayerID;                            /* 播放盒ID */
    UINT32                          udwVendor;                              /* 厂商 添加播放盒时必选 见 NETDEV_DEVICE_IPM_VENDORS_ID_E */
    UINT32                          udwModel;                               /* 型号 添加播放盒时必选 见 NETDEV_DEVICE_IPM_MODEL_ID_E */
    CHAR                            szPlayerName[NETDEV_LEN_128];           /* 播放盒名称 [1,64] */
    UINT32                          udwOrgID;                               /* 组织ID 播放盒信息查询时必选 */
    CHAR                            szOrgName[NETDEV_LEN_128];              /* 组织名称 [1,64] 播放盒信息查询时必选 */
    CHAR                            szPlayerMngtServerName[NETDEV_LEN_128]; /* 播放盒管理设备名称 [1, 64] 播放盒信息查询时必选 */
    CHAR                            szPlayerMngtServerIP[NETDEV_LEN_32];    /* 播放盒管理设备IP 播放盒信息查询时必选 */
    NETDEV_XW_RESOLUTION_S          stResolution;                           /* 屏幕像素 */
    BYTE                            byRes[256];                             /* 保留字段 */
}NETDEV_IPM_PLAYER_BASIC_INFO_S,*LPNETDEV_IPM_PLAYER_BASIC_INFO_S;

/**
 * @struct tagstNETDEVDeviceBasicInfo
 * @brief 设备基本信息
 * @attention
 */
typedef struct tagstNETDEVDeviceBasicInfo
{
    NETDEV_IPADDR_INFO_S stDevAddr;                         /* 设备IP地址信息 */
    NETDEV_USER_SIMPLE_INFO_S stDevUserInfo;                /* 设备用户名、密码 */
    CHAR szDevName[NETDEV_NAME_MAX_LEN];                    /* 设备名称 */
    CHAR szDevDesc[NETDEV_DESCRIBE_MAX_LEN];                /* 设备描述 */
    CHAR szDevModel[NETDEV_CODE_STR_MAX_LEN];               /* 设备型号 */
    INT32 dwDevID;                                          /* 设备ID */
    INT32 dwDevStatus;                                      /* 设备状态, 参考# NETDEV_DEVICE_STATUS_E */
    INT32 dwDevType;                                        /* 设备类型，参考# NETDEV_DEVICE_MAIN_TYPE_E */
    INT32 dwDevSubType;                                     /* 设备子类型，参考# NETDEV_DEVICE_SUB_TYPE_E */
    INT32 dwOrgID;                                          /* 组织编号 */
    INT32 dwAccessProtocol;                                 /* 接入协议 参考# NETDEV_ACCESS_PROTOCOL_E */
    INT32 dwAccessMode;                                     /* 接入方式 参考# NETDEV_DEVICE_ACCESS_MODE_E*/
    INT32 dwServerID;                                       /* 所属服务器ID */
    INT32 dwAudioResID;                                     /* 音频通道ID */
    INT32 dwIsPTZNeeded ;                                   /* 是否需要云台 0:  不需要 1:  需要 255: 自适应 */
    CHAR  szVIIDCode[NETDEV_VIID_CODE_LEN];                 /* 视图库编码,仅卡口设备时有效 */
    INT32 dwVIIDStatus;                                     /* 视图库状态，用来标识当前设备是否已通过视图库协议连接，0：离线 1：在线 */
    CHAR szSerialNum[NETDEV_LEN_64];                        /* 设备序列号*/
    CHAR szSoftVersion[NETDEV_LEN_128];                     /* 软件版本号*/
    CHAR szMacAddr[NETDEV_LEN_32];                          /* MAC地址*/
    INT32 dwStoreStatus;                                    /* 设备存储状态。0: 空闲 1: 未格式化 2: 格式化中3: 运行中*/
    NETDEV_ONVIF_INFO_S stOnvifInfo;                        /* onvif信息 */
    NETDEV_GBINFO_S stGBInfo;                               /* 国标信息 当AccessProtocol值为3时该节点必选，其他可选*/
    LPNETDEV_SMART_LOCK_INFO_S pstSmartLockInfo;            /* 锁设备信息 需调用者分配内存 */
    CHAR szManufacture[NETDEV_LEN_64];                      /* 厂商名称 */
    CHAR szDeviceCode[NETDEV_LEN_32];                       /* 设备编码 [1,32] 添加播放盒时必选  */
    LPNETDEV_IPM_PLAYER_BASIC_INFO_S  pstPlayerInfo;        /* 播放盒信息 当Type为11时必选 需要malloc分配内存 */
    UINT32  udwCustomProtocolID;                            /* 自定义协议ID，当AccessProtocol值为4时该节点必选 */
    UINT32  udwChlMaxNum;                                   /* 设备通道号最大数量，当AccessProtocol值为4时该节点必选 */
    UINT32  udwChlIndexNum;                                 /* 设备通道号数量，当AccessProtocol值为4时该节点必选，上限256 */
    UINT32* pudwChlIndexList;                               /* 通道号列表，需动态分配内存，建议分配256个 */
    BYTE byRes[4];                                         /* 保留字段 */
}NETDEV_DEV_BASIC_INFO_S, *LPNETDEV_DEV_BASIC_INFO_S;


/**
 * @struct tagstNETDEVDeviceFirmwareInfo
 * @brief 设备固件信息
 * @attention
 */
typedef struct tagstNETDEVDeviceFirmwareInfo
{    
    CHAR szDevModel[NETDEV_CODE_STR_MAX_LEN];       /* 设备型号 */
    CHAR szFireVersion[NETDEV_CODE_STR_MAX_LEN];    /* 软件版本号 */
    CHAR szSerialNum[NETDEV_CODE_STR_MAX_LEN];      /* 设备序列号 */
    BYTE byRes[128];                                /* 保留字段 */
}NETDEV_DEV_FIREWARE_INFO_S, *LPNETDEV_DEV_FIREWARE_INFO_S;

/**
 * @struct tagstNETDEVDeviceDetailInfo
 * @brief 设备详细信息
 * @attention
 */
typedef struct tagstNETDEVDeviceDetailInfo
{    
    NETDEV_DEV_BASIC_INFO_S stDevBasicInfo;             /* 设备基本信息 */
    NETDEV_DEV_FIREWARE_INFO_S stDevFirewareInfo;       /* 设备固件信息 */
}NETDEV_DEV_INFO_V30_S, *LPNETDEV_DEV_INFO_V30_S;


/**
 * @struct tagstNETDEVEncodeChnProperty
 * @brief 编码通道属性
 * @attention
 */
typedef struct tagstNETDEVEncodeChnProperty
{
    INT32   dwMaxStream;        /* 支持的最大流个数 */
    BOOL    bSupportPTZ;        /* 是否支持云台 */
    INT32   dwAudioResID;       /* 音频资源ID */
    BYTE    byRes[64];          /* 保留字段 */
}NETDEV_ENCODE_CHN_PROPERTY_S, *LPNETDEV_ENCODE_CHN_PROPERTY_S;

/**
 * @struct tagstNETDEVDecodeChnProperty
 * @brief 解码通道属性
 * @attention
 */
typedef struct tagstNETDEVDecodeChnProperty
{
    INT32 dwVideoFmtCapSize;                                    /* 编码制式能力集选项数量 */
    INT32 adwVideoFormatCap[NETDEV_VIDEO_FORMAT_CAP_NUM];       /* 编码制式能力集 */
    INT32 dwLayoutCapSize;                                      /* 分屏能力集选项数量 */
    INT32 adwLayoutCap[NETDEV_LAYOUT_CAP_NUM];                  /* 分屏能力集 */
    BYTE  byRes[64];                                            /* 保留字段 */
}NETDEV_DECODE_CHN_PROPERTY_S, *LPNETDEV_DECODE_CHN_PROPERTY_S;

/**
 * @struct tagstNETDEVAlarmOutChnProperty
 * @brief 告警输出通道属性
 * @attention
 */
typedef struct tagstNETDEVAlarmOutChnProperty
{
    INT32 dwRunMode;        /* 运行模式（常开/常闭）参见#NETDEV_ALARM_STATUS_E */
    INT32 dwDuration;       /* 持续时间：(ms) */
    BYTE byRes[64];         /* 保留字段 */
}NETDEV_ALARMOUT_CHN_PROPERTY_S, *LPNETDEV_ALARMOUT_CHN_PROPERTY_S;

/**
 * @struct tagstNETDEVAlarmInChnProperty
 * @brief 告警输入通道属性
 * @attention
 */
typedef struct tagstNETDEVAlarmInChnProperty
{
    INT32 dwRunMode;        /* 运行模式（常开/常闭）参见#NETDEV_ALARM_STATUS_E */
    BOOL  bEnable;          /* 使能开关（使能开/使能关） */
    BYTE byRes[64];         /* 保留字段 */
}NETDEV_ALARMIN_CHN_PROPERTY_S, *LPNETDEV_ALARMIN_CHN_PROPERTY_S;


/**
 * @struct tagstNETDEVDAProperty
 * @brief 代理设备通道属性
 * @attention
 */
typedef struct tagstNETDEVDAProperty
{
    CHAR   szPointCode[NETDEV_DA_POINT_CODE_LEN];         /* 点位编码或门编码 */
    CHAR   szAreaCode[NETDEV_DA_AREA_CODE_LEN];           /* 区域编码 */
    UINT32 udwPointStatus;                                /* 告警点位状态请参考#NETDEV_ALARM_POINT_STATUS_TYPE_E 或门状态 请参考#NETDEV_DOOR_STATUS_TYPE_E */
    BYTE   byRes[64];                                     /* 保留字段 */
}NETDEV_DA_CHN_PROPERTY_S, *LPNETDEV_DA_CHN_PROPERTY_S;



/**
* @struct tagNETDEVTrafficStatisticsInfo
* @brief 客流量统计 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVTrafficStatisticsInfo
{
    BOOL    bIsSuccess;                                    /* 查询是否成功 */
    INT32   dwChannelID;                                   /* 通道号 */
    UINT32  udwSize;                                       /* 时间段个数 */
    UINT32  audwEnterCount[NETDEV_PEOPLE_CNT_MAX_NUM];     /* 进入人数统计 */
    UINT32  audwExitCount[NETDEV_PEOPLE_CNT_MAX_NUM];      /* 离开人数统计 */
    BYTE    byRes[6];                                      /* 保留字段   */
}NETDEV_TRAFFIC_STATISTICS_INFO_S, *LPNETDEV_TRAFFIC_STATISTICS_INFO_S;

/**
 * @struct tagstNETDEVOrgChnInfo
 * @brief 组织下通道信息
 * @attention
 */
typedef struct tagstNETDEVOrgChnInfo
{
    INT32 dwOrgID;                              /* 组织ID */
    INT32 dwChannelID;                          /* 通道ID */
    CHAR szChnName[NETDEV_NAME_MAX_LEN];        /* 通道名称 */
    INT32 dwChnIndex;                           /* 通道索引 */
    INT32 dwChnType;                            /* 通道类型 */
    INT32 dwChnStatus;                          /* 通道状态 */
    INT32 dwDevID;                              /* 设备ID */
    CHAR szDevName[NETDEV_NAME_MAX_LEN];        /* 设备名称 */
    BYTE  byRes[128];                           /* 保留字段   */
}NETDEV_ORG_CHN_INFO_S, *LPNETDEV_ORG_CHN_INFO_S;


/**
 * @struct tagstNETDEVOrgDetailInfo
 * @brief 组织详细信息
 * @attention
 */
typedef struct tagstNETDEVOrgDetailInfo
{    
    INT32 dwOrgID;                               /* 组织ID */
    INT32 dwParentID;                            /* 组织父节点ID */
    INT32 dwType;                                /* 类型 参见 NETDEV_ORG_TYPE_E */
    CHAR  szNodeName[NETDEV_NAME_MAX_LEN];       /* 节点名称 */
    CHAR  szDesc[NETDEV_DESCRIBE_MAX_LEN];       /* 备注 */
    UINT32 udwTime;                              /* 创建时间，UTC时间 */
    CHAR  szUserName[NETDEV_LEN_64];             /* 创建人 [1,64] */
    BYTE  byRes[60];                             /* 保留字段   */
}NETDEV_ORG_INFO_S, *LPNETDEV_ORG_INFO_S;


/**
* @struct tagNETDEVMemSize
* @brief 虚拟内存信息。
* @attention 无
*/
typedef struct tagNETDEVMemSize
{
    UINT32 udwDecodePayload;        /* 解码格式 NETDEV_MEM_PAYLOAD_E */
    UINT32 udwResolution;           /* 解码分辨率 NETDEV_MEM_RESOLUTION_E  */
    UINT32 udwMemSize;              /* 需要的资源大小 */
}NETDEV_MEM_SIZE_S, *LPNETDEV_MEM_SIZE_S;

/**
* @struct tagMallocInfo
* @brief 虚拟内存信息。
* @attention 无
*/
typedef struct tagNETDEVMemTable
{
    UINT32 udwSize;                                                     /* 资源表元素个数*/
    NETDEV_MEM_SIZE_S szVirtualMem[NETDEV_VIRTUAL_MEM_TABLE_MAX];       /* 资源表内存信息 */
}NETDEV_MEM_TABLE_S, *LPNETDEV_MEM_TABLE_S;

/**
 * @struct tagNETDEVTMSStrutPicInfo
 * @brief 结构化报文图片解析信息
 * @attention
 */
typedef struct tagNETDEVTMSStrutPicInfo
{
    UINT32  udwPicSize;         /* 图片大小 */
    CHAR    *pcPicData;         /* 图片数据 */
    BYTE bRes[256];             /* 保留字段 Reserved */
}NETDEV_TMS_STRUT_PIC_INFO_S,*LPNETDEV_TMS_STRUT_PIC_INFO_S;

/**
 * @struct tagstNETDEVStructCommonInfo
 * @brief 结构化公共信息部分
 * @attention
 */
typedef struct tagstNETDEVStructCommonInfo
{
    CHAR szPlaceCode[NETDEV_LEN_32];            /* 地点编号 */
    CHAR szPlaceName[NETDEV_LEN_128];           /* 地点名称 */
    CHAR szLaneDirection[NETDEV_LEN_32];        /* 车道行驶方向 */
    CHAR szDirection[NETDEV_LEN_32];            /* 方向编号 */
    CHAR szDirectionName[NETDEV_LEN_32];        /* 方向名称 */
    CHAR szDevID[NETDEV_LEN_32];                /* 设备编号 */
    CHAR szLaneID[NETDEV_LEN_32];               /* 车道编号 */
    CHAR szLaneType[NETDEV_LEN_32];             /* 车道类型 */
    CHAR szLaneDescription[NETDEV_LEN_128];     /* 车道描述 */
    BYTE bRes[128];                             /* 保留字段 Reserved */
}NETDEV_STRUCT_COMMON_INFO_S,*LPNETDEV_STRUCT_COMMON_INFO_S;

/**
 * @struct tagstNETDEVStructVeh
 * @brief 结构化车辆信息
 * @attention
 */
typedef struct tagstNETDEVStructVehInfo
{
    CHAR szAppearTime[NETDEV_LEN_32];           /* 机动车出现时间 */
    CHAR szDisAppearTime[NETDEV_LEN_32];        /* 机动车消失时间 */
    CHAR szRedLightStartTime[NETDEV_LEN_32];    /* 红灯开始时间 */
    CHAR szRedLightEndTime[NETDEV_LEN_32];      /* 红灯结束时间 */
    CHAR szRedLightTime[NETDEV_LEN_32];         /* 红灯时间 */
    CHAR szIdentifyTime[NETDEV_LEN_32];         /* 识别时间 */
    CHAR szCorrectTime[NETDEV_LEN_32];          /* 校对时间 */
    CHAR szLimitedSpeed[NETDEV_LEN_32];         /* 执法限速 */
    CHAR szMarkedSpeed[NETDEV_LEN_32];          /* 标识限速 */
    CHAR szVehicleSpeed[NETDEV_LEN_32];         /* 车辆速度 */
    CHAR szVehicleType[NETDEV_LEN_32];          /* 车辆类型 */
    CHAR szLogoAreaPosition[NETDEV_LEN_32];     /* 车标定位 */
    CHAR szVehicleColor[NETDEV_LEN_32];         /* 车身颜色 */
    CHAR szDriSunVisStat[NETDEV_LEN_32];        /* 正驾驶遮阳板状态 */
    CHAR szCodriSunVisStat[NETDEV_LEN_32];      /* 副驾驶遮阳板状态 */
    CHAR szDriSeatBeltStat[NETDEV_LEN_32];      /* 正驾驶安全带状态 */
    CHAR szCodriSeatBeltStat[NETDEV_LEN_32];    /* 副驾驶安全带状态 */
    CHAR szDriMobileStat[NETDEV_LEN_32];        /* 正驾驶开车打电话状态 */
    CHAR szYlwPlateMarkStat[NETDEV_LEN_32];     /* 黄标车标志状态 */
    CHAR szPendantStatus[NETDEV_LEN_32];        /* 挂坠状态 */
    CHAR szAimStatus[NETDEV_LEN_32];            /* 年检标状态 */
    CHAR szDangerGoodsMarkStat[NETDEV_LEN_32];  /* 危险品标志状态 */
    CHAR szLaneQueueLength[NETDEV_LEN_32];      /* 车道排队长度 */
    BYTE bRes[128];                             /* 保留字段 Reserved */
}NETDEV_STRUCT_VEH_INFO_S,*LPNETDEV_STRUCT_VEH_INFO_S;

/**
 * @struct tagstNETDEVStructNonVeh
 * @brief 结构化非车辆信息
 * @attention
 */
typedef struct tagstNETDEVStructNonVehInfo
{
    CHAR szAppearTime[NETDEV_LEN_32];       /* 非机动车出现时间 */
    CHAR szDisAppearTime[NETDEV_LEN_32];    /* 非机动车消失时间 */
    CHAR szDirectionType[NETDEV_LEN_32];    /* 非机动车运动方向 */
    CHAR szSpeed[NETDEV_LEN_32];            /* 非机动车运动速度 */
    BYTE bRes[128];                         /* 保留字段 Reserved */
}NETDEV_STRUCT_NON_VEH_INFO_S,*LPNETDEV_STRUCT_NON_VEH_INFO_S;

/**
 * @struct tagstNETDEVStructPerson
 * @brief 结构化人员信息
 * @attention
 */
typedef struct tagstNETDEVStructPersonInfo
{
    CHAR szAppearTime[NETDEV_LEN_32];           /* 人员出现时间 */
    CHAR szDisAppearTime[NETDEV_LEN_32];        /* 人员消失时间 */
    CHAR szMovingDirection[NETDEV_LEN_32];      /* 人员运动方向 */
    BYTE bRes[128];                             /* 保留字段 Reserved */
}NETDEV_STRUCT_PERSON_INFO_S,*LPNETDEV_STRUCT_PERSON_INFO_S;

/**
 * @struct tagstNETDEVStructFace
 * @brief 结构化人脸信息
 * @attention
 */
typedef struct tagstNETDEVStructFaceInfo
{
    CHAR szAppearTime[NETDEV_LEN_32];       /* 人脸出现时间 */
    CHAR szDisAppearTime[NETDEV_LEN_32];    /* 人脸消失时间 */
    BYTE bRes[128];                         /* 保留字段 Reserved */
}NETDEV_STRUCT_FACE_INFO_S,*LPNETDEV_STRUCT_FACE_INFO_S;

/**
 * @struct tagstNETDEVStructInfo
 * @brief 结构化XML信息
 * @attention
 */
typedef struct tagstNETDEVStructInfo
{
    NETDEV_STRUCT_COMMON_INFO_S stCommonInfo;           /* 公共信息 */
    UINT32 udwVehicleNum;                               /* 机动车数目 */
    LPNETDEV_STRUCT_VEH_INFO_S pstVehInfo;              /* 机动车信息 */
    UINT32 udwNonVehicleNum;                            /* 非机动车数目 */
    LPNETDEV_STRUCT_NON_VEH_INFO_S pstNonVehInfo;       /* 非机动车信息 */
    UINT32 udwPersonNum;                                /* 人员数目 */
    LPNETDEV_STRUCT_PERSON_INFO_S pstPersonInfo;        /* 人员信息 */
    UINT32 udwFaceNum;                                  /* 人脸数目 */
    LPNETDEV_STRUCT_FACE_INFO_S pstFaceInfo;            /* 人脸信息 */
    CHAR szIPAddr[NETDEV_IPV4_LEN_MAX];                 /* 设备IP地址 */
    BYTE bRes[112];                                     /* 保留字段 Reserved */
}NETDEV_STRUCT_INFO_S,*LPNETDEV_STRUCT_INFO_S;

/**
 * @struct tagNETDEVTMSStrutInfo
 * @brief 结构化报文数据消息
 * @attention
 */
typedef struct tagNETDEVTMSStrutInfo
{
    UINT32                             udwPicNum;                                   /* 图片个数 Picture Number */
    NETDEV_STRUCT_INFO_S               stTmsXmlInfo;                                /* XML信息 XML Information */
    NETDEV_TMS_STRUT_PIC_INFO_S        stTmsPicInfo[NETDEV_TMS_PIC_COMMON_NUM];     /* 图片信息 Picture Message */

}NETDEV_TMS_STRUT_INFO_S,*LPNETDEV_TMS_STRUT_INFO_S;

/**
 * @struct tagNETDEVTMSInterface 
 * @brief TMS信息（原始数据）
 * @attention
 */
typedef struct tagNETDEVTMSInterface
{
    NETDEV_TMS_CONNECT_INFO_S stTmsConnectInfo;         /* Socket缓存信息 */
    NETDEV_TMS_FACE_PARSE_INFO_S stTmsFaceParseInfo;    /* 人脸识别解析后信息 */
    NETDEV_TMS_HEAT_MAP_INFO_S stTmsHeatMapInfo;        /* 热度图信息 */
    NETDEV_TMS_CAR_PLATE_INFO_S stTmsCarPlateInfo;      /* 车牌识别 */
    NETDEV_TMS_STRUT_INFO_S     stTmsStrutInfo;         /* 结构化信息 */
    CHAR        szIPAddr[NETDEV_IPV4_LEN_MAX];          /* 设备IP地址 */
    BYTE     bRes[240];                                 /* 保留字段 Reserved */
}NETDEV_TMS_INTERFACE_S, *LPNETDEV_TMS_INTERFACE_S;

/**
* @struct tagNETDEVBaseFindCond
* @brief 查找录像基本信息 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVBaseFindCond
{
    INT32   dwChannelID;    /* 通道号  Channel number */
    INT64   tBeginTime;     /* 起始时间  Start time */
    INT64   tEndTime;       /* 结束时间  End time */
    INT32   dwStreamType;   /* 流类型 参见枚举#NETDEV_STREAM_TYPE_E*/
    BYTE    byRes[32];      /* 保留字段  Reserved */
}NETDEV_BASE_FIND_COND_S, *LPNETDEV_BASE_FIND_COND_S;

/**
* @struct tagNETDEVEventFindCond
* @brief 事件查找录像 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVEventFindCond
{
    INT32   dwFindLogic;                                        /* 查找录像类型逻辑 参见枚举#NETDEV_EVENT_FIND_LOGIC_E */
    INT32   dwEventFileTypeSize;                                /* 查找类型个数 */
    INT32   adwEventFileType[NETDEV_EVENT_STORE_TYPE_NUM];      /* 智能查找类型,参见枚举#NETDEV_EVENT_STORE_TYPE_E */
    NETDEV_BASE_FIND_COND_S stBaseCond;                         /* 查询需要基本信息 */
    INT32   dwStreamType;                                       /* 流类型 参见枚举#NETDEV_STREAM_TYPE_E*/
    BYTE    byRes[128];                                         /* 保留字段  Reserved */
}NETDEV_EVENT_FIND_COND_S, *LPNETDEV_EVENT_FIND_COND_S;

/**
* @struct tagNETDEVSmartFindCond
* @brief 智能查找录像 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVSmartFindCond
{
    INT32   dwSensitivity;                                                      /* 灵敏度,取值范围1-8 */
    NETDEV_BASE_FIND_COND_S stBaseCond;                                         /* 查询需要基本信息 */
    UCHAR   awSmartBlock[NETDEV_SCREEN_INFO_ROW][NETDEV_SCREEN_INFO_COLUMN];    /* 智能查找块属性,选中填1,不选填0  */
    BYTE    byRes[124];                                                         /* 保留字段  Reserved */
}NETDEV_SMART_FIND_COND_S, *LPNETDEV_SMART_FIND_COND_S;

/**
* @struct tagNETDEVSmartEventFindCond
* @brief 事件查找录像 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVSmartEventFindCond
{
    INT32   dwColumn;                                                           /* 行 */
    INT32   dwRow;                                                              /* 列 */
    INT32   dwSensitivity;                                                      /* 灵敏度  */
    UCHAR   awSmartBlock[NETDEV_SCREEN_INFO_ROW][NETDEV_SCREEN_INFO_COLUMN];    /* 智能查找块属性,选中填1,不选填0 */
    INT32   dwFindLogic;                                                        /* 查找录像类型逻辑 参见枚举#NETDEV_EVENT_FIND_LOGIC_E */
    INT32   dwEventFileTypeSize;                                                /* 查找类型个数 */
    INT32   adwEventFileType[NETDEV_EVENT_STORE_TYPE_NUM];                      /* 智能查找类型,参见枚举#NETDEV_EVENT_STORE_TYPE_E */
    NETDEV_BASE_FIND_COND_S stBaseCond;                                         /* 查询需要基本信息 */
    BYTE    byRes[128];                                                         /* 保留字段  Reserved */
}NETDEV_SMART_EVENT_FIND_COND_S, *LPNETDEV_SMART_EVENT_FIND_COND_S;

/**
 * @struct tagNETDEVEventFindData
 * @brief 事件查找数据 结构体定义 
 *        逐个获取查找到的文件信息 
 * @attention 无 None
 */
typedef struct tagNETDEVEventFindData
{
    INT32   dwEventFileTypeSize;                                /* 包含类型个数 */
    INT32   adwEventFileType[NETDEV_EVENT_STORE_TYPE_NUM];      /* 事件查找类型,参见枚举#NETDEV_EVENT_STORE_TYPE_E */
    INT64   tBeginTime;                                         /* 起始时间  Start time */
    INT64   tEndTime;                                           /* 结束时间  End time */
    CHAR    szFileName[NETDEV_LEN_64];                          /* 文件名称 */
    UINT32  udwFileSize;                                        /* 文件大小 */
    BYTE    byRes[124];                                         /* 保留字段  Reserved */
}NETDEV_EVENT_FIND_DATA_S,*LPNETDEV_EVENT_FIND_DATA_S;



/**
* @struct tagNETDEVQueryPageInfo
* @brief 分页请求信息 结构体定义
* @attention
* 分页查询中每页的条目数, 不能为0, 也不能大于#NETDEV_PAGE_QUERY_ROW_MAX_NUM
*/
typedef struct tagNETDEVQueryPageInfo
{
    INT32   dwPageRowNum;           /* 分页查询中每页的条目数 */
    INT32   dwPageCnt;              /* 表示第几页 */
}NETDEV_QUERY_PAGE_INFO_S;

/**
* @struct tagNETDEVQueryPageInfo
* @brief 分页响应信息 结构体定义
* @attention 无
*/
typedef struct tagNETDEVRspPageInfo
{
    INT32   dwRowNum;           /* 实际返回的条目数 */
    INT32   dwTotalRowNum;      /* 符合条件的总条目数 */
}NETDEV_RSP_PAGE_INFO_S;


/**
* @struct tagNETDEVPortMappingInfo
* @brief 映射端口信息 结构体定义
* @attention
* 保留字段,置为0
*/
typedef struct tagNETDEVPortMappingInfo
{
    INT32   dwHttpLocal;                /* 映射前的HTTP端口 */
    INT32   dwHttpNat;                  /* 映射后的HTTP端口 */
    INT32   dwSdkLocal;                 /* 映射前的SDK端口 */
    INT32   dwSdkNat;                   /* 映射后的SDK端口 */
    INT32   dwMediaLocal;               /* 映射前的Media端口 */
    INT32   dwMediaNat;                 /* 映射后的Media端口 */
    INT32   dwRTSPLocal;                /* 映射前的RTSP端口 */
    INT32   dwRTSPNat;                  /* 映射后的RTSP端口 */

    INT32   dwRes[8];                   /* 保留字段 */
}NETDEV_PORT_MAPPING_INFO_S, *LPNETDEV_PORT_MAPPING_INFO_S;

/**
* @struct tagNETDEVStreamInfo
* @brief 流ID信息 结构体定义
* @attention
* 流ID,置0
*/
typedef struct tagNETDEVStreamInfo
{
    INT32   dwChannelID;                    /* 关联的设备通道 */
    INT32   dwSize;                         /* 结构体大小 */
    BYTE    byID[NETDEV_STREAM_ID_LEN];     /* 流ID */
    BYTE    byRes[NETDEV_LEN_32];           /* 保留字段 */
}NETDEV_STREAM_INFO_S,*LPNETDEV_STREAM_INFO_S;

/**
* @struct tagNETDEVParseVideoData
* @brief 媒体流数据扩展信息 结构体定义
*        拼帧前媒体流扩展信息
* @attention 无
*/
typedef struct tagNETDEVSourceDataExInfo
{
    BYTE szDecoderTag[NETDEV_CODE_STR_MAX_LEN];         /* 解码器标签 */
    BYTE szReserved[64];                                /* 保留字段 */
}NETDEV_SOURCE_DATA_EX_INFO_S;

/**
* @struct tagNETDEVSdkAblity
* @brief 当前SDK的功能信息 结构体定义
* @attention
* 保留字段置为0.
*/
typedef struct tagNETDEVSdkAblity
{
    INT32   dwMaxLoginNum;              /* 最大注册用户数 */
    INT32   dwMaxRealPlayNum;           /* 最大实时预览的路数 */
    INT32   dwMaxPlayBackNum;           /* 最大回放或下载的路数 */
    INT32   dwMaxAlarmChanNum;          /* 最大建立报警通道的路数 */
    INT32   dwMaxFormatNum;             /* 最大硬盘格式化的路数 */
    INT32   dwMaxFileSearchNum;         /* 最大文件搜索的路数 */
    INT32   dwMaxLogSearchNum;          /* 最大日志搜索的路数 */
    INT32   dwMaxSerialNum;             /* 最大建立透明通道的路数 */
    INT32   dwMaxUpgradeNum;            /* 最大升级的路数 */
    INT32   dwMaxVoiceComNum;           /* 最大语音转发的路数 */
    INT32   dwMaxBroadCastNum;          /* 最大语音广播的路数 */
    INT32   dwRes[10];                  /* 保留字段 */
}NETDEV_SDKABILITY_S,*LPNETDEV_SDKABILITY_S;

/**
* @struct tagNETDEVSdkState
* @brief 当前SDK的状态信息 结构体定义
* @attention
* 保留字段置为0.
*/
typedef struct tagNETDEVSdkState
{
    INT32   dwTotalLoginNum;                /* 当前注册的用户数 */
    INT32   dwTotalRealPlayNum;             /* 当前实时预览的路数 */
    INT32   dwTotalPlayBackNum;             /* 当前回放或下载的路数 */
    INT32   dwTotalAlarmChanNum;            /* 当前建立报警通道的路数 */
    INT32   dwTotalFormatNum;               /* 当前硬盘格式化的路数 */
    INT32   dwTotalFileSearchNum;           /* 当前文件搜索的路数 */
    INT32   dwTotalLogSearchNum;            /* 当前日志搜索的路数 */
    INT32   dwTotalSerialNum;               /* 当前建立透明通道的路数 */
    INT32   dwTotalUpgradeNum;              /* 当前升级的路数 */
    INT32   dwTotalVoiceComNum;             /* 当前语音转发的路数 */
    INT32   dwTotalBroadCastNum;            /* 当前语音广播的路数 */
    INT32   dwRes[10];                      /* 保留字段 */
}NETDEV_SDKSTATE_S,*LPNETDEV_SDKSTATE_S;

/**
* @struct tagPrivacyMaskPara
* @brief 隐私遮能力集 Privacy mask capabilities
* @attention
*/
typedef struct tagPrivacyMaskAbility
{
    INT32 dwSupportCnt;             /* 支持的遮盖区域数量 Number of supported privacy mask areas */
}NETDEV_PRIVACY_MASK_ABILITY_S, *LPNETDEV_PRIVACY_MASK_ABILITY_S;


/* 通道OSD能力集 */
typedef struct tagNETDEVOsdAbilityInfo
{
    INT32   bIsSupportTimeOSD;          /* 是否支持时间 */
    INT32   bIsSupportNameOSD;          /* 是否支持名称 */
    UINT32  u32OSDMaxNum;               /* 支持的最大OSD个数 */
    UINT32  u32NameMLen;                /* 支持最大的字符长度 */
    UINT32  u32TimeOSDFormat;           /* 时间OSD格式 参见NETDEV_OSD_TIME_FORMAT_CAP_E */
    UINT32  u32DateOSDFormat;           /* 日期OSD格式 参见NETDEV_OSD_DATE_FORMAT_CAP_E */
    BYTE    byRes[32];                  /* 保留字段 */
}NETDEV_VIDEO_OSD_ABILITY_S, *LPNETDEV_VIDEO_OSD_ABILITY_S;

/**
* @struct tagNETDEVVideoOutChlprofiles
* @brief VideoOut单通道能力集
* @attention 无None
*/
typedef struct tagNETDEVVideoOutChlprofiles
{
    INT32   dwDefaultPane;                              /* 默认分屏数*/
    INT32   dwSupportedMaxPane;                         /* 最大分屏数*/
    INT32   adwSupportedPane[NETDEV_LEN_32];            /* 支持的分屏数,参见#NETDEV_PANE_NUM_E */
    INT32   dwDefaultVideoFormat;                       /* 默认分辨率*/
    INT32   dwSupportedPaneNum;                         /* 支持的分辨率个数 */
    INT32   adwSupportedVideoFormat[NETDEV_LEN_32];     /* 支持的分辨率,参见#NETDEV_VIDEO_FORMAT_E */
}NETDEV_VIDEOOUT_CHL_PROFILES_S, *LPNETDEV_VIDEOOUT_CHL_PROFILES_S;

/**
* @struct tagNETDEVVideoOutALLprofiles
* @brief VideoOut所有通道能力集
* @attention 无None
*/
typedef struct tagNETDEVVideoOutALLprofiles
{
    INT32 dwChlNum;                                     /* 通道数 */
    LPNETDEV_VIDEOOUT_CHL_PROFILES_S pstDCProfiles;     /* 通道能力集 */
}NETDEV_VIDEOOUT_ALL_PROFILES_S, *LPNETDEV_VIDEOOUT_ALL_PROFILES_S;

/**
* @struct tagNETDEVPriviewTVWallInfo
* @brief 实况解码上墙参数
* @attention 无 None
*/
typedef struct tagNETDEVPriviewTVWallInfo
{
    UINT16  dwChannelID;                /* 通道ID  Channel ID */
    UINT16  dwPaneIndex;                /* 窗口索引(从1开始) */
    INT32   dwStreamType;               /* 流类型,#参见NETDEV_STREAM_TYPE_E */
    CHAR    szUrl[NETDEV_LEN_260];      /* 实况Url */
    INT32   dwTransProto;               /* 传输协议,#参见NETDEV_TRANSPORT_PROTOCOL_E */
    BYTE    byRes[256];                 /* 保留字段  Reserved */
}NETDEV_PREVIEW_TVWALLINFO_S, *LPNETDEV_PREVIEW_TVWALLINFO_S;


/**
 * @struct tagNETDEVReceiverInfo
 * @brief 上墙业务信息
 * @attention 无
 */
typedef struct tagNETDEVReceiverInfo
{
    UINT16 dwPaneIndex;             /* receiver对应的分屏索引(从1开始) */
    INT32 dwReceiverMode;           /* receiver配置信息 */
    INT32 dwStreamType;             /* 流类型 */
    INT32 dwTransportProtocol;      /* 传输协议 */
    CHAR  szUrl[NETDEV_LEN_260];    /* 实况或回放url */
    BYTE  byRes[64];                /* 保留字段 */
}NETDEV_RECEIVER_INFO_S, *LPNETDEV_RECEIVER_INFO_S;

/**
 * @struct tagNETDEVReceiverInfoList
 * @brief 某一通道ID下所有业务信息
 * @attention 无
 */
typedef struct tagNETDEVReceiverInfoList
{
    INT32                   dwSize;                                         /* 业务信息数量 */
    NETDEV_RECEIVER_INFO_S  astReceiverInfoList[NETDEV_MAX_PANE_NUM];       /* 所有业务信息 */
}NETDEV_RECEIVER_INFO_LIST_S, *LPNETDEV_RECEIVER_INFO_LIST_S;


/**
 * @struct tagNETDEVDevLoginParamInfo
 * @brief 设备登陆成功后的基本信息 结构体定义 Device information Structure definition
 * @attention 无 None   用于获取设备登陆成功后一些基本参数，例如网络连接模式
 */
typedef struct tagNETDEVDevLoginParamInfo
{
    NETDEV_NETWORK_MODE_E   eNetWorkMode;   /* 网络模式,参见枚举#NETDEV_NETWORK_MODE_E */
    BYTE                    byRes[48];      /* 保留字段  Reserved */
}NETDEV_DEV_LOGIN_PARAM_INFO_S,*LPNETDEV_DEV_LOGIN_PARAM_INFO_S;


/**
 * @struct tagNETDEVChlOsdCfg
 * @brief 通道OSD配置
 * @attention
 */
typedef struct tagNETDEVChlOsdCfg
{
    INT32 dwOsdID;                                      /* OSD ID */
    NETDEV_OSD_TEXT_TYPE_E enOsdTextType;               /* OSD类型 */
    NETDEV_AREA_SCOPE_S stAreaScope;                    /* OSD坐标 */
    CHAR szTextInfo[NETDEV_OSD_TEXT_MAX_LEN];           /* OSD内容 */
}NETDEV_CHL_OSD_CFG_S, *LPNETDEV_CHL_OSD_CFG_S;

/**
 * @struct tagNETDEVChlOsdCfgList
 * @brief 通道OSD配置列表
 * @attention
 */
typedef struct tagNETDEVChlOsdCfgList
{
    INT32 dwSize;                                               /* OSD个数 */
    NETDEV_CHL_OSD_CFG_S stChlOsdCfg[NETDEV_OSD_MAX_NUM_EX];    /* OSD配置 */
}NETDEV_CHL_OSD_CFG_LIST_S, *LPNETDEV_CHL_OSD_CFG_LIST_S;

/**
 * @struct tagNETDEVNetworkInfo
 * @brief 网络信息
 * @attention 无 None
 */
typedef struct tagNETDEVNetworkInfo
{
    CHAR    szIPAddress[NETDEV_LEN_32];         /* IP地址  */
    INT32   dwHttpPort;                         /* Http端口 */
    INT32   dwRtspPort;                         /* Rtsp端口 */

}NETDEV_NETWORKINFO_S, *LPNETDEV_NETWORKINFO_S;

 /**
 * @struct tagNETDEVNetworkPortsInfo
 * @brief 端口信息
 * @attention 无 None
 */
typedef struct tagNETDEVNetworkPortsInfo
{
    UINT32   udwHttpPort;                         /* Http端口 */
    UINT32   udwHttpsPort;                        /* Https端口 */
    UINT32   udwRtspPort;                         /* Rtsp端口 */

    BYTE    byRes[64];              /* 保留字段  Reserved field */
}NETDEV_NETWORK_PORTS_INFO_S, *LPNETDEV_NETWORK_PORTS_INFO_S;

/**
 * @struct tagstNETDEVBandWith
 * @brief 网络带宽状态
 * @attention 
 */
typedef struct tagstNETDEVBandWith
{
    UINT32 udwTotal;                /*总带宽*/
    UINT32 udwLive;                 /*实况占用带宽*/
    UINT32 udwReplayAndDown;        /*回放/下载占用带宽*/
    UINT32 udwResidual;             /*剩余带宽*/
}NETDEV_NETWORK_BANDWIDTH_S, *LPNETDEV_NETWORK_BANDWIDTH_S;

/**
* @struct tagsNETDEVStreamNum
* @brief 流路数
* @attention
*/
typedef struct tagNETDEVStreamNum
{
    INT32   dwCurrent;              /* 实况流路数,即已用路数 */
    INT32   dwTotal;                /* 总路数 */
}NETDEV_STREAM_NUM_S, *LPNETDEV_STREAM_NUM_S;

/**
 * @struct tagstNETDEVBandWithInfo
 * @brief 网络带宽状态数据
 * @attention 
 */
typedef struct tagstNETDEVBandWithInfo
{
    NETDEV_NETWORK_BANDWIDTH_S stInputBandWidth;
    NETDEV_NETWORK_BANDWIDTH_S stOutputBandWidth;
    NETDEV_STREAM_NUM_S stStreamNum;
}NETDEV_NETWORK_BANDWIDTH_INFO_S, *LPNETDEV_NETWORK_BANDWIDTH_INFO_S;


/**
 * @struct tagstNETDEVOperateInfo
 * @brief 单个操作信息
 * @attention dwID为入参，dwReturnCode为出参
 */
typedef struct tagNETDEVOperateInfo
{
    INT32   dwID;                   /* ID */
    INT32   dwReturnCode;           /* 返回码*/
    BYTE    byRes[64];              /* 保留字段  Reserved field */
}NETDEV_OPERATE_INFO_S, *LPNETDEV_OPERATE_INFO_S;

/**
 * @struct tagstNETDEVOperateList
 * @brief 批量处理列表
 * @attention
 */
typedef struct tagNETDEVOperateList
{
    INT32   dwSize;                                 /* 批量处理数量 */
    LPNETDEV_OPERATE_INFO_S   pstOperateInfo;       /* 批量处理信息 */
}NETDEV_OPERATE_LIST_S, *LPNETDEV_OPERATE_LIST_S;


/**
* @struct tagNETDEVTrafficStatisticsCondEx
* @brief 多通道客流量统计命令 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVMultiTrafficStatisticsCond
{
    NETDEV_OPERATE_LIST_S   stChannelIDs;               /* 通道ID列表 */
    UINT32                  udwStatisticsType;          /* 参见 NETDEV_TRAFFIC_STATISTICS_TYPE_E */
    UINT32                  udwFormType;                /* 参见 NETDEV_TRAFFIC_STATIC_FORM_TYPE_E */
    INT64                   tBeginTime;                 /* 起始时间 */
    INT64                   tEndTime;                   /* 结束时间 */
    BYTE                    byRes[256];
}NETDEV_MULTI_TRAFFIC_STATISTICS_COND_S, *LPNETDEV_MULTI_TRAFFIC_STATISTICS_COND_S;

/**
* @struct tagNETDEVFaceDetectionCapInfo
* @brief 人脸检测能力 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVFaceDetectionCapInfo 
{
    BOOL bIsSupport;                                                    /* 是否支持Smart人脸检测 */
    BOOL bQualityAnalysisIsSupport;                                     /* 是否具有人脸质量优先（上报图片）能力 */
    INT32 dwFaceQualityAnalysisType;                                    /* 人脸质量优先类型, 参考枚举NETDEV_FACE_ANALYSIS_SKILL_E */
    BOOL bAttributeAnalysisIsSupport;                                   /* 设备具备是否具有人脸属性分析（上报）能力 */
    INT32 adwAttributeAnalysisSkills[NETDEV_FACE_ANALYSIS_SKILL_NUM];   /* 设备的人脸分析能力，参考枚举 当为“0”时，该对象可以不存在 */
    BOOL bFeatureIsSupport;                                             /* 设备是否具有人脸二进制特征提取（上报）能力 */
    BOOL bRecognitionIsSupport;                                         /* 设备是否具有人脸识别能力 */
    INT32 dwFaceRecognitionType;                                        /*人脸识别类型, 参考枚举NETDEV_FACE_RECOGNITION_TYPE_E */
    BOOL bPersonSnapshotSupport;                                        /* 设备具备是否具有人体抓拍（上报）能力 0: 不支持该能力 1: 支持该能力 */
    BYTE byRes[256];                                                    /* 保留字节 */
}NETDEV_FACE_DETEC_CAP_S, *LPNETDEV_FACE_DETEC_CAP_S;

/**
* @struct tagNETDEVIntrusionDetectionCapInfo
* @brief 区域入侵能力 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVIntrusionDetectionCapInfo 
{
    BOOL bIsSupport;                        /* 是否支持区域入侵 */
    INT32 dwPecentMin;                      /* 区域入侵中，图形占比(Percentages)最小值, 不支持区域入侵时，该字段可选 */
    INT32 dwPecentMax;                      /* 区域入侵中，图形占比(Percentages)最大值, 不支持区域入侵时，该字段可选 */
    INT32 dwTimeThresholdMin;               /* 区域入侵中，时间阈值(TimeThreshold)最小值, 不支持区域入侵时，该字段可选 */
    INT32 dwTimeThresholdMax;               /* 区域入侵中，时间阈值(TimeThreshold)最大值, 不支持区域入侵时，该字段可选 */
    BYTE bRes[32];                          /* 保留字段 */
}NETDEV_INTRUSION_DETEC_CAP_S, *LPNETDEV_INTRUSION_DETEC_CAP_S;

/**
* @struct tagNETDEVCrossLineDetectionCapInfo
* @brief 越界检测能力 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVCrossLineDetectionCapInfo
{
    BOOL bIsSupport;                /* 是否支持越界检测 */
    BYTE bRes[32];                  /* 保留字段 */
}NETDEV_CROSS_LINE_DETEC_CAP_S, *LPNETDEV_CROSS_LINE_DETEC_CAP_S;

/**
* @struct tagNETDEVPassengerFlowCapInfo
* @brief 客流量检测能力 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVPassengerFlowCapInfo
{
    BOOL bIsSupport;                /* 是否支持客流量检测 */
    BYTE bRes[32];                  /* 保留字段 */
}NETDEV_PASSENGER_FLOW_CAP_S, *LPNETDEV_PASSENGER_FLOW_CAP_S;


/**
* @struct tagNETDEVAudioDetectionCapInfo
* @brief 音频检测能力 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVAudioDetectionCapInfo
{
    BOOL bIsSupport;    /* 是否支持音频检测 */
    INT32 dwDiffMin;    /* 音频检测中，差值/阈值的最小值, 不支持音频检测时，该字段可选 */
    INT32 dwDiffMax;    /* 音频检测中，差值/阈值的最大值, 不支持音频检测时，该字段可选  */
}NETDEV_AUDIO_DETEC_CAP_S, *LPNETDEV_AUDIO_DETEC_CAP_S;

/**
* @struct tagNETDEVObjTrackCapInfo
* @brief 智能跟踪能力 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVObjTrackCapInfo
{
    BOOL bIsSupport;                                /* 是否支持智能跟踪 */
    INT32 adwMode[NETDEV_OBJ_TRACK_MODE_NUM];       /* 跟踪模式,参考枚举NETDEV_OBJ_TRACK_MODE_E，支持智能跟踪时可选 */
    INT32 dwTrackTimeMin;                           /* 最小跟踪时间（单位：s），跟踪模式包含NETDEV_OBJ_TRACK_MODE_FULLVIEW时可选 */
    INT32 dwTrackTimeMax;                           /* 最大跟踪时间（单位：s），跟踪模式包含NETDEV_OBJ_TRACK_MODE_FULLVIEW时可选 */
}NETDEV_OBJ_TRACK_CAP_S, *LPNETDEV_OBJ_TRACK_CAP_S;

/**
* @struct tagNETDEVMixDetectionCapInfo
* @brief 混行检测能力
* @attention 无 None
*/
typedef struct tagNETDEVMixDetectionCapInfo
{
    BOOL bIsSupported;                               /* 是否支持混行检测 0: 不支持 1: 支持 */
    BYTE bRes[128];                                  /* 保留字段 */
}NETDEV_MIX_DETECTION_INFO_S,*LPNETDEV_MIX_DETECTION_INFO_S;

/**
* @struct tagNETDEVMasterSlaveLinkCapInfo
* @brief 支持主从联动模式
* @attention 无 None
*/
typedef struct tagNETDEVMasterSlaveLinkCapInfo
{
    UINT32 udwSupportMode;                          /* 支持主从联动模式 详见 NETDEV_MASTER_SLAVE_LINKAGE_E*/
    BYTE bRes[32];                                  /* 保留字段 */
}NETDEV_MASTER_SLAVE_LINK_CAP_S,*LPNETDEV_MASTER_SLAVE_LINK_CAP_S;

/**
* @struct tagNETDEVObjAttrOverlayCapInfo
* @brief 属性信息叠加能力
* @attention 无 None
*/
typedef struct tagNETDEVObjAttrOverlayCap
{
    BOOL bSupportAttrOverlay;                       /* 是否支持属性信息叠加：FALSE:不支持，TRUE:支持 */
    BYTE bRes[32];                                  /* 保留字段 */
}NETDEV_OBJ_ATTR_OVERLAY_CAP_S,*LPNETDEV_OBJ_ATTR_OVERLAY_CAP_S;

/**
* @struct tagNETDEVSmartCapInfo
* @brief smart智能能力 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVSmartCapInfo
{
    NETDEV_FACE_DETEC_CAP_S         stFaceDetecCap;                 /* 人脸检测能力 */
    NETDEV_INTRUSION_DETEC_CAP_S    stIntrusionDetecCap;            /* 区域入侵能力 */
    NETDEV_CROSS_LINE_DETEC_CAP_S   stCrossLineDetecCap;            /* 越界检测能力 */
    NETDEV_PASSENGER_FLOW_CAP_S     stPassengerFlowCap;             /* 客流量检测能力 */
    NETDEV_AUDIO_DETEC_CAP_S        stAudioDetecCap;                /* 音频检测能力 */
    NETDEV_OBJ_TRACK_CAP_S          stObjTrackCap;                  /* 智能跟踪能力 */
    NETDEV_MIX_DETECTION_INFO_S     stMixDetectionCap;              /* 混行检测能力 */
    NETDEV_MASTER_SLAVE_LINK_CAP_S  stMasterSlaveCap;               /* 主从联动能力 */
    NETDEV_OBJ_ATTR_OVERLAY_CAP_S   stObjAttrOverlayCap;            /* 属性信息叠加能力 */
    BYTE byRes[476];                                                /* 保留字段 */
}NETDEV_SMART_CAP_S, *LPNETDEV_SMART_CAP_S;

/**
* @struct tagNETDEVTrafficStatisticsReportTime
* @brief 设置客流量上报时间间隔结构体
* @attention 无 None
*/
typedef struct tagNETDEVTrafficStatisticsReportTime
{
    UINT32  udwReportTimeInterval;      /*时间间隔 单位秒*/
    BOOL    bEnable;                    /*使能*/
}NETDEV_TRAFFIC_STATISTICS_REPORT_TIME_S, *LPNETDEV_TRAFFIC_STATISTICS_REPORT_TIME_S;

/**
 * @struct tagNETDEVChlDeviceInfo
 * @brief 设备通道基本信息 结构体定义 Basic device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVChlDeviceInfo
{
    INT32 dwChannelID;                                  /* 通道号 */
    CHAR szDevModel[NETDEV_LEN_64];                     /* 设备型号  Device model */
    CHAR szSerialNum[NETDEV_LEN_64];                    /* 硬件序列号  Hardware serial number */
    CHAR szFirmwareVersion[NETDEV_LEN_64];              /* 软件版本号  Software version */
    CHAR szHardewareID[NETDEV_LEN_64];                  /* 硬件标识 */
    CHAR szUbootVersion[NETDEV_LEN_64];                 /* UBOOT引导版本 */
    BYTE byRes[512];                                    /* 保留字  Reserved */
}NETDEV_DEVICE_CHL_INFO_S, *LPNETDEV_DEVICE_CHL_INFO_S;


/**
 * @struct tagNETDEVNewVersionDateInfo
 * @brief 新版本发布时间 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVNewVersionDateInfo
{
    UINT32 udwYear;         /* 年  Year */
    UINT32 udwMonth;        /* 月  Month */
    UINT32 udwDay;          /* 日  Day */
    UINT32 udwHour;         /* 时  Hour */
    UINT32 udwMinute;       /* 分  Minute */
    BYTE   byRes[64];       /* 保留字段 */
}NETDEV_NEW_VERSION_DATE_INFO_S, *LPNETDEV_NEW_VERSION_DATE_INFO_S;


/**
 * @struct tagNETDEVUpgradeInfo
 * @brief 设备升级版本信息 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVUpgradeInfo
{
    BOOL                            bHasNewVersion;                             /* 是否存在新版本 0:没有新版本 1:有新版本*/
    CHAR                            szNewFirmwareVersion[NETDEV_LEN_64];        /* 新的软件版本号 当bHasNewVersion为0时，该节点可选*/
    UINT32                          udwID;                                      /* ID为0，默认设备自身*/
    NETDEV_NEW_VERSION_DATE_INFO_S  stNewVersionDateInfo;                       /* 新版本的发布时间，当HasNewVersion为0时，该节点可选（NVR需要）具体见#NETDEV_NEW_VERSION_DATE_INFO_S*/
    CHAR                            szVersionDescription[NETDEV_LEN_1024];      /* 版本描述*/
    BYTE                            byRes[256];                                 /* 保留字段 */
}NETDEV_UPGRADE_INFO_S, *LPNETDEV_UPGRADE_INFO_S;

/**
 * @struct tagNETDEVUpgradeDevice
 * @brief 升级设备所需信息 结构体定义 Basic device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVUpgradeDevice
{
    INT32 dwUpgradeType;                    /* 升级类型 参考枚举#NETDEV_UPGRADE_TYPE_E */
    INT32 dwSize;                           /* 需升级通道个数 ,为0时默认给NVR自身升级 */
    INT32 adwChannelID[NETDEV_CHANNEL_MAX]; /* 需升级的通道 */
    CHAR  szPath[NETDEV_PATH_LEN];          /* 升级文件所在路径 */
    BYTE  byRes[256];                       /* 保留字  Reserved */
}NETDEV_UPGRADE_DEVICE_S, *LPNETDEV_UPGRADE_DEVICE_S;

/**
 * @struct tagNETDEVUpgradeStatus
 * @brief 升级设备状态信息 结构体定义 Basic device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVUpgradeStatus
{
    INT32 dwStatus;             /* 升级状态,参考枚举#NETDEV_UPGRADE_STATUS_E */
    INT32 dwPercent;            /* 百分比 */
    INT32 dwChannelID;          /* 通道号 */
    BYTE  byRes[256];           /* 保留字段 */
}NETDEV_UPGRADE_STATUS_S, *LPNETDEV_UPGRADE_STATUS_S;

/**
* @enum tagNETDEVAddChnType
* @brief 添加类型 枚举定义
* @attention 无 None
*/
typedef enum tagNETDEVAddChnType
{
    NETDEV_ADDCHN_ADDR_TYPE_IP                   = 0,           /* IP */
    NETDEV_ADDCHN_ADDR_TYPE_PLUG_PLAY            = 1,           /* 即插即用 */
    NETDEV_ADDCHN_ADDR_TYPE_EZDDNS               = 2,           /* EZDDNS */
    NETDEV_ADDCHN_ADDR_TYPE_DOMAIN_NAME          = 3,           /* 通用域名 */

    NETDEV_ADDCHN_ADDR_TYPE_INVALID           = 0xFF         /* 无效值  Invalid value */
}NETDEV_ADDCHN_ADD_TYPE_E;

/**
 * @struct tagNETDEVChannelsBasicInfo
 * @brief 通道基本信息
 * @attention 无 None
 */
typedef struct tagNETDEVChannelsBasicInfo
{
    UINT32                      udwAddType;                                     /* 添加类型, 参见枚举 NETDEV_ADDCHN_ADD_TYPE_E */
    UINT32                      udwAddressType;                                 /* IP地址类型, 域名.当udwAddType为2或3时, 此处必填2.参见枚举 NETDEV_HOSTTYPE_E */
    CHAR                        szAddress[NETDEV_IPADDR_STR_MAX_LEN];           /* IP地址, 范围[0,64]*/
    CHAR                        szDDNSAdress[NETDEV_DOMAIN_LEN];                /* DDNS服务器地址, 范围[0,64], 当udwAddType为2时, 该选项必选. */
    UINT32                      udwPort;                                        /* 端口号,范围[1, 65535]当udwAddType为0和3时, 该选项必选*/ 
    CHAR                        szLoginName[NETDEV_NAME_MAX_LEN];               /* 接入设备的登录用户名, 范围[0,20]*/
    CHAR                        szPIN[NETDEV_LEN_256];                          /* 接入设备的登录密码, 如果在配置时, 该密码没有修改, 可以不下发该字段; 如果配置时, 该密码为空, 则下发空字段*/
    UINT32                      udwAccessProtocol;                              /* 接入协议, 参见枚举 1-ONVIF, 2-私有, 3-国标, [100-131]-自定义协议 */
    UINT16                      udwNum;                                         /* 被接入设备的通道数, 范围[0, 16] */
    UINT32                      audwRemoteIndexList[NETDEV_CHANNEL_MAX];        /* 被接入设备的通道号列表, Num为0时此节点可选 */
    UINT32                      udwRemoteIndex;                                 /* 多通道接入设备的通道号(仅修改信息时使用)*/ 
    NETDEV_GBINFO_S             stGBInfo;                                       /* 国标信息 当udwAccessProtocol值为3时该节点必选, 其他可选*/
    UINT32                      udwIsPTZNeeded;                                 /* 是否需要云台: 0-自适应, 1-不需要, 2-需要 */
    BOOL                        bLongHaulEnabled;                               /* 长距离传输使能：0: 不使能; 1: 使能; 当udwAddType值为1时, 此节点必选(仅修改信息时使用)*/
    BYTE                        byRes[256];                                     /* 保留字节 */
}NETDEV_CHANNEL_BASIC_INFO_S, *LPNETDEV_CHANNEL_BASIC_INFO_S;

/**
 * @struct tagNETDEVChannelsInfos
 * @brief 通道信息
 * @attention 无 None
 */
typedef struct tagNETDEVChannelsInfos
{
    UINT32   udwNum;                                    /* 接入的通道数, 不为0*/
    UINT32   audwChannelList[NETDEV_CHANNEL_MAX];       /* 接入的通道号列表*/
    BYTE     byRes[128];                                /* 保留字节 */
}NETDEV_CHANNEL_LIST_S, *LPNETDEV_CHANNEL_LIST_S;

/**
 * @struct tagNETDEVAudioDecodeStatus
 * @brief 随路音频状态信息
 * @attention 无 None
 */
typedef struct tagNETDEVAudioDecodeStatus
{
    INT32 dwStreamID;       /* 视频流索引号 */
    BOOL  bDecodeAudio;     /* 是否开启随路音频解码 */
}NETDEV_AUDIO_DECODE_STATUS_S, *LPNETDEV_AUDIO_DECODE_STATUS_S;

/**
 * @struct tagNETDEVAudioDecodeStatusList
 * @brief 随路音频状态信息列表
 * @attention 无 None
 */
typedef struct tagNETDEVAudioDecodeStatusList
{
    INT32 dwSize;   /* 数量 */
    NETDEV_AUDIO_DECODE_STATUS_S astAudioDecStatus[NETDEV_STREAM_MAX_NUM];  /* 随路音频状态信息 */
}NETDEV_AUDIO_DECODE_STATUS_LIST_S, *LPNETDEV_AUDIO_DECODE_STATUS_LIST_S;


/**
* @struct tagNETDEVAudioInputEncodeFormatInfo
* @brief 音频编码格式信息
* attention None
*/
typedef struct tagNETDEVAudioInputEncodeFormatInfo
{
    UINT32 udwType;                                                         /* 音频编码格式类型，参见枚举#NETDEV_AUDIO_ENCODE_FORMAT_TYPE_E */
    UINT32 udwSamplingRateNum;                                              /* 支持的采样率数目 */
    UINT32 audwSamplingRateList[NETDEV_AUDIO_SAMPLING_RATE_MAX_NUM];        /* 支持的采样率列表 参见枚举#NETDEV_AUDIO_SAMPLING_RATE_E */
    BYTE   byRes[128];                                                      /* 保留字节 */
}NETDEV_AUDIO_IN_ENCODE_FORMAT_INFO_S, *LPNETDEV_AUDIO_IN_ENCODE_FORMAT_INFO_S;

/**
* @struct tagNETDEVAudioInputModeInfo
* @brief 音频输入模式信息
* attention None
*/
typedef struct tagNETDEVAudioInputModeInfo
{
    INT32  dwChannelID;                                         /* 音频通道号 */
    UINT32 udwModeNum;                                          /* 音频模式数量 */
    UINT32 audwModeList[NETDEV_AUDIO_IN_CHL_MODE_MAX_NUM];      /* 支持的音频输入通道模式列表 参见枚举#NETDEV_AUDIO_CHL_MODE_E */
    BYTE   byRes[128];                                          /* 保留字节 */
}NETDEV_AUDIO_IN_MODE_INFO_S, *LPNETDEV_AUDIO_IN_MODE_INFO_S;

/**
 * @struct tagNETDEVAudioCapInfo
 * @brief 视频输入通道音频能力集信息
 * @attention 无 None
 */
typedef struct tagNETDEVAudioCapInfo
{
    INT32                                   dwAudioInNum;                                                   /* 支持的音频口输入的数目 */
    NETDEV_AUDIO_IN_MODE_INFO_S             astAudioInModeList[NETDEV_AUDIO_IN_MAX_NUM];                    /* 音频口输入模式列表 */
    INT32                                   dwAudioInEncFmtNum;                                             /* 支持的音频输入编码格式数量 */
    NETDEV_AUDIO_IN_ENCODE_FORMAT_INFO_S    astAudioInEncFmtList[NETDEV_AUDIO_IN_ENCODE_FORMAT_MAX_NUM];    /* 支持的音频输入编码格式列表 */
    INT32                                   dwSerialInNum;                                                  /* 支持的串口输入的数目，用于外接数字拾音器 */
    NETDEV_AUDIO_IN_MODE_INFO_S             astSerialInModeList[NETDEV_SERIAL_IN_MAX_NUM];                  /* 串口输入模式列表 */
    INT32                                   dwSerialInEncFmtNum;                                      /* 串口输入支持的编码格式数量 */
    NETDEV_AUDIO_IN_ENCODE_FORMAT_INFO_S    astSerialInEncFmtList[NETDEV_SERIAL_IN_ENCODE_FORMAT_MAX_NUM];  /* 串口输入支持的编码格式列表 */
    BYTE                                    byRes[256];                                                     /* 保留字段 */
}NETDEV_AUDIO_CAP_S, *LPNETDEV_AUDIO_CAP_S;

/**
* @struct tagNETDEVAudioInputInfo
* @brief 音频输入通道信息
* attention None
*/
typedef struct tagNETDEVAudioInputInfo
{
    INT32  dwChannelID;     /* 音频通道号 */
    UINT32 udwEnabled;      /* 音频输入通道是否启动 */
    UINT32 udwMode;         /* 音频输入通道模式 参见枚举#NETDEV_AUDIO_CHL_MODE_E */
    BYTE   byRes[128];      /* 保留字节 */
}NETDEV_AUDIO_INPUT_INFO_S, *LPNETDEV_AUDIO_INPUT_INFO_S;

/**
 * @struct tagNETDEVAudioInputCfgInfo
 * @brief 音频输入参数配置信息
 * @attention 无 None
 */
typedef struct tagNETDEVAudioInputCfgInfo
{
    BOOL bIsMute;                                                                   /* 是否静音 0：不静音，1 静音 */
    UINT32 udwType;                                                                 /* 采集口类型 参见枚举#NETDEV_AUDIO_COLLECTION_PORT_TYPE_E */
    UINT32 udwEncodeFormat;                                                         /* 音频编码格式 参见枚举#NETDEV_AUDIO_ENCODE_FORMAT_TYPE_E */
    UINT32 udwSampleRate;                                                           /* 音频采样率 参见枚举#NETDEV_AUDIO_SAMPLING_RATE_E */
    UINT32 udwInputGain;                                                            /* 音频增益，范围[0,255] */
    BOOL bNoiseReductionEnabled;                                                    /* 是否启用降噪 0不启用，1启用 */
    INT32 dwAudioInNum;                                                             /* 音频输入数量 */
    NETDEV_AUDIO_INPUT_INFO_S astAudioInputInfoList[NETDEV_AUDIO_IN_MAX_NUM];       /* 音频输入采集信息列表，当采集口类型为NETDEV_AUDIO_COLLECTION_PORT_TYPE_AUDIO_IN时有效 */
    INT32 dwSerialInNum;                                                            /* 串口输入数量 */
    NETDEV_AUDIO_INPUT_INFO_S astSerialInputInfoList[NETDEV_SERIAL_IN_MAX_NUM];     /* 串口音频采集信息列表 */
    BYTE  byRes[256];                                                               /* 保留字段 */
}NETDEV_AUDIO_INPUT_CFG_INFO_S, *LPNETDEV_AUDIO_INPUT_CFG_INFO_S;


/**
 * @struct tagNETDEVTimeSection
 * @brief 时间段配置 结构体定义 Time Sections Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVTimeSection
{
    CHAR    szBeginTime[NETDEV_LEN_64];              /* 开始时间  Begin time */
    CHAR    szEndTime[NETDEV_LEN_64];                /* 结束时间  End time */
}NETDEV_TIME_SECTION_S, *LPNETDEV_TIME_SECTION_S;

/**
 * @struct tagNETDEVDayPlan
 * @brief 计划（天）配置 结构体定义 Play (Day) Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVDayPlan
{
    UINT32                       udwIndex;                                                  /* 索引  day index */
    UINT32                       udwSectionNum;                                             /* 时间段个数  Section Num */
    NETDEV_TIME_SECTION_S        astTimeSection[NETDEV_PLAN_TIME_SECTION_NUM_ADAY];         /* 时间段配置  Time Sections */
}NETDEV_DAY_PLAN_S, *LPNETDEV_DAY_PLAN_S;

/**
 * @struct tagNETDEVPlanWeek
 * @brief 计划（周）配置 结构体定义 Play (Week) Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVPlanWeek
{
    UINT32              udwDayNum;                                  /* 天数  day num*/
    NETDEV_DAY_PLAN_S   astDayPlan[NETDEV_PLAN_DAY_NUM_AWEEK];      /* 天数配置  days */
}NETDEV_WEEK_PLAN_S, *LPNETDEV_WEEK_PLAN_S;


/**
 * @struct tagNETDEVPointS
 * @brief 点坐标
 * @attention
 */
typedef struct tagNETDEVPointS
{
    INT32 dwPointX;     /* 横坐标,万分比 */
    INT32 dwPointY;     /* 纵坐标,万分比 */
}NETDEV_POINT_S, *LPNETDEV_POINT_S;

/**
 * @struct tagNETDEVCustomFileInfo
 * @brief 设备定制配置所需信息 结构体定义 Basic device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVCustomFileInfo
{
    CHAR  szCustomFilePath[NETDEV_PATH_LEN];              /* 定制文件所在路径 */
    CHAR  szMd5Data[NETDEV_LEN_64];                       /* 定制文件的Md5值 */
    BYTE  byRes[256];                                     /* 保留字  Reserved */
}NETDEV_CUSTOM_FILE_INFO_S, *LPNETDEV_CUSTOM_FILE_INFO_S;

/**
 * @struct tagNETDEVNetworkDiagnosis
 * @brief 网络诊断消息 Network Diagnosis
 * @attention 无 None
 */  
typedef struct tagNETDEVNetworkDiagnosis
{
    UINT32    dwPacketSize;             /* 报文大小(单位:byte) */
    UINT32    dwPacketNum;              /* 报文数量 */
    UINT32    dwDuration;               /* 检测持续时间(单位:s) */
    CHAR      szUrl[NETDEV_LEN_260];    /* 诊断报文发送URL */
} NETDEV_NETWORK_DIAGNOSIS_S, *LPNETDEV_NETWORK_DIAGNOSIS_S;

/**
* @struct tagNETDEVAlarmFindConds
* @brief 告警信息查找条件 结构体定义
* @attention 无
*/
typedef struct tagNETDEVAlarmFindConds
{
    INT32   dwChannelID;      /* 通道ID */
    INT64   tBeginTime;       /* 开始时间 */
    INT64   tEndTime;         /* 结束时间 */
    BYTE    byRes[128];       /* 保留字段  Reserved */
}NETDEV_FIND_ALARM_COND_S, *LPNETDEV_FIND_ALARM_COND_S;

/**
* @struct tagNETDEVFindAlarmInfo
* @brief 告警信息 结构体定义
* @attention 无
*/
typedef struct tagNETDEVFindAlarmInfo
{
    INT64    tAlarmTime;        /* 告警时间 */
    INT32    dwAlarmType;       /* 告警类型, 请参考#NETDEV_FIND_ALARM_TYPE_E */
    BYTE     byRes[256];        /* 保留字段  Reserved */
}NETDEV_FIND_ALARM_INFO_S, *LPNETDEV_FIND_ALARM_INFO_S;


/**
 * @struct tagNETDEVSDKInfo
 * @brief SDK信息
 * @attention 无 None
 */
typedef struct tagNETDEVSDKInfo
{
    CHAR szSDKType[NETDEV_LEN_64];                   /* SDK类型 */
    CHAR szSDKVersion[NETDEV_LEN_64];                /* SDK版本号 */
}NETDEV_SDK_INFO_S, *LPNETDEV_SDK_INFO_S;

/**
 * @struct tagNETDEVSplitScreenInfo
 * @brief 分屏信息
 * @attention 无 None
 */
typedef struct tagNETDEVSplitScreenInfo
{
    INT32 dwOperatedMode;           /* 操作模式, NETDEV_OPERATED_MODE_E*/
    INT32 dwSplitScreenIndex;       /* 分屏序号 */

}NETDEV_SPLIT_SCREEN_INFO_S, *LPNETDEV_SPLIT_SCREEN_INFO_S;

/**
 * @struct tagNETDEVAlarmDeviceInfo
 * @brief 告警设备信息 结构体定义 Alarm device information Structure definition
 * @attention 无  
 1.通道号仅在告警源类型是视频通道类型和报警输入通道时,其他情况下dwChannelID默认为0,
 2.告警源类型参见NETDEV_ALARM_SRC_TYPE_E 要获取具体信息可参见NETDEV_ALARM_LISTEN_INFO_S类型中的dwAlarmSrcID字段。
 */
typedef struct tagNETDEVAlarmDeviceInfo
{
    CHAR    pszIP[16];      /* 设备IP device IP */
    INT32   dwChannelID;    /* 通道号 */
    BYTE    byRes[128];     /* 保留字段  Reserved */

}NETDEV_ALARM_DEVICE_INFO_S, *LPNETDEV_ALARM_DEVICE_INFO_S;

/**
 * @struct tagNETDEVAlarmListenInfo
 * @brief 告警信息 结构体定义 Alarm device information Structure definition
 * @attention 无 
 告警资源ID 使用规则：
 1. AlarmSrcType为0-7，AlarmSrcID代表存储盘索引。
 2. AlarmSrcType为8，AlarmSrcID代表视频通道号。
 3. AlarmSrcType为9，AlarmSrcID代表报警输入通道号。
 4.AlarmSrcType为10,AlarmSrcID默认为0,代表系统本身。 
 */
typedef struct tagNETDEVAlarmListenInfo
{
    INT32   dwAlarmType;                /*告警类型 参见枚举#NETDEV_ALARM_TYPE_E */
    INT32   dwAlarmSrcType;             /*告警源类型 参见枚举#NETDEV_ALARM_SRC_TYPE_E*/
    INT64   tAlarmTime;                 /* 告警发生时间  Alarm time */
    INT32   dwAlarmSrcID;               /* 告警资源ID */
    CHAR    szAlarmSrcName[128];        /*告警源名称 VMS使用*/
    INT32   dwAlarmSeq;                 /*告警序号 IPC & VMS使用*/
    BYTE    byRes[128];                 /* 保留字段  Reserved */
}NETDEV_ALARM_LISTEN_INFO_S,*LPNETDEV_ALARM_LISTEN_INFO_S;

/**
 * @struct tagNETDEVDiagnosisInfoURL
 * @brief 诊断信息URL
 * @attention
 */
typedef struct tagNETDEVDiagnosisInfoURL
{
    CHAR   szURL[NETDEV_LEN_256];      /* 诊断信息URL */
}NETDEV_DIAGNOSIS_INFO_URL_S, *LPNETDEV_DIAGNOSIS_INFO_URL_S;


/**
 * @struct tagNETDEVDiagnosisInfo
 * @brief 诊断信息
 * @attention
 */
typedef struct tagNETDEVDiagnosisInfo
{
    INT32    dwTime;                          /* 文件创建时间 */
    CHAR     szFileName[NETDEV_LEN_64];       /* 文件名 */
    INT32    dwSize;                          /* 文件大小 */
}NETDEV_DIAGNOSIS_INFO_S, *LPNETDEV_DIAGNOSIS_INFO_S;
/**
 * @struct tagNETDEVDownDiagnosisFileInfo
 * @brief 下载诊断文件的信息
 * @attention
 */
typedef struct tagNETDEVDownDiagnosisFileInfo
{
    CHAR    szURL[NETDEV_MAX_URL_LEN];         /* 诊断信息URL */
    BOOL    bSaveLocal;                        /* 是否保存在本地，TURE表示保存本地，FALSE表示写入缓存*/
    CHAR    szFileName[NETDEV_LEN_260];        /* 保存诊断信息的本地路径及名称*/
    CHAR*   pcBuffer;                          /* 保存诊断信息缓存,需客户申请内存，大小为dwSize缓存大小*/
    INT32   dwSize;                            /* 缓存大小*/
    BYTE    byRes[256];                        /* 保留字段 Reserved */
}NETDEV_DIAGNOSIS_FILE_INFO_S, *LPNETDEV_DIAGNOSIS_FILE_INFO_S;


/**
* @struct tagNETDEVFaceGalleyInfo
* @brief 人脸特征库信息
* @attention
*/
typedef struct tagNETDEVFaceGalleyInfo
{
    CHAR    szGalleyID[NETDEV_FACE_FEATURE_GALLEY_ID_LEN];          /* 人脸特征库ID */
    UINT32  udwGalleyType;                                          /* 人脸特征库类型 参见枚举 NETDEV_FACE_DB_TYPE_E*/
    UINT32  udwFeatureDataLen;                                      /* 人脸特征库净荷总长度 单位字节*/
    CHAR    szFeatureVersion[NETDEV_FACE_FEATURE_VERSION_LEN];      /* 人脸特征模型版本号 长度为char[40]*/
    CHAR    szFeatureFileMD5[NETDEV_FACE_FEATURE_FILE_MD5_LEN];     /* 人脸特征库净荷的MD5值 128比特*/
    BYTE    byRes[128];                                             /* 保留字段  Reserved */
}NETDEV_FACE_GALLEY_INFO_S, *LPNETDEV_FACE_GALLEY_INFO_S;

/**
* @struct tagNETDEVFaceDBImportNumInfo
* @brief 系统人脸库导入数量信息
* @attention
*/
typedef struct tagNETDEVFaceDBImportNumInfo
{
    UINT32  udwMaxNum;      /* 系统人脸库成员最大个数*/
    UINT32  udwImportSum;   /* 已导入人脸成员总数量*/
    UINT32  udwFaceDBNum;   /* 人脸库数量*/

    BYTE    byRes[128];     /* 保留字段  Reserved */
}NETDEV_FACE_DB_IMPORT_NUM_INFO_S, *LPNETDEV_FACE_DB_IMPORT_NUM_INFO_S;

/**
* @struct tagNETDEVFaceDBMemberImportInfo
* @brief 人脸库成员导入信息
* @attention
*/
typedef struct tagNETDEVFaceDBMemberImportInfo
{
    UINT32  udwFaceDBID;            /* 人脸库ID*/
    UINT32  udwFaceDBMemberNum;     /* 已导入成员数量*/

    BYTE    byRes[128];             /* 保留字段  Reserved */
}NETDEV_FACEDB_MEMBER_IMPORT_INFO_S, *LPNETDEV_FACEDB_MEMBER_IMPORT_INFO_S;

/**
 * @struct tagNETDEVModifyPasswordInfo
 * @brief用户密码
 * @attention 
 */
typedef struct tagNETDEVModifyPasswordInfo
{
    CHAR szUserName[NETDEV_LEN_260];    /* 用户名 */
    CHAR szNewPIN[NETDEV_LEN_256];      /* 用户新密码 */
    CHAR szCurrentPIN[NETDEV_LEN_256];  /* 用户原密码 */
    BYTE byRes[128];                    /* 保留字段 */
}NETDEV_MODIFY_PASSWORD_INFO_S,*LPNETDEV_MODIFY_PASSWORD_INFO_S;

/**
 * @enum tagNETDEVDevManageInfo
 * @brief 设备管理信息
 * @attention 无 None
 */
typedef struct tagNETDEVDevManageInfo
{
    CHAR    szSerailNum[NETDEV_LEN_64];     /* 序列号 */
    CHAR    szActiveCode[NETDEV_LEN_64];    /* 激活码 */
}NETDEV_DEV_MANAGE_INFO_S, *LPNETDEV_DEV_MANAGE_INFO_S;

/**
 * @struct tagNETDEVImagingEnhance
 * @brief 指定通道的图像增强参数 结构体定义    Device image settings Structure definition
 * @attention udwBrightness,udwContrast,udwSaturation,udwSharpness,udw2DNoiseReduce 参数取值范围：0-255    
              udwBrightness,udwContrast,udwSaturation,udwSharpness,udw2DNoiseReduce parameter range: 0-255
 */
typedef struct tagNETDEVImagingEnhance
{
    UINT32 udwBrightness;                 /* 亮度  Brightness */
    UINT32 udwContrast;                   /* 对比度  Contrast */
    UINT32 udwSaturation;                 /* 饱和度  Saturation */
    UINT32 udwSharpness;                  /* 锐度  Sharpness */
    UINT32 udwImageRotation;              /* 图像镜像模式 */
    UINT32 udw2DNoiseReduce;              /* 2D降噪 */
    UINT32 udw3DNoiseReduce;              /* 3D降噪 */
    BYTE  byRes[252];                     /* 保留字段  Reserved */
}NETDEV_IMAGE_ENHANCE_S, *LPNETDEV_IMAGE_ENHANCE_S;


/**
 * @struct tagNETDEVEnhanceCapabilitiesInfo
 * @brief 图像增强能力参数 结构体定义
 * @attention
 */
typedef struct tagNETDEVEnhanceCapabilitiesInfo
{
    UINT32 udwImageRotationModeNum;                                          /* 支持的图像镜像模式个数 */
    UINT32 udwImageRotationModeList[NETDEV_IMAGE_ROTATION_MODE_MAX_NUM];     /* 支持的图像镜像模式列表,参见枚举#NETDEV_IMAGE_ROTATION_MODE_E*/
    BOOL bSupportSharpness;                                                  /* 设备是否支持锐度，0,不支持，1,支持*/
    BOOL bSupport2DNoiseReduce;                                              /* 设备是否支持2D降噪，0,不支持，1,支持 */
    BOOL bSupport3DNoiseReduce;                                              /* 设备是否支持3D降噪，0,不支持，1,支持 */
    BYTE  byRes[512];                                                        /* 保留字段  Reserved */
}NETDEV_IMAGE_ENHANCE_CAP_INFO_S, *LPNETDEV_IMAGE_ENHANCE_CAP_INFO_S;

/**
 * @struct tagNETDEVFocusCapabilitiesInfo
 * @brief 对焦能力参数 （仅IPC支持） 结构体定义
 * @attention
 */
typedef struct tagNETDEVFocusCapabilitiesInfo 
{
    BOOL bSupportFocusCfg;                                                   /* 是否支持对焦参数的配置：0,不支持，1,支持*/
    UINT32 udwFocusModeNum;                                                  /* 支持的对焦模式个数*/
    UINT32 udwFocusModeList[NETDEV_FOCUS_MODE_MAX_NUM];                      /* 支持的对焦模式列表,参见枚举#NETDEV_FOCUS_MODEL_E*/
    UINT32 udwFocusSceneNum;                                                 /* 支持的对焦场景个数*/
    UINT32 udwFocusSceneList[NETDEV_FOCUS_SCENE_MAX_NUM];                    /* 支持的对焦场景列表,参见枚举#NETDEV_FOCUS_SCENE_E*/
    BYTE  byRes[512];                                                        /* 保留字段  Reserved */
}NETDEV_FOCUS_CAP_INFO_S, *LPNETDEV_FOCUS_CAP_INFO_S;

/**
 * @struct tagNETDEVWhiteBalanceCapabilitiesInfo
 * @brief 白平衡能力参数 （仅IPC支持） 结构体定义
 * @attention
 */
typedef struct tagNETDEVWhiteBalanceCapabilitiesInfo 
{
    UINT32 udwWhiteBalanceModeNum;                                           /* 支持的白平衡模式个数*/
    UINT32 audwWhiteBalanceModeList[NETDEV_WHITE_BALANCE_MODE_MAX_NUM];       /* 支持的白平衡模式信息列表,参见枚举#NETDEV_WHITE_BALANCE_MODE_E*/
    BYTE  byRes[512];                                                        /* 保留字段  Reserved */
}NETDEV_WHITE_BALANCE_CAP_INFO_S, *LPNETDEV_WHITE_BALANCE_CAP_INFO_S;

/**
 * @struct tagNETDEVLampInfo
 * @brief 补光灯信息 结构体定义
 * @attention
 */
typedef struct tagNETDEVLampInfo
{
    UINT32 udwLampType;                                             /* 补光灯类型 参加枚举NETDEV_LAMP_TYPE_E*/
    UINT32 udwLampCtrlModeListNum;                                  /* 补光灯支持的控制模式个数。*/
    UINT32 audwLampCtrlModeList[NETDEV_LAMP_CTRL_MODE_MAX_NUM];     /* 补光灯支持的控制模式。参见枚举#NETDEV_LAMP_CTRL_MODE_E*/
    BOOL   bSupportNearLampCfg;                                     /* 是否支持近光灯级别可配置：0：不支持 1：支持*/
    BOOL   bSupportMiddleLampCfg;                                   /* 是否支持中光灯级别可配置：0：不支持 1：支持*/
    BOOL   bSupportFarLampCfg;                                      /* 是否支持远光灯级别可配置：0：不支持 1：支持*/
    BOOL   bSupportSuperFarLampCfg;                                 /* 是否支持超远远灯级别可配置：0：不支持 1：支持*/
    BOOL   bSupportLaserAngleCfg;                                   /* 是否支持激光角度可配置：0：不支持 1：支持*/
    UINT32 udwLaserAngleMin;                                        /* 激光角度最小值，bSupportLaserAngleCfg为0时，此节点可选。。*/
    UINT32 udwLaserAngleMax;                                        /* 激光角度最大值，bSupportLaserAngleCfg为0时，此节点可选。*/
    BYTE   byRes[512];                                              /* 保留字段  Reserved */
}NETDEV_LAMP_INFO_S, *LPNETDEV_LAMP_INFO_S;

/**
 * @struct tagNETDEVLampCtrlCapabilitiesInfo
 * @brief 补光灯能力参数 （仅IPC支持） 结构体定义
 * @attention
 */
typedef struct tagNETDEVLampCtrlCapabilitiesInfo
{
    UINT32              udwLampNum;                                     /* 支持的补光灯类型个数，为0时表示设备不支持补光灯。*/
    NETDEV_LAMP_INFO_S  astLampInfos[NETDEV_LAMP_CTRL_TYPE_MAX_NUM];    /* 补光灯信息列表,补光灯信息列表，当LampNum为0时，该节点可选。*/
    BYTE                byRes[512];                                     /* 保留字段  Reserved */
}NETDEV_LAMPCTRL_CAP_INFO_S, *LPNETDEV_LAMPCTRL_CAP_INFO_S;

/**
 * @struct tagNETDEVShutterCapabilitiesInfo
 * @brief 快门能力集 结构体定义
 * @attention
 */
typedef struct tagNETDEVShutterCapabilitiesInfo
{
    BOOL   bSupportShutterTimeCfg;                                                  /* 是否支持快门时间配置：0：不支持 1：支持*/
    UINT32 udwShutterTimeUnit;                                                      /* 快门时间单位  0：微秒 1：秒*/
    UINT32 udwShutterTimeRangeNum;                                                  /* 支持的快门时间的取值的个数*/
    UINT32 audwShutterTimeRangeList[NETDEV_SHUTTER_TIME_RANGE_MAX_NUM];             /* 快门时间支持的取值列表 枚举参见#NETDEV_SHUTTER_TIME_RANGE_E*/
    BOOL   bSupportSlowShutterCfg;                                                  /* 是否支持慢快门可配置：0：不支持 1：支持*/
    UINT32 udwSlowShutterTimeRangeNum;                                              /* 支持的慢快门时间的取值的个数*/
    UINT32 audwSlowShutterTimeRangeList[NETDEV_SLOW_SHUTTER_TIME_RANGE_MAX_NUM];    /* 慢快门时间支持的取值列表 枚举参见#NETDEV_SHUTTER_TIME_RANGE_E。注意，慢快门时间支持的取值最快仅1/25*/
    BYTE   byRes[512];                                                              /* 保留字段  Reserved */
}NETDEV_SHUTTER_CAP_INFO_S, *LPNETDEV_SHUTTER_CAP_INFO_S;

/**
 * @struct tagNETDEVWideDynamicCapabilitiesInfo
 * @brief 宽动态能力集 结构体定义
 * @attention
 */
typedef struct tagNETDEVWideDynamicCapabilitiesInfo
{
    BOOL   bSupportWideDynamicCfg;                                              /* 是否支持宽动态可配置：0：不支持 1：支持*/
    UINT32 udwWideDynamicModeNum;                                               /* 支持的宽动态模式个数*/
    UINT32 audwWideDynamicModeList[NETDEV_SHUTTER_TIME_RANGE_MAX_NUM];          /* 宽动态模式列表 枚举参见#NETDEV_WIDE_DYNAMIC_MODE_E*/
    BYTE   byRes[512];                                                          /* 保留字段  Reserved */
}NETDEV_WIDE_DYNAMIC_CAP_INFO_S, *LPNETDEV_WIDE_DYNAMIC_CAP_INFO_S;

/**
 * @struct tagNETDEVDayNightCapabilitiesInfo
 * @brief 昼夜模式能力集 结构体定义
 * @attention
 */
typedef struct tagNETDEVDayNightCapabilitiesInfo
{
    BOOL   bSupportDayNightCfg;                                              /* 是否支持昼夜模式可配置：0：不支持 1：支持*/
    UINT32 udwDayNightModeNum;                                               /* 支持昼夜模式类型个数*/
    UINT32 audwDayNightModeList[NETDEV_DAY_NIGHT_MODE_MAX_NUM];              /* 昼夜模式类型列表 枚举参见#NETDEV_DAY_NIGHT_MODE_E*/
    BOOL   bSupportSensibilityCfg;                                           /* 是否支持昼夜模式灵敏度可配置：0：不支持 1：支持*/
    BOOL   bSupportSwitchingCfg;                                             /* 是否支持昼夜模式切换时间可配置：0：不支持 1：支持*/
    BYTE   byRes[512];                                                       /* 保留字段  Reserved */
}NETDEV_DAY_NIGHT_CAP_INFO_S, *LPNETDEV_DAY_NIGHT_CAP_INFO_S;


/**
 * @struct tagNETDEVExposureCapabilitiesInfo
 * @brief 曝光能力参数（仅IPC支持） 结构体定义
 * @attention
 */
typedef struct tagNETDEVExposureCapabilitiesInfo
{
    BOOL   bSupportCompensationCfg;                                          /* 是否支持曝光补偿可配置。0：不支持 1：支持*/
    UINT32 udwExposureModeNum;                                               /* 支持的曝光模式个数。*/
    UINT32 audwExposureModeList[NETDEV_EXPOSURE_MODE_MAX_NUM];               /* 支持的曝光模式。参见枚举#NETDEV_EXPOSURE_MODE_E*/
    BOOL   bSupportIrisCfg;                                                  /* 是否支持光圈可配置。0：不支持 1：支持*/
    UINT32 udwIrisRangeNum;                                                  /* 支持的光圈取值个数。*/
    UINT32 audwIrisRangeList[NETDEV_IRIS_RANGE_MAX_NUM];                     /* 光圈支持的取值:160，200，240，280，340，400，480，560，680，800，960，1100，1400,1600,2200 当IrisRangeNum为0时，该节点可选。*/
    UINT32 udwMinGain;                                                       /* 支持的增益最小值。*/
    UINT32 udwMaxGain;                                                       /* 支持的增益最大值。*/
    BOOL   bSupportHLCCfg;                                                   /* 是否支持强光抑制灵敏度可配置：0：不支持 1：支持*/
    BOOL   bSupportMeteringCfg;                                              /* 是否支持测光控制可配置：0：不支持 1：支持*/
    BOOL   bSupportSuperFarLampCfg;                                          /* 是否支持超远远灯级别可配置：0：不支持 1：支持*/
    UINT32 udwMeteringModeNum;                                               /* 支持的测光控制模式个数。*/
    UINT32 audwMeteringModeList[NETDEV_METERING_MODE_MAX_NUM];               /* 测光控制模式 参见枚举#NETDEV_METERING_MODE_E*/
    NETDEV_SHUTTER_CAP_INFO_S  stShutterCapInfo;                             /* 快门能力信息*/
    NETDEV_WIDE_DYNAMIC_CAP_INFO_S  stWideDynamicCapInfo;                    /* 宽动态能力信息*/
    NETDEV_DAY_NIGHT_CAP_INFO_S  stDayNightCapInfo;                          /* 昼夜模式能力信息*/
    BYTE  byRes[512];                                                        /* 保留字段  Reserved */
}NETDEV_EXPOSURE_CAP_INFO_S, *LPNETDEV_EXPOSURE_CAP_INFO_S;

/**
 * @struct tagNETDEVImageCapabilities
 * @brief 指定通道的图像参数能力集 结构体定义    Device image Capabilities Structure definition
 * @attention
 */
typedef struct tagNETDEVImageCapabilities
{
    BOOL bSupportCfg;                                                       /* 设备是否支持图像参数配置 0,不支持，1,支持 */
    BOOL bIsSupportCorrectCfg;                                              /* 设备是否支持图像矫正 0，不支持，1，支持 */
    INT32 udwImageRotationModeNum;                                          /* 支持的图像镜像模式个数 */
    INT32 udwImageRotationModeList[NETDEV_IMAGE_ROTATION_MODE_MAX_NUM];     /* 支持的图像镜像模式列表,参见枚举#NETDEV_IMAGE_ROTATION_MODE_E*/
    BOOL bSupportSharpness;                                                 /* 设备是否支持锐度，0,不支持，1,支持*/
    BOOL bSupport2DNoiseReduce;                                             /* 设备是否支持2D降噪，0,不支持，1,支持 */
    BOOL bSupport3DNoiseReduce;                                             /* 设备是否支持3D降噪，0,不支持，1,支持 */
    BOOL bSupportIlluminationCfg;                                           /* 设备是否支持获取相对照度等级值(仅IPC支持) 0,不支持，1,支持 */
    BOOL bIsSupportEPTZ;                                                    /* 设备是否支持电子云台智能跟踪功能，0,不支持，1,支持 */
    NETDEV_FOCUS_CAP_INFO_S stFocusCapInfo;                                 /* 对焦能力参数,仅IPC支持。*/
    NETDEV_LAMPCTRL_CAP_INFO_S stLampCtrlCapInfo;                           /* 补光灯能力参数,仅IPC支持。*/
    NETDEV_EXPOSURE_CAP_INFO_S stExposureCapInfo;                           /* 曝光能力参数,仅IPC支持。*/
    NETDEV_WHITE_BALANCE_CAP_INFO_S  stWhiteBalanceCapInfo;                 /* 白平衡能力信息,仅IPC支持*/
    BYTE  byRes[504];                                                       /* 保留字段  Reserved */
}NETDEV_IMAGE_CAP_S, *LPNETDEV_IMAGE_CAP_S;


/**
 * @struct tagNETDEVIrisInfo
 * @brief  光圈信息  结构体定义    IrisInfo
 * @attention
 */
typedef struct tagNETDEVIrisInfo
{
    UINT32 udwIris;         /* 光圈,在光圈优先、手动曝光模式下可选。光圈支持的取值:160， 200， 240， 280， 340， 400， 480， 560， 680， 800， 960， 1100，1400,  1600,  2200*/
    UINT32 udwMinIris;      /* 最小光圈值 自定义曝光模式下可用，枚举同 Iris能力集所描述，不得大于光圈最大值。图像能力集支持该功能，此字段必选。*/
    UINT32 udwMaxIris;      /* 最大光圈值 自定义曝光模式下可用，枚举同 Iris能力集所描述，不得小于光圈最小值。图像能力集支持该功能，此字段必选。*/
    BYTE  byRes[128];       /* 保留字段  Reserved */
}NETDEV_IRIS_INFO_S, *LPNETDEV_IRIS_INFO_S;


/**
 * @struct tagNETDEVShutterInfo
 * @brief  快门信息  结构体定义    ShutterInfo
 * @attention
 */
typedef struct tagNETDEVShutterInfo
{
    UINT32 udwShutterTime;                  /* 快门时间 枚举见#NETDEV_SHUTTER_TIME_RANGE_E,快门时间单位  0：微秒 1：秒*/
    UINT32 udwMinShutterTime;               /* 快门时间最小值 MinShutter 枚举见#NETDEV_SHUTTER_TIME_RANGE_E*/
    UINT32 udwMaxShutterTime;               /* 快门时间最大值 MaxShutter 枚举见#NETDEV_SHUTTER_TIME_RANGE_E*/
    UINT32 udwIsEnableSlowShutter;          /* 慢快门使能。非光圈优先模式下可用：0：不使能  1：使能*/
    UINT32 udwSlowestShutter;               /* 最慢慢快门,慢快门使能后可用。*/
    BYTE   byRes[128];                      /* 保留字段  Reserved */
}NETDEV_SHUTTER_INFO_S, *LPNETDEV_SHUTTER_INFO_S;

/**
 * @struct tagNETDEVGainInfo
 * @brief  增益信息  结构体定义    GainInfo
 * @attention
 */
typedef struct tagNETDEVGainInfo
{
    UINT32 udwGain;         /* 增益值（单位:db）手动曝光模式下可用。范围[1,100]*/
    UINT32 udwMinGain;      /* 增益最小值 ,自定义曝光模式下可用，不得大于增益最大值。最小值为1*/
    UINT32 udwMaxGain;      /* 增益最大值 , 自定义曝光模式下可用，不得小于增益最小值。最大值为100*/
    BYTE  byRes[128];       /* 保留字段  Reserved */
}NETDEV_GAIN_INFO_S, *LPNETDEV_GAIN_INFO_S;

/**
 * @struct tagNETDEVWideDynamicInfo
 * @brief  宽动态信息  结构体定义    WideDynamicInfo
 * @attention
 */
typedef struct tagNETDEVWideDynamicInfo
{
    UINT32 udwWideDynamicMode;              /* 宽动态模式 WideDynamicMode 枚举详见#NETDEV_WIDE_DYNAMIC_MODE_E*/
    UINT32 udwWideDynamicLevel;             /* 宽动态级别配置，宽动态开启且在曝光模式为自动模式、自定义、快门优先、室内50HZ、室内60HZ、低拖影下可用。范围[1, 9]。*/
    UINT32 udwOpenSensitivity;              /* 宽动态开启的灵敏度。宽动态模式为自动下可用。范围[1, 9]。*/
    UINT32 udwCloseSensitivity;             /* 宽动态关闭的灵敏度。宽动态模式为自动下可用。范围[1, 9]。*/
    UINT32 udwAntiFlicker;                    /* 宽动态条纹抑制：0：关闭 1：开启该功能开启后，可消除图像中的条纹效应。*/
    BYTE   byRes[128];                      /* 保留字段  Reserved */
}NETDEV_WIDE_DYNAMIC_INFO_S, *LPNETDEV_WIDE_DYNAMIC_INFO_S;

/**
 * @struct tagNETDEVAreaTopLeft
 * @brief  左上角区域  结构体定义    Upper left Area
 * @attention
 */
typedef struct tagNETDEVAreaTopLeft
{
    UINT32  dwTopLeftX;     /* 左上角横坐标(比例)：区域测光模式范围: [0, 100]。Upper left corner X [0, 100]  */
    UINT32  dwTopLeftY;     /* 左上角纵坐标(比例)：区域测光模式范围: [0, 100]。Upper left corner Y [0, 100]  */
    BYTE    byRes[128];     /* 保留字段  Reserved */
}NETDEV_AREA_TOP_LEFT_S, *LPNETDEV_AREA_TOP_LEFT_S;

/**
 * @struct tagNETDEVAreaBotRight
 * @brief  右下角区域  结构体定义    Lower right Area
 * @attention
 */
typedef struct tagNETDEVAreaBotRight
{
    UINT32  dwBottomRightX;     /* 左上角横坐标(比例)：区域测光模式范围: [0, 100]  Lower right corner x [0, 100] */
    UINT32  dwBottomRightY;     /* 左上角纵坐标(比例)：区域测光模式范围: [0, 100]  Lower right corner y [0, 100] */
    BYTE    byRes[128];         /* 保留字段  Reserved */
}NETDEV_AREA_BOT_RIGHT_S, *LPNETDEV_AREA_BOT_RIGHT_S;

/**
 * @struct tagNETDEVMeteringArea
 * @brief  测光区域  结构体定义   MeteringArea
 * @attention
 */
typedef struct tagNETDEVMeteringArea
{
    NETDEV_AREA_TOP_LEFT_S    stAreaTopLeft;           /* 左上角区域  结构体见#NETDEV_AREA_TOP_LEFT_S*/
    NETDEV_AREA_BOT_RIGHT_S   stAreaBotRight;          /* 右下角区域  结构体见#NETDEV_AREA_BOT_RIGHT_S*/
    BYTE  byRes[128];                                  /* 保留字段  Reserved */
}NETDEV_METERING_AREA_S, *LPNETDEV_METERING_AREA_S;

/**
 * @struct tagNETDEVMeteringInfo
 * @brief  测光信息  结构体定义    MeteringInfo
 * @attention
 */
typedef struct tagNETDEVMeteringInfo
{
    UINT32 udwMeteringMode;                 /* 测光控制模式,此字段在非手动曝光模式下可用。枚举详见#NETDEV_DAY_NIGHT_MODE_E*/
    UINT32 udwRefBrightness;                /* 人脸亮度。人脸测光模式下可用。范围：[0, 100]。*/
    UINT32 udwHoldTime;                     /* 最短持续时间。人脸测光模式下可用。单位：分钟。范围：[0, 60]。*/
    NETDEV_METERING_AREA_S stMeteringArea;  /* 测光区域 ,在测光模式为区域测光及点测光时，此字段可用*/
    BYTE  byRes[128];                       /* 保留字段  Reserved */
}NETDEV_METERING_INFO_S, *LPNETDEV_METERING_INFO_S;

/**
 * @struct tagNETDEVDayNightInfo
 * @brief  昼夜模式信息  结构体定义    MeteringInfo
 * @attention
 */
typedef struct tagNETDEVDayNightInfo
{
    UINT32 udwDayNightMode;                 /* 昼夜模式类型 DayNightMode 枚举参见#NETDEV_DAY_NIGHT_MODE_E*/
    UINT32 udwDayNightSensitivity;          /* 昼夜模式灵敏度 DayNightSensitivity 在昼夜模式为自动模式下可用，范围[0, 9]。若图像能力支持该功能，此字段必选。*/
    UINT32 udwDayNightTime;                 /* 昼夜模式切换时间，在昼夜模式为自动模式下可用。范围[3, 120]。单位秒。若图像能力支持该功能，此字段必选。*/
    BYTE  byRes[128];                       /* 保留字段  Reserved */
}NETDEV_DAY_NIGHT_INFO_S, *LPNETDEV_DAY_NIGHT_INFO_S;

/**
 * @struct tagNETDEVImagingExposure
 * @brief 图像曝光参数 结构体定义    Device image Exposure Structure definition
 * @attention
 */
typedef struct tagNETDEVImagingExposure
{
    UINT32                      udwMode;                /* 曝光模式  Exposure Mode 枚举详见#NETDEV_EXPOSURE_MODE_E*/
    INT32                       dwCompensationLevel;    /* 曝光补偿级别,曝光模式为非手动曝光模式时可用。范围[-100,100].图像能力集支持该功能，此字段必选 */
    UINT32                      udwHLCSensitivity;      /* 强光抑制灵敏度，当前场景为道路强光抑制及园区强光抑制时可用,范围[1,9]。 图像能力集支持该功能，此字段必选 */
    NETDEV_IRIS_INFO_S          stIrisInfo;             /* 光圈信息。图像能力集支持该功能，此字段必选。*/
    NETDEV_SHUTTER_INFO_S       stShutterInfo;          /* 快门信息。图像能力集支持该功能，此字段必选。*/
    NETDEV_GAIN_INFO_S          stGainInfo;             /* 增益信息。*/
    NETDEV_WIDE_DYNAMIC_INFO_S  stWideDynamicInfo;      /* 宽动态信息。图像能力集支持该功能，此字段必选。*/
    NETDEV_METERING_INFO_S      stMeteringInfo;         /* 测光信息。当前场景不是道路强光抑制及园区强光抑制时可用。图像能力集支持该功能，此字段必选。*/
    NETDEV_DAY_NIGHT_INFO_S     stDayNightInfo;         /* 昼夜模式信息。图像能力集支持该功能，此字段必选。*/
    BYTE                        byRes[256];             /* 保留字段  Reserved */
}NETDEV_IMAGE_EXPOSURE_S, *LPNETDEV_IMAGE_EXPOSURE_S;


/**
 * @struct tagNETDEVLampCtrlInfo
 * @brief  补光灯信息
 * @attention
 */
typedef struct tagNETDEVLampCtrlInfo
{
    UINT32 udwEnabled;          /* 补光灯使能开关：0：关闭 1：开启 */
    UINT32 udwType;             /* 补光灯类型 详见枚举类型 #NETDEV_LAMP_TYPE_E*/
    UINT32 udwMode;             /* 补光灯控制模式 详见枚举类型 #NETDEV_LAMP_CTRL_MODE_E*/
    UINT32 udwNearLevel;        /* 近光灯级别,在红外控制模式为手动控制及手动-强制开启模式下,此字段可用。补光灯能力集支持该功能，此字段必选。范围[0-1000]。级别越高，补光灯强度越大。*/
    UINT32 udwMiddleLevel;      /* 中光灯级别,在红外控制模式为手动控制及手动-强制开启模式下可用。补光灯能力集支持该功能，此字段必选。范围[0-1000]。级别越高，补光灯强度越大。*/
    UINT32 udwFarLevel;         /* 远光灯级别,在红外控制模式为手动控制及手动-强制开启模式下可用。补光灯能力集支持该功能，此字段必选。范围[0-1000]。级别越高，补光灯强度越大。*/
    UINT32 udwSuperFarLevel;    /* 超远光灯级别,在红外控制模式为手动控制及手动-强制开启模式下可用。补光灯能力集支持该功能，此字段必选。范围[0-1000]。级别越高，补光灯强度越大。*/
    UINT32 udwLaserAngle;       /* 激光角度，当补光灯类型为激光器且，在红外控制模式为手动控制及手动-强制开启模式下可用。补光灯能力集支持该功能，此字段必选。范围见补光灯能力集。激光角度越小能量越集中，角度越大能量越分散。*/
    BYTE  byRes[256];           /* 保留字段  Reserved */
}NETDEV_LAMP_CTRL_INFO_S, *LPNETDEV_LAMP_CTRL_INFO_S;

/**
 * @struct tagNETDEVWhiteBalanceInfo
 * @brief  白平衡信息
 * @attention
 */
typedef struct tagNETDEVWhiteBalanceInfo
{
    UINT32 udwMode;             /* 白平衡模式 详见枚举类型 #NETDEV_WHITE_BALANCE_MODE_E*/
    INT32 dwRedOffset;          /* Red偏移值，只有在Mode为[1,5,8]微调模式下可配置*/
    INT32 dwBlueOffset;         /* Blue偏移值，只有在Mode为[1,5,8]微调模式下可配置*/
    BYTE  byRes[256];           /* 保留字段  Reserved */
}NETDEV_WHITE_BALANCE_INFO_S, *LPNETDEV_WHITE_BALANCE_INFO_S;


/* 源端媒体流信息 */
typedef struct tagNETDEVXWSteamInfoSrc
{
    UINT32  udwVideoInChlID;                /* 视频源ID */
    UINT32  udwStreamID;                    /* 媒体流序号 */
    CHAR    szIPAddr[NETDEV_IPV4_LEN_MAX];  /* 视频源IP地址 */
    UINT32  udwPort;                        /* 端口号 */
    BYTE    byRes[64];                      /* 保留字段 */
}NETDEV_XW_STREAM_INFO_SRC_S, *LPNETDEV_XW_STREAM_INFO_SRC_S;

/* 目的端媒体流信息 */
typedef struct tagNETDEVXWSteamInfoDest
{
    UINT32  udwWndID;                       /* 窗口ID */
    UINT32  udwPaneID;                      /* 分屏序号 */
    CHAR    szIPAddr[NETDEV_IPV4_LEN_MAX];  /* 目的端IP地址 */
    UINT32  udwPort;                        /* 端口号 */
    BYTE    byRes[64];                      /* 保留字段 */
}NETDEV_XW_STREAM_INFO_DEST_S, *LPNETDEV_XW_STREAM_INFO_DEST_S;

/* 媒体流具体信息 */
typedef struct tagNETDEVXWStreamInfoMsg
{
    UINT32                  udwTransProtocol;           /* 传输协议 NETDEV_LAPI_TRANS_PROTOCOL_E */
    UINT32                  udwIsMulticast;             /* 单组播 NETDEV_STREAM_TYPE_E */
    NETDEV_XW_RESOLUTION_S  stResolution;               /* 分辨率 */
    UINT32                  udwFrame;                   /* 帧率 */
    UINT32                  udwEncodeFormat;            /* 编码格式 NETDEV_VIDEOENCODING_E */
    UINT32                  udwIsInvalidAfterReboot;    /* 是否需要恢复 0 "XW"设备不负责恢复，1 "XW"设备恢复*/
    BYTE                    byRes[64];                  /* 保留字段 */
}NETDEV_XW_STREAM_INFO_MSG_S, *LPNETDEV_XW_STREAM_INFO_MSG_S;

/* 流业务的详细信息 */
typedef struct tagNETDEVXWSteamInfo
{
    UINT32                          udwTaskNo;          /* 业务号 */
    UINT32                          udwType;            /* 业务类型 NETDEV_XW_VIDEO_TYPE_E */
    NETDEV_XW_STREAM_INFO_SRC_S     stStreamInfoSrc;    /* 源端媒体流信息 */
    NETDEV_XW_STREAM_INFO_DEST_S    stStreamInfoDest;   /* 目的端媒体流信息 */
    NETDEV_XW_STREAM_INFO_MSG_S     stStreamInfoMsg;    /* 媒体流具体信息 */
}NETDEV_XW_STREAM_INFO_S, *LPNETDEV_XW_STREAM_INFO_S;



/**
 * @enum tagNETDEVXWAudioOutInfoList
 * @brief 音频输出通道信息列表
 * @attention 无 None
 */
typedef struct tagNETDEVXWAudioOutInfoList
{
    UINT32                      udwAudioSize;                           /* 音频通道数量 */
    NETDEV_XW_AUDIO_OUT_INFO_S  stAudioIDList[NETDEV_XW_AUDIO_NUM];     /* 音频输出通道信息 */
    BYTE                        byRes[128];                             /* 预留字段 */
}NETDEV_XW_AUDIO_OUT_INFO_LIST_S, *LPNETDEV_XW_AUDIO_OUT_INFO_LIST_S;


typedef struct tagNETDEVPassiveDecodeCtrl
{
    UINT32    udwSize;
    UINT32    dwPlayCmd;        /* 播放命令 见文件播放命令 */
    UINT32    dwCmdParam;       /* 播放命令参数 */
    BYTE      byRes[16];        /* 保留字段 */
}NETDEV_PASSIVE_DECODE_CTRL_S,*LPNETDEV_PASSIVE_DECODE_CTRL_S;


/* 轮询状态列表信息 */
typedef struct tagNETDEVXWSequenceStatus
{
    UINT32  udwWndID;       /* 窗口ID */
    UINT32  udwStatus;      /* 轮巡状态 NETDEV_XW_SEQUENCE_STATUS_E */
    BYTE    byRes[64];      /* 保留字段 */
}NETDEV_XW_SEQUENCE_STATUS_S, *LPNETDEV_XW_SEQUENCE_STATUS_S;


/* 轮巡资源基本信息 */
typedef struct tagNETDEVXWSequenceResourceBaseInfo
{
    UINT32  udwID;                          /* 轮巡资源的唯一ID */
    CHAR    szName[NETDEV_LEN_64];          /* 轮巡资源名称 */
    CHAR    szDescription[NETDEV_LEN_256];  /* 轮巡资源描述信息 */
    BOOL    bEnabled;                       /* 轮巡资源是否启用 */
    UINT32  udwOrderNO;                     /* 轮巡资源资源序号,查询时必选 */
    BYTE    byRes[124];                     /* 保留字段 */
}NETDEV_XW_SEQUENCE_RES_BASE_INFO_S, *LPNETDEV_XW_SEQUENCE_RES_BASE_INFO_S;

/* 轮巡视频源信息 */
typedef struct tagNETDEVXWSeqVideoSrcInfo
{
    UINT32                              udwVideoSrcIndex;               /* 视频源的序号 */
    NETDEV_XW_VIDEO_SOURCE_BASE_S       stVideoSrcBaseInfo;             /* 视频源基本信息 */
    UINT32                              udwPresetIndex;                 /* 云台预置位序号，只有是轮巡时才需要配置 */
    BYTE                                byRes[64];                      /* 保留字段 */
}NETDEV_XW_SEQ_RES_VIDEO_SRC_INFO_S, *LPNETDEV_XW_SEQ_RES_VIDEO_SRC_INFO_S;

/* 轮巡资源详细信息
轮巡间隔时间，单位：秒，只有是轮巡时才需要配置当前只支持轮巡间隔配置成一样的，即只会取第一个摄像机的轮巡间隔做为整个巡的时间间隔
*/
typedef struct tagNETDEVXWSequenceResDeTailInfo
{
    NETDEV_XW_SEQUENCE_RES_BASE_INFO_S      stSeqResBaseInfo;   /* 轮巡资源基本信息 */
    UINT32                                  udwIntervalTime;    /* 轮巡间隔时间，单位：秒 */
    UINT32                                  udwVideoSrcNum;     /* 组轮巡视频源个数 */
    LPNETDEV_XW_SEQ_RES_VIDEO_SRC_INFO_S    pstVideoInList;     /* 组轮巡视频源列表信息,内存由调用者维护, 规格参照能力集接口获取 */
    UINT32                                  udwManageType;      /* 资源管理类型，参见枚举NETDEV_XW_MANAGE_TYPE_E  */
    BYTE                                    byRes[124];         /* 保留字段 */
}NETDEV_XW_SEQUENCE_RES_DETAIL_INFO_S, *LPNETDEV_XW_SEQUENCE_RES_DETAIL_INFO_S;

/* 轮巡播放控制信息 */
typedef struct tagNETDEVXWSequencePlayControlInfo
{
    UINT32  udwSequenceResBindID;   /* 轮巡资源绑定信息ID */
    UINT32  udwOperation;           /* 操作命令类型 参见枚举NETDEV_XW_SEQUENCE_PLAY_CTRL_CMD_E */
    BYTE    byRes[128];             /* 保留字段 */
}NETDEV_XW_SEQUENCE_PLAY_CTRL_INFO_S, *LPNETDEV_XW_SEQUENCE_PLAY_CTRL_INFO_S;

/* 轮巡播放间隔信息 */
typedef struct tagNETDEVXWSequenceIntervalInfo
{
    UINT32  udwSequenceResBindID;   /* 轮巡资源绑定信息ID */
    UINT32  udwIntervalTime;        /* 播放间隔 单位：秒 */
    BYTE    byRes[128];             /* 保留字段 */
}NETDEV_XW_SEQUENCE_INTERVAL_INFO_S, *LPNETDEV_XW_SEQUENCE_INTERVAL_INFO_S;


/* 场景计划定时切换模式信息 */
typedef struct tagNETDEVXWScenesPlanTimerInfo
{
    UINT32  udwIntervalTime;        /* 时间间隔 单位：秒 */
    UINT32  udwSceneNum;            /* 场景个数 */
    UINT32* pudwSceneIDList;        /* 场景ID列表，内存由用户维护 */
    BYTE    byRes[64];              /* 保留字段 */
}NETDEV_XW_SCENES_PLAN_TIMER_INFO_S, *LPNETDEV_XW_SCENES_PLAN_TIMER_INFO_S;

/* 24小时时间表配置信息 */
typedef struct tagNETDEVXWTimeTableInfo
{
    UINT32  udwSceneID;                     /* 场景ID */
    CHAR    szStartTime[NETDEV_LEN_16];     /* 启动时间 hh:mm:ss */
    BYTE    byRes[64];                      /* 保留字段 */
}NETDEV_XW_TIME_TABLE_INFO_S, *LPNETDEV_XW_TIME_TABLE_INFO_S;

/* 场景计划时间表模式信息,24小时计划表 */
typedef struct tagNETDEVXWScenesPlanTimeTableInfo
{
    UINT32                          udwTimePeriodNum;               /* 时间分段个数 */
    LPNETDEV_XW_TIME_TABLE_INFO_S   pstTimeTableList;               /* 计划时间表信息，内存由用户维护，大小由udwTimePeriodNum指定 */
    BYTE                            byRes[64];                      /* 保留字段 */
}NETDEV_XW_SCENES_PLAN_TIME_TABLE_INFO_S, *LPNETDEV_XW_SCENES_PLAN_TIME_TABLE_INFO_S;

/* 场景轮巡计划基本信息 */
typedef struct tagNETDEVXWScenesPlanInfo
{
    UINT32                                      udwID;                          /* 计划ID */
    CHAR                                        szName[NETDEV_LEN_64];          /* 计划名称 */
    UINT32                                      udwOrderNo;                     /* 计划序号 */
    CHAR                                        szDescription[NETDEV_LEN_256];  /* 计划描述信息 */
    UINT32                                      udwStatus;                      /* 计划状态 参见NETDEV_XW_SEQUENCE_RES_STATUS_E */
    UINT32                                      udwMode;                        /* 计划方式 参见NETDEV_XW_SCENES_PLAN_MODE_E */
    NETDEV_XW_SCENES_PLAN_TIMER_INFO_S          stTimerInfo;                    /* 定时切换模式信息 */
    NETDEV_XW_SCENES_PLAN_TIME_TABLE_INFO_S     stTimeTableInfo;                /* 时间表模式切换信息 */
    BYTE                                        byRes[124];                     /* 保留字段 */
}NETDEV_XW_SCENES_PLAN_INFO_S, *LPNETDEV_XW_SCENES_PLAN_INFO_S;

/* 场景轮巡计划播放控制信息 */
typedef struct tagNETDEVXWScenesSeqPlanPlayCtrlInfo
{
    UINT32  udwScenesSeqPlanID;     /* 场景轮巡计划ID */
    UINT32  udwOperation;           /* 操作命令类型 参见枚举NETDEV_XW_SEQUENCE_PLAY_CTRL_CMD_E */
    BYTE    byRes[128];             /* 保留字段 */
}NETDEV_XW_SCENES_PLAN_PLAY_CTRL_INFO_S, *LPNETDEV_XW_SCENES_PLAN_PLAY_CTRL_INFO_S;

/**
 * @struct tagNETDEVDevFaceCapInfo
 * @brief 人脸识别能力集 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVDevFaceCapInfo
{
    BOOL   bIsFaceRecognitionSupported;     /* 是否支持人脸识别能力 0不支持 1支持 */
    BYTE   byRes[255];                      /* 保留字段 */
}NETDEV_DEV_FACE_CAP_INFO_S, *LPNETDEV_DEV_FACE_CAP_INFO_S;


/**
 * @struct tagNETDEVCIQuotaChannelInfoList
 * @brief 硬盘容量策略  
 * @attention 无None
 */
typedef struct tagNETDEVCIQuotaChannelInfoList
{
    UINT32 udwNums;                         /* 复制的视频输入通道数目*/
    UINT32 audwChannels[NETDEV_LEN_1024];      /*复制的视频输入通道ID列表*/

}NETDEV_QUOTA_CHANNE_INFO_S,*LPNETDEV_QUOTA_CHANNE_INFO_S;

/**
 * @struct tagNETDEVCISetQuotaInfo
 * @brief 硬盘容量策略    
 * @attention 无None
 */
typedef struct tagNETDEVCISetQuotaInfo
{
    UINT32 udwRecordQuota;                  /* 通道录像配额容量(GB)*/
    UINT32 udwPictureQuota;                 /*通道抓图配额容量(GB)*/
    UINT32 udwGroupID;                      /*盘组ID号*/
    NETDEV_QUOTA_CHANNE_INFO_S stCopyTo;    /*复制的视频通道列表*/
}NETDEV_SET_QUOTA_INFO_S,*LPNETDEV_SET_QUOTA_INFO_S;

/**
 * @struct tagNETDEVCIGetQuotainolist
 * @brief 硬盘容量策略  
 * @attention 无None
 */
typedef struct tagNETDEVCIGetQuotaInfo
{
    UINT32 udwChannelID;                    /* 通道ID*/  
    CHAR   szChannelName[NETDEV_LEN_64];    /* 通道名称 */
    CHAR   szDeviceName[NETDEV_LEN_64];     /* 设备名称 */
    UINT32 udwRecordQuota;                  /* 通道录像配额容量(GB)*/       
    UINT32 udwPictureQuota;                 /*通道抓图配额容量(GB)*/
    UINT32 udwGroupID;                      /*盘组ID号*/
    UINT32 udwOrgID;                        /*组织ID号*/
}NETDEV_QUOTA_INFO_S,*LPNETDEV_QUOTA_INFO_S;

/**
 * @struct tagNETDEVCIGetQuotainolist
 * @brief 硬盘容量策略    
 * @attention 无None
 */
typedef struct tagNETDEVCIGetQuotainolist
{
    UINT32                  udwNums;                        /* 配额信息总数*/
    NETDEV_QUOTA_INFO_S     astQuotas[NETDEV_LEN_1024];     /* 配额信息列表*/
}NETDEV_GET_QUOTA_INFOLIST_S,*LPNETDEV_GET_QUOTA_INFOLIST_S;

/**
* @enum tagNETDEVRAIDStatus
* @brief 阵列状态信息
* @attention 
*/
typedef struct tagNETDEVRAIDStatus
{
    BOOL    bEnabled;                   /* 阵列状态使能 0:不使能 1:使能 */
    BYTE    byRes[128];                 /* 保留字节 */
}NETDEV_RAID_STATUS_S, *LPNETDEV_RAID_STATUS_S;

/**
 * @struct tagNETDEVHDDInfo
 * @brief 硬盘信息 HDD info
 * @attention 无 None
 */
typedef struct tagNETDEVHDDInfo
{
    UINT32  udwID;                          /* 磁盘编号 */
    UINT32  udwType;                        /* 磁盘类型 参见枚举#NETDEV_HDD_TYPE_E */
    UINT32  udwWorkMode;                    /* 磁盘工作模式 参见枚举#NETDEV_HDD_WORK_MODE_E */
    UINT32  udwTotalCapacity;               /* 硬盘总容量(MB) Total Capacity */
    CHAR    szRAIDName[NETDEV_LEN_64];      /* 阵列名称 */
    UINT32  udwStatus;                      /* 磁盘状态 参见枚举#NETDEV_HDD_STATUS_E */
    CHAR    szManufacturer[NETDEV_LEN_64];  /* 厂商名称 */
    BYTE    byRes[128];                     /* 保留字节 */
}NETDEV_HDD_INFO_S,*LPNETDEV_HDD_INFO_S;

/**
 * @struct tagNETDEVHDDInfoList
 * @brief 磁盘信息列表 Disk info list
 * @attention 无 None
 */
typedef struct tagNETDEVHDDInfoList
{
    INT32               dwSize;                             /* 硬盘个数 Disk number */
    NETDEV_HDD_INFO_S   astHDDInfo[NETDEV_LEN_32];          /* 硬盘信息 Disk info */
    BYTE                byRes[128];                         /* 保留字节 */
}NETDEV_HDD_INFO_LIST_S,*LPNETDEV_HDD_INFO_LIST_S;

/**
 * @struct tagNETDEVStorageContainerInfo
 * @brief 存储容器信息 Storage Container info
 * @attention 无 None
 */
typedef struct tagNETDEVStorageContainerInfo
{
    UINT32  udwID;                              /* 磁盘编号 */
    UINT32  udwRemainCapacity;                  /* 存储容器剩余容量(MB) */
    UINT32  udwTotalCapacity;                   /* 存储容器总容量(MB) */
    CHAR    szManufacturer[NETDEV_LEN_64];      /* 厂商名称 */
    UINT32  udwStatus;                          /* 存储容器状态 参见枚举#NETDEV_STORAGE_CONTAINER_STATUS_E */
    UINT32  udwProperty;                        /* 存储盘属性,当udwStatus为0时无效 参见枚举#NETDEV_STORAGE_CONTAINER_PROPERTY_E */
    UINT32  udwFormatProgress;                  /* 格式化进度，百分比 */
    UINT32  udwGroupID;                         /* 盘组序号 */
    UINT32  udwTemperature;                     /* 硬盘温度(摄氏度) */
    BYTE    byRes[124];                         /* 保留字节 */
}NETDEV_STORAGE_CONTAINER_INFO_S,*LPNETDEV_STORAGE_CONTAINER_INFO_S;

/**
 * @struct tagNETDEVExtendStorageContainerInfo
 * @brief 扩展存储容器信息 extend Storage Container info
 * @attention 无 None
 */
typedef struct tagNETDEVExtendStorageContainerInfo
{
    UINT32  udwID;                              /* 磁盘编号 */
    UINT32  udwRemainCapacity;                  /* 存储容器剩余容量(MB) */
    UINT32  udwTotalCapacity;                   /* 存储容器总容量(MB) */
    UINT32  udwAddressType;                     /* IP地址类型,参见枚举#NETDEV_ADDR_TYPE_E */
    CHAR    szIPAddress[NETDEV_LEN_64];         /* 服务器IP地址 */
    CHAR    szPath[NETDEV_LEN_256];             /* NAS服务器存储路径 */
    UINT32  udwUsageType;                       /* 用途,参见枚举#NETDEV_STORAGE_CONTAINER_USAGE_TYPE_E */
    UINT32  udwStatus;                          /* 存储容器状态 参见枚举#NETDEV_STORAGE_CONTAINER_STATUS_E */
    UINT32  udwProperty;                        /* 存储盘属性,当udwStatus为0时无效 参见枚举#NETDEV_STORAGE_CONTAINER_PROPERTY_E */
    UINT32  udwFormatProgress;                  /* 格式化进度，百分比 */
    UINT32  udwGroupID;                         /* 盘组序号 */
    BYTE    byRes[128];                         /* 保留字节 */
}NETDEV_EXTEND_STORAGE_CONTAINER_INFO_S,*LPNETDEV_EXTEND_STORAGE_CONTAINER_INFO_S;

/**
 * @struct tagNETDEVStorageContainerInfoList
 * @brief 存储容器信息列表 Storage Container info List
 * @attention 无 None
 */
typedef struct tagNETDEVStorageContainerInfoList
{
    UINT32                                  udwLocalHDDNum;                                                 /* 本地硬盘数量 */
    NETDEV_STORAGE_CONTAINER_INFO_S         astLocalHDDList[NETDEV_LOCAL_DISK_MAX_NUM];                     /* 本地存储盘信息列表 */
    UINT32                                  udwSDNum;                                                       /* SD卡数量 */
    NETDEV_STORAGE_CONTAINER_INFO_S         astSDList[NETDEV_SD_CARD_DISK_MAX_NUM];                         /* SD卡信息列表 */
    UINT32                                  udwArrayNum;                                                    /* 阵列数量 */
    NETDEV_STORAGE_CONTAINER_INFO_S         astArrayList[NETDEV_ARRAY_MAX_NUM];                             /* 阵列信息列表 */
    UINT32                                  udwExtendCabinet1HDDNum;                                        /* 拓展柜-1存储盘数量 */
    NETDEV_STORAGE_CONTAINER_INFO_S         astExtendCabinet1HDDList[NETDEV_EXTEND_CABINET_DISK_MAX_NUM];   /* 拓展柜-1 信息列表 */
    UINT32                                  udwExtendCabinet2HDDNum;                                        /* 拓展柜-2存储盘数量 */
    NETDEV_STORAGE_CONTAINER_INFO_S         astExtendCabinet2HDDList[NETDEV_EXTEND_CABINET_DISK_MAX_NUM];   /* 拓展柜-2 信息列表 */
    UINT32                                  udwNASNum;                                                      /* NAS数量 */
    NETDEV_EXTEND_STORAGE_CONTAINER_INFO_S  astNASList[NETDEV_NAS_MAX_NUM];                                 /* NAS信息列表 */
    UINT32                                  udweSATANum;                                                    /* eSATA硬盘数量 */
    NETDEV_EXTEND_STORAGE_CONTAINER_INFO_S  asteSATAList[NETDEV_ESATA_MAX_NUM];                             /* eSATA信息列表 */
    UINT32                                  udwIPSANNum;                                                    /* IPSAN数量 */
    NETDEV_EXTEND_STORAGE_CONTAINER_INFO_S  astIPSANList[NETDEV_IPSAN_MAX_NUM];                             /* IPSAN信息列表 */
    BYTE                                    byRes[256];                                                     /* 保留字节 */
}NETDEV_STORAGE_CONTAINER_INFO_LIST_S,*LPNETDEV_STORAGE_CONTAINER_INFO_LIST_S;

/**
 * @struct tagNETDEVHDDSmartDetailsInfo
 * @brief 硬盘Smart详细信息
 * @attention 无 None
 */
typedef struct tagNETDEVHDDSmartDetailsInfo
{
    UINT32  udwAttributeID;                     /* 属性ID */
    CHAR    szAttributeName[NETDEV_LEN_64];     /* 属性名称 */
    UINT32  udwStatus;                          /* 状态 参见枚举#NETDEV_HDD_SMART_ASSESSMENT_STATUS_E */
    UINT32  udwHex;                             /* 显示为十六进制 */
    UINT32  udwThresh;                          /* 阈值 */
    UINT32  udwCurrentValue;                    /* 当前值 */
    UINT32  udwWorstValue;                      /* 最差值 */
    UINT32  udwActualValue;                     /* 实际值 */
    BYTE    byRes[128];                         /* 保留字节 */
}NETDEV_HDD_SMART_DETAILS_INFO_S,*LPNETDEV_HDD_SMART_DETAILS_INFO_S;

/**
 * @struct tagNETDEVHDDSmartCheckInfo
 * @brief 硬盘Smart检测信息
 * @attention 无 None
 */
typedef struct tagNETDEVHDDSmartCheckInfo
{
    UINT32                          udwID;                                  /* 存储容器编号 */
    UINT32                          udwType;                                /* 检测类型 参见枚举# NETDEV_HDD_SMART_CHECK_TYPE_E */
    BYTE                            byRes[128];                             /* 保留字节 */
}NETDEV_HDD_SMART_CHECK_INFO_S,*LPNETDEV_HDD_SMART_CHECK_INFO_S;

/**
 * @struct tagNETDEVPhotoServerCfgInfo
 * @brief 照片接收服务器配置信息
 * @attention 无 None
 */
typedef struct tagNETDEVPhotoServerCfgInfo
{
    UINT32                          udwProtocol;                                          /* 通信协议类型 参见：NETDEV_PHOTO_SERVER_PRO_TYPE_E*/
    UINT32                          udwSubProtocol;                                       /* 通信协议子类型 参见：NETDEV_PHOTO_SERVER_SUBPRO_TYPE_E，仅在udwProtocol为1、31时有效*/
    UINT32                          udwPort;                                              /* TMS服务器端口号 [0,65535] */
    CHAR                            szIPV4Address[NETDEV_IPADDR_STR_MAX_LEN];             /* TMS服务器IPv4地址*/
    CHAR                            szTollgateID[NETDEV_LEN_64];                          /* 卡口编号(0, 36]; 可选字段，接口不携带该字段时表示不更新该字段 */
    CHAR                            szCameraID[NETDEV_LEN_64];                            /* 相机编号(0, 36];可选字段，接口不携带该字段时表示不更新该字段*/

    BYTE                            byRes[128];                                           /* 保留字节 */
}NETDEV_PHOTO_SERVER_CFG_INFO_S,* LPNETDEV_PHOTO_SERVER_CFG_INFO_S;

/**
 * @struct tagNETDEVPhotoServerCfgInfoList
 * @brief 照片接收服务器配置信息列表
 * @attention 无 None
 */
typedef struct tagNETDEVPhotoServerCfgInfoList
{
    UINT32                          udwNum;                                               /* 照片服务器数量 当前支持数量为2 */
    NETDEV_PHOTO_SERVER_CFG_INFO_S    astPhotoServerList[NETDEV_PHOTO_SERVER_MAX_NUM];    /* 照片服务器配置列表 */

    BYTE                            byRes[512];                                           /* 保留字节 */
}NETDEV_PHOTO_SERVER_CFG_INFO_LIST_S,* LPNETDEV_PHOTO_SERVER_CFG_INFO_LIST_S;

/**
* @enum tagNETDEVDataServerProtocolType
* @brief 智能服务器接入协议类型 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVDataServerProtocolType
{
    NETDEV_DATA_SERVER_PROTOCOL_TYPE_TCP_UNVV1   = 1,   /* TCP传输: 宇视V2（对应当前tms） */

    NETDEV_DATA_SERVER_PROTOCOL_TYPE_TFTP_COMMOM = 4,   /* FTP传输: 通用FTP  */

    NETDEV_DATA_SERVER_PROTOCOL_TYPE_HTTP_GA     = 51   /* HTTP传输: 视图库 */

}NETDEV_DATA_SERVER_PROTOCOL_TYPE_E;

/**
* @enum tagNETDEVManagerServerProtocolType
* @brief 管理服务器接入协议类型 枚举定义
 * @attention 无 None
 */
typedef enum tagNETDEVManagerServerProtocolType
{
    NETDEV_MANAGER_SERVER_PROTOCOL_TYPE_IMOS   = 0,  /* IMOS */
    NETDEV_MANAGER_SERVER_PROTOCOL_TYPE_GB     = 1,  /* 国标 */
    NETDEV_MANAGER_SERVER_PROTOCOL_TYPE_NONE   = 2,  /* 无 */
    NETDEV_MANAGER_SERVER_PROTOCOL_TYPE_VISS   = 3,  /* VISS */
    NETDEV_MANAGER_SERVER_PROTOCOL_TYPE_LY     = 4   /* 立元 */
}NETDEV_MANAGER_SERVER_PROTOCOL_TYPE_E;

/**
 * @struct tagNETDEVServerUserInfo
 * @brief 服务器用户信息
 * @attention 
 */
typedef struct tagNETDEVServerUserInfo
{
    CHAR                            szUserName[NETDEV_USERNAME_LEN];    /* 用户名[1,32] */
    BOOL                            bModifyPasswd;                      /* 是否需修改密码 0:不修改 1:修改*/
    CHAR                            szPasswd[NETDEV_PASSWORD_LEN];      /* 平台接入密码 [0,32] 空密码则下发空字符串 */
    BYTE                            byRes[256];                         /* 保留字段 */
}NETDEV_SERVER_USER_INFO_S, *LPNETDEV_SERVER_USER_INFO_S;

/**
 * @struct tagNETDEVDataServerInfo
 * @brief 智能服务器配置信息
 * @attention 
 */
typedef struct tagNETDEVDataServerInfo
{
    UINT32                          udwIndex;                                           /* 智能服务器索引 从0开始 */
    BOOL                            bEnable;                                            /* 智能服务器使能开关 */
    UINT32                          udwProtocol;                                        /* 通信协议类型 目前只支持： 1:TCP传输(宇视V2 TMS) 见# NETDEV_DATA_SERVER_PROTOCOL_TYPE_E */
    CHAR                            szCameraID[NETDEV_LEN_128];                         /* 相机编号(0, 36] 长度为0代表不修改*/
    CHAR                            szTollgateID[NETDEV_LEN_128];                       /* 卡口编号(0, 36] 长度为0代表不修改 */
    CHAR                            szServerAddr[NETDEV_LEN_32];                        /* 服务器IPv4地址 */
    UINT32                          udwServerPort;                                      /* 服务器端口 */
    CHAR                            szDrivewayID[NETDEV_LEN_64];                        /* 道路编号 IPC支持 */
    CHAR                            szDirectionID[NETDEV_LEN_64];                       /* 方向编号 IPC支持 */
    CHAR                            szDeviceID[NETDEV_LEN_64];                          /* 设备编号 IPC支持 */
    CHAR                            szAreaId[NETDEV_LEN_64];                            /* 管辖区域 IPC支持 */
    NETDEV_SERVER_USER_INFO_S       stServerUserInfo;                                   /* 用户信息 */
    BYTE                            byRes[256];                                         /* 保留字段 */
}NETDEV_DATA_SERVER_INFO, *LPNETDEV_DATA_SERVER_INFO;

/**
 * @struct tagNETDEVDataServerList
 * @brief 智能服务器配置列表
 * @attention 
 */
typedef struct tagNETDEVDataServerList
{
    UINT32                          udwNum;                                               /* 智能服务器个数 当前支持数量为2 */
    NETDEV_DATA_SERVER_INFO         astDataServerList[NETDEV_INTELLIGENT_SERVER_MAX_NUM]; /* 智能服务器列表 */
    BYTE                            byRes[128];                                           /* 保留字段 */
}NETDEV_DATA_SERVER_LIST, *LPNETDEV_DATA_SERVER_LIST;

/**
 * @struct tagNETDEVManagerServerInfo
 * @brief 管理服务器配置信息
 * @attention 
 */
typedef struct tagNETDEVManagerServerInfo
{
    UINT32                          udwIndex;                                           /* 管理服务器索引 从0开始 */
    UINT32                          udwMngProtocol;                                     /* 通信协议类型 见# NETDEV_MANAGER_SERVER_PROTOCOL_TYPE_E */
    CHAR                            szDeviceID[NETDEV_LEN_64];                          /* 前端设备的设备ID[1, 32] */
    CHAR                            szServerID[NETDEV_LEN_64];                          /* 注册服务器ID [1, 32] */
    CHAR                            szDeviceName[NETDEV_DEV_NAME_LEN_MAX];              /* 设备名称[0, 20] */
    CHAR                            szRegPassword[NETDEV_LEN_32];                       /* 注册服务器密码(0, 16] */
    CHAR                            szVideoChlID[NETDEV_LEN_64];                        /* 视频通道ID[0,32] */
    CHAR                            szAudioChlID[NETDEV_LEN_64];                        /* 音频通道ID[0,32] */
    UINT32                          udwExpire;                                          /* 注册有效期[3600,36000]秒 */
    CHAR                            szAddress[NETDEV_IPADDR_STR_MAX_LEN];               /* 服务器IPv4地址 */
    UINT32                          udwPort;                                            /* 服务器端口 */
    BYTE                            byRes[256];                                         /* 保留字段 */
}NETDEV_MANAGER_SERVER_INFO_S, *LPNETDEV_MANAGER_SERVER_INFO_S;

/**
 * @struct tagNETDEVManagerServerList
 * @brief 管理服务器配置列表
 * @attention 
 */
typedef struct tagNETDEVManagerServerList
{
    UINT32                          udwNum;                                               /* 管理服务器个数 当前支持数量为2 */
    NETDEV_MANAGER_SERVER_INFO_S    astManagerServerList[NETDEV_MANAGER_SERVER_MAX_NUM];  /* 管理服务器列表 */
    BYTE                            byRes[128];                                           /* 保留字段 */
}NETDEV_MANAGER_SERVER_LIST_S, *LPNETDEV_MANAGER_SERVER_LIST_S;

/**
 * @struct tagNETDEVVisibleRangeInfo
 * @brief 可视域参数信息
 * @attention 
 */
typedef struct tagNETDEVVisibleRangeInfo
{
    DOUBLE                          dAzimuthHorizontal;                                 /* 水平方位角度（可视域在水平界面上投影的夹角的中轴线与水平面基准轴的角的角度）单位:弧度表示 范围:[-1.0000,+1.0000] */
    DOUBLE                          dAzimuthVertical;                                   /* 垂直方位角度（可视域在垂直面上投影的夹角的中轴线与垂直面上基准轴的角的角度）单位:弧度表示精确到小数点后4位 范围:[-1.0000,+1.0000] */
    DOUBLE                          dInclinationHorizontal;                             /* 水平倾斜角度（设备水平基准面与水平面的夹角） 单位:弧度表示精确到小数点后4位 范围:[-1.0000,+1.0000] */
    DOUBLE                          dAngelHorizontal;                                   /* 水平可视角度 单位:度精确到小数点后4位 */
    DOUBLE                          dAngelVertical;                                     /* 垂直可视角度 单位:度精确到小数点后4位 */
    DOUBLE                          dDistance;                                          /* 可视距离 单位:米精确到小数点后4位 */
    DOUBLE                          dInstallationHeight;                                /* 安装高度 单位：米，精确到小数点后4位 */
    BYTE                            byRes[248];                                         /* 保留字段 */
}NETDEV_VISIBLE_RANGE_INFO_S, *LPNETDEV_VISIBLE_RANGE_INFO_S;


/**
 * @struct tagNETDEVCustomProSimpleInfo
 * @brief 自定义协议配置信息
 * @attention 无 None
 */
typedef struct tagNETDEVCustomProSimpleInfo
{
    UINT32                                          udwProID;                                       /* 自定义协议号, 必填 */
    CHAR                                            szProName[NETDEV_LEN_64];                       /* 自定义协名称[0, 64] */
    BYTE                                            byRes[128];                                     /* 保留字节 */
}NETDEV_CUSTON_PROTOCOL_SIMPLE_INFO_S,* LPNETDEV_CUSTON_PROTOCOL_SIMPLE_INFO_S;

/**
 * @struct tagNETDEVCustomProSimpleInfoList
 * @brief 自定义协议配置单例信息列表
 * @attention 无 None
 */
typedef struct tagNETDEVCustomProSimpleInfoList
{
    UINT32                                          udwNum;                                         /* 自定义协议数量, 当前最大支持64 */
    NETDEV_CUSTON_PROTOCOL_SIMPLE_INFO_S            astCustomProSimpleList[NETDEV_LEN_64];          /* 自定义协议列表 */
    BYTE                                            byRes[512];                                     /* 保留字节 */
}NETDEV_CUSTON_PROTOCOL_SIMPLE_INFO_LIST_S,* LPNETDEV_CUSTON_PROTOCOL_SIMPLE_INFO_LIST_S;

/*
 * @struct tagNETDEVCustomStreamInfo
 * @brief 自定义流协议信息
 * @attention 无 None
 */
typedef struct tagNETDEVCustomStreamInfo
{
    UINT32                                          udwEnable;                                      /* 1:使能; 0:不使能 */
    CHAR                                            szProName[NETDEV_LEN_128];                      /* 流URL地址[0, 128] */

    BYTE                                            byRes[512];                                     /* 保留字节 */
}NETDEV_CUSTON_STREAM_INFO_S,* LPNETDEV_CUSTON_STREAM_INFO_S;

/**
 * @struct tagNETDEVCustomProInfo
 * @brief 自定义协议信息
 * @attention 无 None
 */
typedef struct tagNETDEVCustomProInfo
{
    UINT32                                          udwTransport;                                   /* 传输模式, 参见枚举 NETDEV_TRANS_PROTOCOL_E */
    UINT32                                          udwPort;                                        /* 端口 */
    NETDEV_CUSTON_PROTOCOL_SIMPLE_INFO_S            stCustomProSimpleInfo;                          /* 自定义协议配置信息 */
    NETDEV_CUSTON_STREAM_INFO_S                     stMainStream;                                   /* 主流协议信息 */
    NETDEV_CUSTON_STREAM_INFO_S                     stSubStream;                                    /* 辅流协议信息 */
    NETDEV_CUSTON_STREAM_INFO_S                     stThirdStream;                                  /* 三流协议信息 */

    BYTE                                            byRes[512];                                     /* 保留字节 */
}NETDEV_CUSTON_PROTOCOL_INFO_S,* LPNETDEV_CUSTON_PROTOCOL_INFO_S;

/**
 * @struct tagNETDEVHDDSmartInfo
 * @brief 硬盘Smart信息
 * @attention 无 None
 */
typedef struct tagNETDEVHDDSmartInfo
{
    UINT32                          udwID;                                  /* IN 存储容器编号 */
    CHAR                            szManufacturer[NETDEV_LEN_64];          /* 厂商名称 */
    UINT32                          udwTemperature;                         /* 温度(℃) */
    CHAR                            szDeviceModel[NETDEV_LEN_64];           /* 硬盘型号 */
    UINT32                          udwUsedDays;                            /* 使用天数 */
    UINT32                          udwHealthAssessment;                    /* 整体评估结果 参见枚举#NETDEV_HDD_HEALTH_ASSESSMENT_STATUS_E */
    CHAR                            szFirmware[NETDEV_LEN_64];              /* 硬盘固件版本 */
    UINT32                          udwSmartNum;                            /* Smart详情项数量 */
    NETDEV_HDD_SMART_DETAILS_INFO_S SmartDetailsInfoList[NETDEV_DISK_SMART_MAX_NUM];    /* Smart详情项列表 */
    BOOL                            bCheckResult;                           /* 自我评估结果, TRUE 通过，FALSE 未通过 */
    UINT32                          udwCheckPrograss;                       /* 检测进度 [0,100] */
    UINT32                          udwCheckStatus;                         /* 检测状态 参见枚举#NETDEV_HDD_SMART_CHECK_STATUS_E */
    UINT32                          udwCheckType;                           /* 检测类型 参见枚举#NETDEV_HDD_SMART_CHECK_TYPE_E */
    BYTE                            byRes[128];                             /* 保留字节 */
}NETDEV_HDD_SMART_INFO_S,*LPNETDEV_HDD_SMART_INFO_S;

/*
* @struct tagDNSAddress
* @brief DNS地址
* @attention 无 None
*/
typedef struct tagDNSAddress
{
    UINT32  udwAddressType;                 /*IP地址类型 0: IPv4  1: IPv6 3: IPv4和IPv6都需要 当前仅支持IPv4 */
    CHAR   szIPAddress[NETDEV_LEN_64];      /*IPv4地址*/
    CHAR   szIPv6Address[NETDEV_LEN_64];    /*IPv6地址*/
    BYTE   byRes[128];                      /* 保留字  Reserved */
}NETDEV_DNS_ADDRESS_S, *LPNETDEV_DNS_ADDRESS_S;


/*
* @struct tagNETDEVDNSInfo
* @brief 设备DNS信息 device DNS Info
* @attention 无 None
*/
typedef struct tagNETDEVDNSInfo
{
    UINT32                  udwNum;                             /*DNS地址数量*/
    NETDEV_DNS_ADDRESS_S    astDNSList[NETDEV_DNS_LIST_NUM];    /*DNS地址列表，第1个为首要地址，第2个为次选地址。当前只支持2个*/
    BYTE                    byRes[128];                         /* 保留字  Reserved */
}NETDEV_DNS_INFO_S, *LPNETDEV_DNS_INFO_S;

/*
* @struct tagIpv6Addressinfo
* @brief IPV6详细地址信息
* @attention 无 None
*/
typedef struct tagIpv6Addressinfo
{
    UINT32  udwPrefixLenth;             /*子网前缀长度，范围为[3,127]*/
    CHAR    szAddress[NETDEV_LEN_64];   /*IP地址*/
    CHAR    szGateway[NETDEV_LEN_64];   /*默认网关*/

}NETDEV_IPV6_ADDRESS_INFO_S, *LPNETDEV_IPV6_ADDRESS_INFO_S;
/*
* @struct tagNetWorkIpv6info
* @brief 网卡信息中IPV6信息
* @attention 无 None
*/
typedef struct tagNetWorkIpv6info
{
    UINT32                      udwIPGetType;                           /*IP获取方式*/
    UINT32                      udwAddressNum;                          /*IP地址个数*/
    NETDEV_IPV6_ADDRESS_INFO_S  astIPv6AddressInfo[NETDEV_LEN_8];       /*IPv6信息，如果不支持IPv6，则该节点可选*/

}NETDEV_NETWORK_IPV6_INFO_S, *LPNETDEV_NETWORK_IPV6_INFO_S;

/*
* @struct tagIpv4Addressinfo
* @brief IPV4详细地址信息
* @attention 无 None
*/
typedef struct tagIpv4Addressinfo
{
    CHAR   szAddress[NETDEV_LEN_64];                /*IP地址*/
    CHAR   szNetmask[NETDEV_LEN_64];                /*子网掩码*/
    CHAR   szGateway[NETDEV_LEN_64];                /*默认网关*/

}NETDEV_IPV4_ADDRESS_INFO_S, *LPNETDEV_IPV4_ADDRESS_INFO_S;
/*
* @struct tagIpv4info
* @brief 网卡信息中IPV4信息
* @attention 无 None
*/
typedef struct tagNetWorkIpv4info
{
    UINT32                      udwIPGetType;                       /*IP获取方式 0：for static 1：for PPPOE2：for DHCP*/
    CHAR                        szLoginName[NETDEV_LEN_64];         /*PPPoE账号*/
    CHAR                        szPIN[NETDEV_LEN_128];              /*PPPOE密码（MD5加密）*/
    UINT32                      udwAddressNum;                      /*IP地址个数*/
    NETDEV_IPV4_ADDRESS_INFO_S  astIPv4AddressInfo[NETDEV_LEN_8];   /*IPv4信息，如果不支持IPv4，则该节点可选*/

}NETDEV_NETWORK_IPV4_INFO_S, *LPNETDEV_NETWORK_IPV4_INFO_S;

/*
* @struct tagNETDEVNetworkInterfaceInfo
* @brief 网卡的详细信息
* @attention 无 None
*/
typedef struct tagNETDEVNetworkInterfaceInfo
{
    UINT32              udwID;                                             /*网卡编号对VMS、IPC从1开始 对NVR该字段是资源编码*/
    CHAR                szName[NETDEV_NAME_MAX_LEN];                       /*网卡名称，NVR、IPC支持*/
    UINT32              udwWorkMode;                                       /*网卡工作模式 0：多址设定 1：负载均衡  2：网络容错*/
    BOOL                bIsInnerNIC;                                       /*是否为内部网卡*/
    CHAR                szInnerNICIPAddress[NETDEV_IPADDR_STR_MAX_LEN];    /*内部网卡IP地址*/
    CHAR                szInnerNICNetmask[NETDEV_IPADDR_STR_MAX_LEN];      /*内部网卡网络掩码；该字段不可配置，仅供查询*/
    CHAR                szInnerNICName[NETDEV_NAME_MAX_LEN];               /*内部网卡名称；该字段不可配置，仅供查询*/
    UINT32              udwMTU;                                            /*MTU长度，范围[576,1500]*/
    CHAR                szMAC[NETDEV_NETWORK_MACNAME_LEN];                 /*MAC地址，只读属性，字符串长度范围[0, 48]*/
    UINT32              udwNegotiationMode;                                /*网口工作模式*/
    NETDEV_NETWORK_IPV4_INFO_S stIPV4Infos;                                /*IPv4信息，如果不支持IPv4，则该节点可选*/
    NETDEV_NETWORK_IPV6_INFO_S stIPV6Infos;                                /*IPv6信息，如果不支持IPv6，则该节点可选*/
    BYTE                byRes[128];                                        /* 保留字  Reserved */
}NETDEV_NETWORK_INTERFACE_INFO_S, *LPNETDEV_NETWORK_INTERFACE_INFO_S;

/*
* @struct tagNETDEVNetworkCardsInfo
* @brief 查询设备所有网卡的配置信息。
* @attention 无 None
*/
typedef struct tagNETDEVNetworkCardsInfo
{
    UINT32                              udwNum;                                     /*网卡个数*/
    UINT32                              udwDefaultRouteNIC;                         /*作默认路由的网卡ID，当存在多张网卡（不含内部网卡）时必选*/
    UINT32                              udwWorkMode;                                /*网卡工作模式 0：多址设定 1：负载均衡  2：网络容错*/
    NETDEV_NETWORK_INTERFACE_INFO_S     astNetworkInterfaceList[NETDEV_LEN_8];      /*网卡信息列表，当Num值为0时该节点可选*/
    BYTE                                byRes[128];                                 /* 保留字  Reserved */
}NETDEV_NETWORK_CARD_INFO_S, *LPNETDEV_NETWORK_CARD_INFO_S;



/**
* @struct tagNETDEVFGSubInfo
* @brief 速通门订阅信息
* @attention 无 None
*/
typedef struct tagNETDEVFGSubInfo
{
    UINT32 udwType;                         /* 订阅类型 详见枚举NETDEV_SUB_TYPE_E*/
    UINT32 udwLibIDNum;                     /* 订阅的库ID数目 LibIDNum为16时 表示订阅所有库 */
    UINT32 audwLibIDList[NETDEV_LEN_32];    /* 订阅的库ID列表 */
    BYTE   byRes[128];                      /* 保留字节 */
}NETDEV_FG_SUB_INFO_S,*LPNETDEV_FG_SUB_INFO_S;

/**
* @struct tagNETDEVFGSubSuccInfo
* @brief 速通门订阅信息成功返回信息
* @attention 无 None
*/
typedef struct tagNETDEVFGSubSuccInfo
{
    UINT32 udwID;                   /* 订阅ID */
    UINT32 udwCurrrntTime;          /* 当前时间，UTC格式，单位秒 */
    UINT32 udwTerminationTime;      /* 结束时间，UTC格式，单位秒 */
    BYTE   byRes[128];              /* 保留字节 */
}NETDEV_FG_SUB_SUCC_INFO_S,*LPNETDEV_FG_SUB_SUCC_INFO_S;

/**
* @struct tagNETDEVFileInfo
* @brief 文件信息
* @attention 若udwSize不为0且pcData为空,则通过szUrl获取图片
*/
typedef struct tagNETDEVFileInfo
{
    CHAR   szName[NETDEV_LEN_64];   /* 文件名称 范围[1, 16]*/
    UINT32 udwSize;                 /* 文件大小[data或通过szurl获取到的图片大小(Base64编码后)] */
    UINT32 dwFileType;              /* 文件类型，详见枚举值：NETDEV_FILE_TYPE_E */
    UINT32 udwLastChange;           /* 最后修改时间，UTC时间，单位为s */
    CHAR   *pcData;                 /* 文件数据 Base64 需根据udwSize 动态申请内存*/
    CHAR   szUrl[NETDEV_LEN_512];   /* 图片URL，长度范围[0,256] */
    BYTE   byRes[128];              /* 保留字节 */
}NETDEV_FILE_INFO_S,*LPNETDEV_FILE_INFO_S;

/**
* @struct tagNETDEVFeatureInfo
* @brief 半结构化特征信息
* @attention 无 None
*/
typedef struct tagNETDEVFeatureInfo
{
    CHAR    szFeatureVersion[NETDEV_LEN_32];        /* 人脸半结构化特征提取算法版本号 [0, 20] */
    CHAR    szFeature[NETDEV_FACE_FEATURE_SIZE];    /* 基于人脸提取出来的特征信息 目前加密前512B */
    BYTE    byRes[128];                             /* 保留字节 */
}NETDEV_FEATURE_INFO_S,*LPNETDEV_FEATURE_INFO_S;

/**
* @struct tagNETDEVRegionInfo
* @brief 成员地区信息
* @attention 无 None
*/
typedef struct tagNETDEVRegionInfo
{
    CHAR szNation[NETDEV_LEN_128];          /* 国籍，范围[1-63] */
    CHAR szProvince[NETDEV_LEN_128];        /* 省份，范围[1-63] */
    CHAR szCity[NETDEV_LEN_128];            /* 城市，范围[1-63] */
    BYTE byRes[256];

}NETDEV_REGION_INFO_S, *LPNETDEV_REGION_INFO_S;

/**
* @enum tagNETDEVPersonTimeTemplateInfo
* @brief 时间模板相关信息
* @attention 无 None
*/
typedef struct tagNETDEVPersonTimeTemplateInfo
{
    UINT32 udwBeginTime;    /* 时间模板生效起始时间 若未配置，填写0 */
    UINT32 udwEndTime;      /* 时间模板生效结束时间 若未配置，填写4294967295(0xFFFFFFFF)*/
    UINT32 udwIndex;        /* 时间模板索引 */
    BYTE   byRes[128];      /* 保留字节 */
}NETDEV_PERSON_TIME_TEMPLATE_INFO_S,*LPNETDEV_PERSON_TIME_TEMPLATE_INFO_S;

/**
* @struct tagNETDEVIdentificationInfo
* @brief 成员证件信息
* @attention 无 None
*/
typedef struct tagNETDEVIdentificationInfo
{
    UINT32 udwType;                     /* 证件类型 详情参见枚举 NETDEV_ID_TYPE_E*/
    CHAR   szNumber[NETDEV_LEN_128];    /* 证件号，范围:[1, 127] */
    BYTE   byRes[32];                  /* 保留字节 */
}NETDEV_IDENTIFICATION_INFO_S,*LPNETDEV_IDENTIFICATION_INFO_S;

/**
* @struct tagNETDEVImageInfo
* @brief 人脸图片信息列表
* @attention 无 None
*/
typedef struct tagNETDEVImageInfo
{
    UINT32 udwFaceID;                   /* 人脸照片ID */
    NETDEV_FILE_INFO_S stFileInfo;      /* 照片信息 */
    UINT32 udwModelStatus;              /* 建模状态,详见枚举值: NETDEV_MODEL_STATUS_E  ModelStatus,See NETDEV_MODEL_STATUS_E for details*/
    
    BYTE   byRes[124];                  /* 保留字节 */
}NETDEV_IMAGE_INFO_S,*LPNETDEV_IMAGE_INFO_S;

/**
 * @struct tagNETDEVCustomValue
 * @brief 自定义属性信息
 * @attention 无 None
 */
typedef struct tagNETDEVCustomValue
{
    UINT32  udwID;                                         /* 自定义属性名称序号 从0开始*/
    CHAR    szValue[NETDEV_FACE_MEMBER_CUSTOM_LEN];        /* 自定义属性值 范围[1,63]*/
    UINT32  udwModelStatus;                                /* 建模状态,详见枚举值: NETDEV_MODEL_STATUS_E  ModelStatus,See NETDEV_MODEL_STATUS_E for details*/
    BYTE    byRes[124];                                    /* 保留字段  Reserved */
}NETDEV_CUSTOM_VALUE_S,*LPNETDEV_CUSTOM_VALUE_S;

/**
 * @struct tagNETDEVStaffInfo
 * @brief 员工信息
 * @attention 无 None
 */
typedef struct tagNETDEVStaffInfo
{
    CHAR   szNumber[NETDEV_LEN_32];                       /* 人员编号 字符串长度范围[1, 16] */
    CHAR   szBirthday[NETDEV_LEN_32];                     /* 出生日期 字符串长度范围[1,31] */
    UINT32 udwDeptID;                                     /* 部门ID */
    CHAR   szDeptName[NETDEV_LEN_256];                    /* 部门名称 添加时可不携带 字符串长度范围[1, 64] */
    BYTE   byRes[256];                                    /* 保留字段  Reserved */
}NETDEV_STAFF_INFO_S,*LPNETDEV_STAFF_INFO_S;

/**
 * @struct tagNETDEVVisitorInfo
 * @brief 访客信息
 * @attention 无 None
 */
typedef struct tagNETDEVVisitorInfo
{
    UINT32 udwVisitorCount;                               /* 访客人数 */
    CHAR   szCompany[NETDEV_LEN_256];                     /* 访客单位 字符串长度范围[1, 64] */
    UINT32 udwIntervieweeID;                              /* 被访者ID */
    BYTE   byRes[256];                                    /* 保留字段  Reserved */
}NETDEV_VISITOR_INFO_S,*LPNETDEV_VISITOR_INFO_S;

/**
* @struct tagNETDEVPersonInfo
* @brief 人员信息
* @attention 无 None
*/
typedef struct tagNETDEVPersonInfo
{
    UINT32                                  udwPersonID;                         /* 人员ID */
    UINT32                                  udwLastChange;                       /* 人员信息最后修改时间 */
    CHAR                                    szPersonName[NETDEV_LEN_256];        /* 人员名字 范围:[1, 63] */
    UINT32                                  udwGender;                           /* 成员性别 详情参见枚举NETDEV_GENDER_TYPE_E*/
    CHAR                                    szBirthday[NETDEV_LEN_64];           /* 成员出生日期，格式YYYYMMDD，范围[1,31] */
    NETDEV_REGION_INFO_S                    stRegionInfo;                        /* 成员地区信息 */
    UINT32                                  udwTimeTemplateNum;                  /* 时间模板数量 */
    LPNETDEV_PERSON_TIME_TEMPLATE_INFO_S    pstTimeTemplateList;                 /* 时间模板相关信息 需动态分配 */
    UINT32                                  udwIdentificationNum;                /* 证件信息个数 范围:[0, 6]*/
    NETDEV_IDENTIFICATION_INFO_S            stIdentificationInfo[NETDEV_LEN_8];  /* 成员证件信息 */
    UINT32                                  udwImageNum;                         /* 人脸图片个数 范围:[0, 6] */
    NETDEV_IMAGE_INFO_S                     stImageInfo[NETDEV_LEN_8];           /* 人脸图片信息列表 */
    UINT32                                  udwReqSeq;                           /* 请求数据序列号，此字段会在返回结果中待会，仅在批量添加中携带该字段 */
    BOOL                                    bIsMonitored;                        /* 是否已布控，获取时必带，仅VMS支持 */
    UINT32                                  udwBelongLibNum;                     /* 所属人员库数量，仅VMS支持 */
    UINT32                                 *pudwBelongLibList;                   /* 所属人员库ID列表，需动态分配内存，仅VMS支持 */
    UINT32                                  udwCustomNum;                        /* 自定义属性值数量，最多5个，仅VMS支持 */
    LPNETDEV_CUSTOM_VALUE_S                 pstCustomValueList;                  /* 自定义属性值列表，需动态分配内存，当Num为0时可以不填 */
    CHAR                                    szTelephone[NETDEV_LEN_64];          /* 联系电话 字符串长度[1,64] */
    CHAR                                    szAddress[NETDEV_LEN_256];           /* 地址 字符串长度范围[1, 64] */
    UINT32                                  udwCardNum;                          /* 门禁卡个数 取值范围[0,6],Get时携带 */
    UINT32                                  udwFingerprintNum;                   /* 指纹个数，取值范围[0,10] */
    UINT32                                  udwType;                             /* 人员类型 0：员工 1：访客 2：陌生人 */
    NETDEV_STAFF_INFO_S                     stStaff;                             /* 员工信息 Type为员工时必填 */
    NETDEV_VISITOR_INFO_S                   stVisitor;                           /* 访客信息 Type为访客时必填 */
    CHAR                                    szDesc[NETDEV_LEN_480];              /* 备注信息 字符串长度范围[1, 128] */
    CHAR                                    szPersonCode[NETDEV_LEN_16];         /* 人员编码，可填写学号或工号，范围:[1, 15] PTS支持 */
    CHAR                                    szRemarks[NETDEV_LEN_64];            /* 备注信息 范围:[1-63] PTS支持 */
    BYTE                                    byRes[176];                          /* 保留字节 */
}NETDEV_PERSON_INFO_S,*LPNETDEV_PERSON_INFO_S;

/**
* @struct tagNETDEVCtrlFaceInfo
* @brief 人脸信息
* @attention 无 None
*/
typedef struct tagNETDEVCtrlFaceInfo
{
    UINT32 udwID;                                           /* 记录ID */
    UINT32 udwTimestamp;                                    /* 采集时间 UTC格式，单位秒 */
    UINT32 udwCapSrc;                                       /* 采集来源 详见 NETDEV_CAP_SRC_E FaceInfo选择1 */
    UINT32 udwFeatureNum;                                   /* 半结构化特征数目 范围：[0, 2] */
    LPNETDEV_FEATURE_INFO_S pstFeatureInfo;                 /* 半结构化特征列表 需动态分配内存 */
    NETDEV_FILE_INFO_S stPanoImage;                         /* 人脸全景图 */
    NETDEV_FILE_INFO_S stFaceImage;                         /* 人脸小图 */
    NETDEV_FACE_POSITION_INFO_S stFaceArea;                 /* 人脸全景图人脸区域坐标 */
    FLOAT  fTemperature;                                    /* 人员体温 单位：摄氏度，注：小数点后1位 */
    UINT32 udwMaskFlag;                                     /* 是否戴口罩，0：未知或未启用检测；1：未戴口罩；2：戴口罩 */
    BYTE   byRes[120];                                      /* 保留字节 */
}NETDEV_CTRL_FACE_INFO_S,*LPNETDEV_CTRL_FACE_INFO_S;

/**
* @enum tagNETDEVCtrlGateInfo
* @brief 闸机信息
* @attention 无 None
*/
typedef struct tagNETDEVCtrlGateInfo
{
    UINT32 udwID;               /* 记录ID */
    UINT32 udwTimestamp;        /* 采集时间 */
    UINT32 udwCapSrc;           /* 采集来源 详见 NETDEV_CAP_SRC_E GateInfo选择4 */
    UINT32 udwInPersonCnt;      /* 进入人员计数 */
    UINT32 udwOutPersonCnt;     /* 离开人员计数 */
    BYTE   byRes[128];          /* 保留字节 */
}NETDEV_CTRL_GATE_INFO_S,*LPNETDEV_CTRL_GATE_INFO_S;

/**
* @struct tafNETDEVCtrlCardInfo
* @brief 卡信息
* @attention 无 None
*/
typedef struct tafNETDEVCtrlCardInfo
{
    UINT32 udwID;                                       /* 记录ID */
    UINT32 udwTimestamp;                                /* 采集时间 UTC格式，单位秒 */
    UINT32 udwCapSrc;                                   /* 采集来源 详见 NETDEV_CAP_SRC_E CardInfo选择2或3*/
    UINT32 udwCardType;                                 /* 0：身份证，1：门禁卡*/
    CHAR   szCardID[NETDEV_LEN_32];                     /* 门禁卡字段：物理卡号 最长18位*/
    UINT32 udwCardStatus;                               /* 门禁卡字段：卡状态 */
    CHAR   szName[NETDEV_LEN_256];                      /* 身份证字段：姓名 范围[1,63] */
    UINT32 udwGender;                                   /* 身份证字段：性别 详情参见枚举NETDEV_GENDER_TYPE_E*/
    UINT32 udwEthnicity;                                /* 身份证字段：民族 01：汉族*/
    CHAR   szBirthday[NETDEV_LEN_16];                   /* 身份证字段：出生日期 YYYYMMDD */
    CHAR   szResidentialAddress[NETDEV_LEN_128];        /* 身份证字段：住址 */
    CHAR   szIdentityNo[NETDEV_LEN_32];                 /* 身份证字段：身份证号码 */
    CHAR   szIssuingAuthority[NETDEV_LEN_128];          /* 身份证字段：发证机关 */
    CHAR   szIssuingDate[NETDEV_LEN_16];                /* 身份证字段：发证日期 YYYYMMDD */
    CHAR   szValidDateStart[NETDEV_LEN_16];             /* 身份证字段：证件有效期开始时间 */
    CHAR   szValidDateEnd[NETDEV_LEN_16];               /* 身份证字段：证件有效期结束时间 */
    NETDEV_FILE_INFO_S stIDImage;                       /* 身份证照片 */
    BYTE   byRes[128];                                  /* 保留字节 */
}NETDEV_CTRL_CARD_INFO_S,*LPNETDEV_CTRL_CARD_INFO_S;

/**
* @struct tagNETDEVMatchPersonInfo
* @brief 匹配人员信息
* @attention 无 None
*/
typedef struct tagNETDEVMatchPersonInfo
{
    CHAR   szPersonName[NETDEV_LEN_256];        /* 成员名字 范围[1,63] */
    UINT32 udwGender;                           /* 成员性别 详情参见枚举NETDEV_DENDER_TYPE_E */
    CHAR   szCardID[NETDEV_LEN_32];             /* 门禁卡号 */
    CHAR   szIdentityNo[NETDEV_LEN_32];         /* 身份证卡号 */
    CHAR   szPersonCode[NETDEV_LEN_64];         /* 人员编码 可填写学号或工号 范围:[1, 15] */
    BYTE   byRes[64];                           /* 保留字节 */
}NETDEV_MATCH_PERSON_INFO_S,*LPNETDEV_MATCH_PERSON_INFO_S;

/**
* @struct tagNETDEVCtrlLibMatchInfo
* @brief 库比对信息
* @attention 无 None
*/
typedef struct tagNETDEVCtrlLibMatchInfo
{
    UINT32 udwID;                                   /* 记录ID */
    UINT32 udwLibID;                                /* 库ID */
    UINT32 udwLibType;                              /* 库类型 */
    UINT32 udwMatchStatus;                          /* 匹配状态 详见NETDEV_MATCH_STATUS_E */
    UINT32 udwMatchPersonID;                        /* 匹配人员ID */
    UINT32 udwMatchFaceID;                          /* 匹配人脸ID */
    NETDEV_MATCH_PERSON_INFO_S stMatchPersonInfo;   /* 匹配人员信息 */
    BYTE   byRes[128];                              /* 保留字节 */
}NETDEV_CTRL_LIB_MATCH_INFO_S,*LPNETDEV_CTRL_LIB_MATCH_INFO_S;

/**
* @struct tagNETDEVPersonVerification
* @brief 人员核验
* @attention 无 None
*/
typedef struct tagNETDEVPersonVerification
{
    CHAR   szReference[NETDEV_LEN_128];                                      /* 用于客户端确认推送消息的url */
    UINT32 udwSeq;                                                           /* 通知记录序号 */
    UINT32 udwChannelID;                                                     /* 通道ID VMS支持*/
    CHAR   szChannelName[NETDEV_LEN_256];                                    /* 通道名称，长度 [1,64]，VMS支持 */
    UINT32 udwTimestamp;                                                     /* 通知上报时间 UTC格式，单位秒*/
    UINT32 udwNotificationType;                                              /* 通知类型 0：实时通知1：历史通知 */
    UINT32 udwFaceInfoNum;                                                   /* 人脸信息数目 范围：[0, 1] */
    LPNETDEV_CTRL_FACE_INFO_S pstCtrlFaceInfo;                               /* 人脸信息 需动态申请内存*/
    UINT32 udwCardInfoNum;                                                   /* 卡信息数目 范围：[0, 1] */
    LPNETDEV_CTRL_CARD_INFO_S pstCtrlCardInfo;                               /* 卡信息 需动态申请内存*/
    UINT32 udwGateInfoNum;                                                   /* 闸机信息数目 范围：[0, 1] */
    LPNETDEV_CTRL_GATE_INFO_S pstCtrlGateInfo;                               /* 闸机信息 需动态申请内存*/
    UINT32 udwLibMatInfoNum;                                                 /* 库比对信息数目 范围：[0, 16] */
    LPNETDEV_CTRL_LIB_MATCH_INFO_S pstLibMatchInfo;                          /* 库比对信息 需动态申请内存*/
    BYTE   byRes[128];                                                       /* 保留字节 */
}NETDEV_PERSON_VERIFICATION_S,*LPNETDEV_PERSON_VERIFICATION_S;


/**
* @struct tagNETDEVPersonCompareInfo
* @brief 人脸 比对信息
* @attention 无 None
*/
typedef struct tagNETDEVPersonCompareInfo
{
    UINT32                      udwSimilarity;                                  /* 相似度 */
    NETDEV_PERSON_INFO_S        stPersonInfo;                                   /* 人脸库成员信息 */
    NETDEV_FILE_INFO_S          stPanoImage;                                    /* 人脸大图  */
    NETDEV_FILE_INFO_S          stFaceImage;                                    /* 人脸小图 */
    NETDEV_FACE_POSITION_INFO_S stFaceArea;                                     /* 人脸区域坐标 */
    UINT32                      udwCapSrc;                                      /* 采集来源 */
    UINT32                      udwFeatureNum;                                  /* 半结构化特征数目 如果没有半结构化特征，可不带相关字段 PTS必带 */
    LPNETDEV_FEATURE_INFO_S     pstFeatureInfo;                                 /* 半结构化特征列表 如果没有半结构化特征，可不带相关字段  PTS必带 */
    BYTE                        byRes[248];                                     /* 保留字段 */
}NETDEV_PERSON_COMPARE_INFO_S, *LPNETDEV_PERSON_COMPARE_INFO_S;

/**
* @struct tagNETDEVFacePassRecordInfo
* @brief 人脸 通过记录信息
* @attention 无 None
*/
typedef struct tagNETDEVFacePassRecordInfo
{
    UINT32                              udwRecordID;                        /* 人脸通行记录ID */
    UINT32                              udwType;                            /* 人脸通行类型，参见枚举NETDEV_FACE_PASS_RECORD_TYPE_E */
    INT64                               tPassingTime;                       /* 过人时间，UTC格式，单位秒 */
    UINT32                              udwChannelID;                       /* 通道ID */
    CHAR                                szChlName[NETDEV_LEN_128];          /* 抓拍通道名称，范围[1,63] */
    NETDEV_PERSON_COMPARE_INFO_S        stCompareInfo;                      /* 比对信息 */
    BYTE                                byRes[256];                         /* 保留字段 */
}NETDEV_FACE_PASS_RECORD_INFO_S, *LPNETDEV_FACE_PASS_RECORD_INFO_S;

/**
* @struct tagNETDEVPersonEventInfo
* @brief 人员报警信息
* @attention 无 None
*/
typedef struct tagNETDEVPersonEventInfo
{
    UINT32                          udwID;                                   /* 通知记录ID */
    UINT32                          udwTimestamp;                            /* 通知上报时间 UTC格式，单位秒*/
    UINT32                          udwNotificationType;                     /* 通知类型 0：实时通知1：历史通知 */
    UINT32                          udwFaceInfoNum;                          /* 人脸信息数目 范围：[0, 1] */
    NETDEV_FACE_PASS_RECORD_INFO_S  stCtrlFaceInfo[NETDEV_LEN_2];            /* 人脸信息列表，当采集信息没有人脸时，可不带FaceInfo相关字段 */
    UINT32                          udwFinishFaceNum;                        /* 人脸结束数量 范围：[0, 40] */
    UINT32                          audwFinishFaceList[NETDEV_LEN_40];       /* 人脸结束列表 */
    BYTE                            byRes[92];                               /* 保留字段 */
}NETDEV_PERSON_EVENT_INFO_S, *LPNETDEV_PERSON_EVENT_INFO_S;

/**
* @struct tagNETDEVUpdateInfo
* @brief 更新信息
* @attention 无 None
*/
typedef struct tagNETDEVUpdateInfo
{
    UINT32 udwID;               /* 时间模板ID */
    UINT32 udwLastChange;       /* 时间模板最后修改时间 */
    BYTE   byRes[128];          /* 保留字节 */
}NETDEV_UPDATE_INFO_S,*LPNETDEV_UPDATE_INFO_S;

/**
* @struct tagNETDEVTimeTemplateUdateInfo
* @brief 时间模板的更新信息
* @attention 无 None
*/
typedef struct tagNETDEVTimeTemplateUpdateInfo
{
    UINT32 udwNum;                                          /* 有效时间模板个数 [0, 32] */
    NETDEV_UPDATE_INFO_S stUpdateInfo[NETDEV_LEN_64];       /* 更新信息 */
    BYTE   byRes[128];                                      /* 保留字节 */
}NETDEV_TIME_TEMPLATE_UPDATE_INFO_S,*LPNETDEV_TIME_TEMPLATE_UPDATE_INFO_S;

/**
* @struct tagNETDEVExceptionDayInfo
* @brief 每天的布防计划具体信息
* @attention 无 None
*/
typedef struct tagNETDEVExceptionDayInfo
{
    UINT32 udwID;                                                            /* 例外日期索引 */
    BOOL   bEnabled;                                                         /* 例外日期是否使能 */
    CHAR   szDate[NETDEV_LEN_16];                                            /* 例外日期 year-month-day */
    UINT32 udwNum;                                                           /* 例外时间段个数 NVR最大为8段 IPC/PTS最大为4段*/
    NETDEV_TIME_SECTION_INFO_S stTimeSectionInfo[NETDEV_LEN_16];             /* 布防配置具体信息 */
    BYTE   byRes[128];                                                       /* 保留字节 */
}NETDEV_EXCEPTION_DAY_INFO_S,*LPNETDEV_EXCEPTION_DAY_INFO_S;

/**
* @struct tagNETDEVExceptionInfo
* @brief 布控任务例外计划
* @attention 无 None
*/
typedef struct tagNETDEVExceptionInfo
{
    BOOL   bEnabled;                                                         /* 例外日期是否使能 0:不使能 1：使能 */
    UINT32 udwNum;                                                           /* 例外日期个数 [0, 16] */
    NETDEV_EXCEPTION_DAY_INFO_S stExceptionDayInfo[NETDEV_LEN_32];           /* 每天的布防计划具体信息 */
    BYTE   byRes[128];                                                       /* 保留字节 */
}NETDEV_EXCEPTION_INFO_S,*LPNETDEV_EXCEPTION_INFO_S;

/**
* @struct tagNETDEVTimeTemplateInfo
* @brief 时间模板配置
* @attention 无 None
*/
typedef struct tagNETDEVTimeTemplateInfo
{
    UINT32 udwID;                                   /* 人员库时间模板布控任务序号 */
    CHAR   szName[NETDEV_LEN_256];                  /* 时间模板名称 [1, 63] */
    UINT32 udwLastChange;                           /* 时间模板最后修改时间 */
    NETDEV_WEEK_PLAN_INFO_S stWeekPlanInfo;         /* 布控任务布防计划 */
    NETDEV_EXCEPTION_INFO_S stExceptionInfo;        /* 布控任务例外计划 */
    BYTE   byRes[128];                              /* 保留字节 */
}NETDEV_TIME_TEMPLATE_INFO_S,*LPNETDEV_TIME_TEMPLATE_INFO_S;

/**
* @struct tagNETDEVSystemTimeTemplate
* @brief 时间模板配置(PTS VMS)
* @attention 无 None
*/
typedef struct tagNETDEVSystemTimeTemplate
{
    UINT32                  udwTemplateID;                           /* 时间模板ID */
    CHAR                    szTemplateName[NETDEV_LEN_256];          /* 时间模板名称 [1, 63] */
    CHAR                    szTemplateDesc[NETDEV_LEN_512];          /* 时间模板描述 [1, 128] */
    UINT32                  udwLastChange;                           /* 时间模板最后修改时间 */
    NETDEV_WEEK_PLAN_INFO_S stWeekPlanInfo;                          /* 布控任务布防计划 */
    NETDEV_EXCEPTION_INFO_S stExceptionInfo;                         /* 布控任务例外计划 */
    BOOL                    bIsBuiltin;                              /* 是否为内置时间模板 仅VMS支持 1:是 0:否 */
    UINT32                  udwTemplateType;                         /* 时间模板类型 仅VMS支持 0:录像时间模板 1:报警时间模板 2:用户时间模板 */
    BYTE                    byRes[128];                              /* 保留字节 */
}NETDEV_SYSTEM_TIME_TEMPLATE_S,*LPNETDEV_SYSTEM_TIME_TEMPLATE_S;

/**
* @struct tagNETDEVSinglePersonUpdateInfo
* @brief 指定人员的更新信息
* @attention 无 None
*/
typedef struct tagNETDEVSinglePersonUpdateInfo
{
    BOOL   bPersonExisted;      /* 人员是否存在 */
    UINT32 udwLastChange;       /* 最后修改时间 */
    BYTE   byRes[128];          /* 保留字节 */
}NETDEV_SINGLE_PERSON_UPDATE_INFO_S,*LPNETDEV_SINGLE_PERSON_UPDATE_INFO_S;

/**
* @struct tagNETDEVPagedQueryInfo
* @brief 查询条件
* @attention 无 None
*/
typedef struct tagNETDEVPagedQueryInfo
{
    UINT32 udwLimit;        /* 每次查询的数量 */
    UINT32 udwOffset;       /* 从当前序号开始查询 */
    BYTE   byRes[128];      /* 保留字节 */
}NETDEV_PAGED_QUERY_INFO_S,*LPNETDEV_PAGED_QUERY_INFO_S;

/**
* @struct tagNETDEVPersonUpdateInfo
* @brief 名单成员信息
* @attention 无 None
*/
typedef struct tagNETDEVPersonUpdateInfo
{
    UINT32 udwPersonID;         /* 人员ID */
    UINT32 udwLastChange;       /* 人员库名单查询结果列表 */
    BYTE   byRes[128];          /* 保留字节 */
}NETDEV_PERSON_UPDATE_INFO_S,*LPNETDEV_PERSON_UPDATE_INFO_S;

/**
* @struct tagNETDEVPersonUpdateInfoList
* @brief 人员库名单查询结果列表
* @attention 无 None
*/
typedef struct tagNETDEVPersonUpdateInfoList
{
    UINT32 udwTotal;                                                /* 人员库名单总数 */
    UINT32 udwOffset;                                               /* 人员库名单查询起始序号 */
    UINT32 udwNum;                                                  /* 人员库名单查询结果总数 单次最大1000条 */
    NETDEV_PERSON_UPDATE_INFO_S stPersonList[NETDEV_LEN_1024];      /* 人员库名单查询结果列表 */
    BYTE   byRes[128];                                              /* 保留字节 */
}NETDEV_PERSON_UPDATE_INFO_LIST_S,*LPNETDEV_PERSON_UPDATE_INFO_LIST_S;

/**
* @struct tagNETDEVPersonInfoList
* @brief 人员信息列表
* @attention 无 None
*/
typedef struct tagNETDEVPersonInfoList
{
    UINT32 udwNum;                                          /* 人员库人员个数 */
    LPNETDEV_PERSON_INFO_S              pstPersonInfo;      /* 人员信息列表,需动态分配内存 */
    BYTE   byRes[128];                                      /* 保留字节 */
}NETDEV_PERSON_INFO_LIST_S,*LPNETDEV_PERSON_INFO_LIST_S;

/**
* @struct tagNETDEVFaceInfo
* @brief 人脸信息结果
* @attention 无 None
*/
typedef struct tagNETDEVFaceInfo
{
    UINT32 udwFaceID;           /* 人员ID */
    UINT32 udwResultCode;       /* 处理结果状态码，详见#NETDEV_PERSON_RESULT_CODE_E */
    BYTE   byRes[128];          /* 保留字节 */
}NETDEV_FACE_INFO_S,*LPNETDEV_FACE_INFO_S;

/**
* @struct tagNETDEVPersonList
* @brief 人员信息列表
* @attention 无 None
*/
typedef struct tagNETDEVPersonList
{
    UINT32 udwPersonID;                                 /* 人员ID */
    UINT32 udwFaceNum;                                  /* 人脸个数 批量单次最多6个 */
    NETDEV_FACE_INFO_S stFaceInfo[NETDEV_LEN_8];        /* 人脸信息结果列表 */
    UINT32 udwReqseq;                                   /* 请求数据序号,仅VMS支持 */
    BYTE   byRes[128];                                  /* 保留字节 */
}NETDEV_PERSON_LIST_S,*LPNETDEV_PERSON_LIST_S;

/**
* @struct tagNETDEVPersonResultList
* @brief 人员信息结果列表
* @attention 无 None
*/
typedef struct tagNETDEVPersonResultList
{
    UINT32 udwNum;                                          /* 人员个数 */
    LPNETDEV_PERSON_LIST_S pstPersonList;                   /* 人员信息执行结果列表,需动态分配内存 malloc by caller */
    BYTE   byRes[128];                                      /* 保留字节 */
}NETDEV_PERSON_RESULT_LIST_S,*LPNETDEV_PERSON_RESULT_LIST_S;

/**
* @struct tagNETDEVLibInfo
* @brief 库信息
* @attention 人员库和车辆库
*/
typedef struct tagNETDEVLibInfo
{
    UINT32 udwID;                           /* 库ID */
    CHAR   szName[NETDEV_LEN_256];          /* 库名称 范围[1,63] */
    UINT32 udwType;                         /* 人员库类型 详情参见枚举NETDEV_PEOPLE_LIB_TYPE_E*/
    UINT32 udwPersonNum;                    /* 库中人员信息的总数 */
    UINT32 udwFaceNum;                      /* 库中人脸照片总数 */
    UINT32 udwMemberNum;                    /* 库中成员的总数 */
    UINT32 udwLastChange;                   /* 库的信息的最后修改时间 */
    CHAR   szBelongIndex[NETDEV_LEN_256];   /* 库的唯一归属索引 */
    BOOL   bIsMonitored;                    /* 是否已布控，获取库信息时必带 */
    BYTE   byRes[128];                      /* 保留字节 */
}NETDEV_LIB_INFO_S,*LPNETDEV_LIB_INFO_S;

/**
* @struct tagNETDEVPersonLibList
* @brief 人员库信息
* @attention 无 None
*/
typedef struct tagNETDEVPersonLibList
{
    UINT32              udwNum;                     /* 设备中已创建的库数量 */
    LPNETDEV_LIB_INFO_S pstLibInfo;                 /* 库列表信息,需动态分配内存 */
    BYTE                byRes[128];                 /* 保留字节 */
}NETDEV_PERSON_LIB_LIST_S,*LPNETDEV_PERSON_LIB_LIST_S;


/**
 * @struct tagstNETDEVSmartInfo
 * @brief 智能事件信息
 * @attention
 */
typedef struct tagstNETDEVSmartInfo
{
    INT32      dwChannelID;         /* 通道ID */
    UINT32     udwSubscribeID;      /* 订阅ID */
    UINT32     udwSubscribeType;      /* 订阅类型 */
    UINT32     udwCurrrntTime;      /* 当前时间，UTC格式，单位秒 */
    UINT32     udwEndTime;          /* 结束时间，UTC格式，单位秒 */
    BYTE       byRes[124];          /* 保留字段  Reserved */
}NETDEV_SMART_INFO_S, *LPNETDEV_SMART_INFO_S;

/**
 * @struct tagstNETDEVSubscribeSmartInfo
 * @brief 订阅智能事件信息
 * @attention
 */
typedef struct tagstNETDEVSubscribeSmartInfo
{
    UINT32   udwNum;                /* 订阅智能告警数 */
    UINT32   *pudwSmartType;        /* 订阅的智能告警类型 参见枚举 NETDEV_SMART_ALARM_TYPE_E ，根据udwNum动态申请 */
    BYTE     byRes[128];            /* 保留字段  Reserved */
}NETDEV_SUBSCRIBE_SMART_INFO_S, *LPNETDEV_SUBSCRIBE_SMART_INFO_S;


/**
 * @struct tagstNETDEVAlarmLogCond
 * @brief 告警日志查询条件
 * @attention  查询“告警类型”时，携带的告警主类型或子类型数量均不能超过16个。
 */
typedef struct tagstNETDEVQueryInfo
{
    INT32   dwQueryType;                                /* 查询条件类型，参见# NETDEV_QUERYCOND_TYPE_E */
    INT32   dwLogicFlag;                                /* 查询条件逻辑类型，参见#NETDEV_QUERYCOND_LOGICTYPE_E */
    CHAR    szConditionData[NETDEV_CODE_STR_MAX_LEN];   /* 查询条件右值 */
}NETDEV_QUERY_INFO_S, *LPNETDEV_QUERY_INFO_S;

/**
 * @struct tagstNETDEVAlarmLogCondList
 * @brief 告警日志所有查询条件
 * @attention
 */
typedef struct tagstNETDEVAlarmLogCondList
{
    INT32   dwPageRow;                                                      /* 每页最大条数 */
    INT32   dwFirstRow;                                                     /* 分页查询中第一条数据的序号 */
    INT32   dwCondSize;                                                     /* 查询条件数量 */
    NETDEV_QUERY_INFO_S astCondition[NETDEV_LOG_QUERY_COND_NUM];            /* 查询条件右值 */
}NETDEV_ALARM_LOG_COND_LIST_S, *LPNETDEV_ALARM_LOG_COND_LIST_S;

/**
 * @struct tagstNETDEVAlarmLogInfo
 * @brief 告警日志信息
 * @attention
 */
typedef struct tagstNETDEVAlarmLogInfo
{
    INT32 dwAlarmID;                                            /* 告警ID */
    INT32 dwAlarmType;                                          /* 告警类型 参见# NETDEV_ALARM_TYPE_E*/
    INT32 dwAlarmSubType;                                       /* 告警子类型,参见#NETDEV_ALARM_SUBTYPE_E */
    INT32 dwAlarmLevel;                                         /* 告警级别 */
    INT32 dwServerID;                                           /* 所属服务器 */
    INT32 dwDevID;                                              /* 设备ID */
    INT32 dwChannelID;                                          /* 通道ID */
    CHAR szAlarmSrc[NETDEV_NAME_MAX_LEN];                       /* 告警源信息 */
    INT64 tAlarmTime;                                           /* 告警发生时间 */
    BOOL bAlarmChecked;                                         /* 告警是否被确认 */
    CHAR szAlarmCheckUser[NETDEV_USERNAME_LEN];                 /* 告警确认用户 */
    INT64 tAlarmCheckTime;                                      /* 告警确认时间 */
    CHAR szAlarmCheckDesc[NETDEV_DESCRIBE_MAX_LEN];             /* 告警确认描述 */
    INT32 dwAlarmLinkType;                                      /* 告警联动类型 */
    BOOL IsAlarmSnapExisted;                                    /* 告警是否有抓图 0没有抓图 1有抓图*/
    INT32 dwAlarmSrcBelong;                                     /* 告警所属，参见#NETDEV_ALARM_SRC_BELONG_TYPE_E */
    BYTE byRes[248];                                            /* 保留字段 */
}NETDEV_ALARM_LOG_INFO_S, *LPNETDEV_ALARM_LOG_INFO_S;

/**
 * @struct tagstNETDEVAlarmLogChecked
 * @brief 告警日志确认信息
 * @attention
 */
typedef struct tagstNETDEVAlarmLogChecked
{
    INT32  dwSize;                                               /* 告警源数量 */
    INT32* pdwAlarmID;                                           /* 告警ID，根据size动态分配内存  */
    CHAR   szAlarmDesc[NETDEV_DESCRIBE_MAX_LEN];                 /* 告警描述 */

    BYTE     byRes[128];                                        /* 保留字段  Reserved */
}NETDEV_ALARMLOG_CHECKED_S, *LPNETDEV_ALARMLOG_CHECKED_S;

/**
 * @struct tagstNETDEVAlarmLogCheckedList
 * @brief 告警日志确认信息列表
 * @attention
 */
typedef struct tagstNETDEVAlarmLogCheckedList
{
    INT32    dwSize;                                             /* 告警日志确认数量 */
    LPNETDEV_ALARMLOG_CHECKED_S pstAlarmLogChecked;              /* 告警日志确认信息，根据size动态分配内存 */

    BYTE     byRes[128];                                         /* 保留字段  Reserved */
}NETDEV_ALARMLOG_CHECKED_LIST_S, *LPNETDEV_ALARMLOG_CHECKED_LIST_S;

/**
 * @struct tagNETDEVDatabaseInfo
 * @brief 库信息（人脸库和车辆） 结构体定义 face and Vehicle database information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVDatabaseInfo
{
    UINT32   udwFaceDBID;                               /* 库序号 */
    UINT32   udwFaceDBType;                             /* 库类型 参见枚举#NETDEV_FACE_DB_TYPE_E */
    CHAR     szFaceDBName[NETDEV_FACE_DB_NAME_LEN];     /* 库名称 */
    BOOL     bMonitored;                                /* 是否已布控*/
    UINT32   udwMemberNum;                              /* 人脸库中人脸成员总数*/
    BYTE     byRes[128];                                /* 保留字段  Reserved */

}NETDEV_DATABASE_INFO_S,*LPNETDEV_DATABASE_INFO_S;

/**
 * @struct tagstNETDEVAlarmPlanInfo
 * @brief 告警布防预案信息
 * @attention
 */
typedef struct tagstNETDEVAlarmPlanInfo
{
    INT32   dwPlanType;                                         /* 告警布防预案类型，参见#NETDEV_ALARM_PLAN_TYPE_E */
    INT32   dwPlanID;                                           /* 预案ID */
    CHAR    szPlanName[NETDEV_NAME_MAX_LEN];                    /* 预案名称 */
    INT32   dwTimeTamplateID;                                   /* 时间模板ID */
    CHAR    szTimeTamplateName[NETDEV_NAME_MAX_LEN];            /* 时间模板名称 */
    CHAR    szDesc[NETDEV_DESCRIBE_MAX_LEN];                    /* 预案描述 */
    BOOL    bEnable;                                            /* 是否启用预案 */
}NETDEV_ALARM_PLANINFO_S, *LPNETDEV_ALARM_PLANINFO_S;

/**
 * @struct tagNETDEVCustomAttrInfo
 * @brief 自定义属性名称 结构体定义 Device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVCustomAttrInfo
{
    UINT32   udwID;                                         /* 自定义属性名称序号 */
    BOOL     bEnabled;                                      /* 自定义属性使能 0不使能、1使能*/
    CHAR     szName[NETDEV_FACE_DB_TITLE_NAME_LEN];    /* 自定义属性名称*/

    BYTE     byRes[128];                                    /* 保留字段  Reserved */

}NETDEV_CUSTOM_ATTR_INFO_S,*LPNETDEV_CUSTOM_ATTR_INFO_S;


/**
 * @struct tagNETDEVMemberInfo
 * @brief 人脸/车辆成员信息列表 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVMemberInfo
{
    UINT32 udwMemberID;                                             /* 人脸/车辆成员ID */
    CHAR szMemberName[NETDEV_LEN_260];                              /* 人脸/车辆成员名称，范围[1,63] */
    BYTE     byRes[128];                                            /* 保留字段  Reserved */
}NETDEV_MEMBER_INFO_S,*LPNETDEV_MEMBER_INFO_S;

/**
 * @struct tagNETDEVMonitorRuleInfo
 * @brief 布控任务配置信息 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVMonitorRuleInfo
{
    BOOL                    bEnabled;                                              /* 布控任务使能 */
    CHAR                    szName[NETDEV_FACE_MONITOR_RULE_NAME_LEN];             /* 布控任务的布控名称 */
    CHAR                    szReason[NETDEV_FACE_MONITOR_RULE_REASON_LEN];         /* 布控的布控原因 */
    UINT32                  udwLibNum;                                             /* 任务对应的库数量,最大16个 */
    UINT32                  audwLibList[NETDEV_LEN_32];                            /* 库ID列表 */
    UINT32                  udwMonitorType;                                        /* 布控告警类型，0：匹配告警,1：不匹配告警 */
    UINT32                  udwMultipleValue;                                      /* 人脸1：N比较置信度阀值 */
    UINT32                  udwMonitorReason;                                      /*  车辆布控原因：0：被抢车 1：被盗车 2：嫌疑车 3：交通违法车 4：紧急查控车*/
    CHAR                    szMatchSucceedMsg[NETDEV_LEN_512];                     /* 比对成功提示语 */
    CHAR                    szMatchFailedMsg[NETDEV_LEN_512];                      /* 比对失败提示语 */
    UINT32                  udwMemberNum;                                          /* 成员数量 [0-32] */
    NETDEV_MEMBER_INFO_S    stMemberInfo[NETDEV_LEN_64];                           /* 成员信息列表 */
    UINT32                  udwChannelNum;                                         /* 人脸布控任务的布控通道个数 获取单个布控任务详情时必带 */
    UINT32                  *pudwMonitorChlIDList;                                 /* 人脸布控任务的布控通道列表 根据udwChannelNum动态确定 上层申请内存 */
    UINT32                  udwDevNum;                                             /* 布控任务的布控设备个数 最多四个,仅VMS支持 */
    UINT32                  audwMonitorDevIDList[NETDEV_LEN_16];                   /* 布控任务的布控设备列表 根据DevNum动态确定,仅VMS支持*/
    UINT32                  udwMonitorRuleType;                                    /* 布控任务智能类型，0：本地智能布控,1：前端智能布控 */
    
	BYTE                    byRes[240];                                            /* 保留字段  Reserved */
}NETDEV_MONITION_RULE_INFO_S,*LPNETDEV_MONITION_RULE_INFO_S;

/**
 * @struct tagNETDEVMonitorChlInfo
 * @brief 添加布控返回的布控信息
 * @attention 无 None
 */
typedef struct tagNETDEVMonitorChlInfo
{
    UINT32                          udwChannelID;                       /* 布控对应通道ID IPC、VMS该字段不返回 */ 
    UINT32                          udwResultCode;                      /* 人脸处理结果码 NETDEV_PERSON_RESULT_CODE_E */
    UINT32                          udwMonitorID;                       /* 相应通道对应的布控ID */ 
}NETDEV_MONITION_CHL_INFO_S,*LPNETDEV_MONITION_CHL_INFO_S;

/**
 * @struct tagNETDEVMonitorResultInfo
 * @brief 添加布控返回的布控信息 Device information Structure definition
 * @attention  None
 */
typedef struct tagNETDEVMonitorResultInfo
{
    UINT32                              udwChannelNum;                  /* 布控添加成功的实际通道数 需赋值标明内存申请大小*/
    LPNETDEV_MONITION_CHL_INFO_S        pstMonitorChlInfos;             /* 布控返回信息列表 内存由上层申请 不应小于下发的通道数量 malloc by caller*/
    BYTE                                byRes[250];                     /* 保留字段  Reserved */
}NETDEV_MONITOR_RESULT_INFO_S,*LPNETDEV_MONITOR_RESULT_INFO_S;

/**
 * @struct tagNETDEVVideoLossRuleInfo
 * @brief视频丢失告警的配置信息
 * @attention 
 */
typedef struct tagNETDEVVideoLossRuleInfo
{
    BOOL         bEnabled;            /* 使能, 0:不使能 1:使能*/
    BYTE         byRes[256];          /* 保留字段 */
}NETDEV_VIDEO_LOSS_RULE_INFO_S, *LPNETDEV_VIDEO_LOSS_RULE_INFO_S;

/**
 * @struct tagNETDEVTamperDetectionRuleInfo
 * @brief遮挡检测告警的配置信息
 * @attention 
 */
typedef struct tagNETDEVTamperDetectionRuleInfo
{
    BOOL         bEnabled;              /* 使能, 0:不使能 1:使能*/
    UINT32       udwSensitivity;        /* 灵敏度，范围[1,100] */
    UINT32       udwDuration;           /* 持续时间，单位秒。长度范围[0, 10]，IPC需要 */
    BYTE         byRes[256];            /* 保留字段 */
}NETDEV_TAMPER_DETECTION_RULE_INFO_S, *LPNETDEV_TAMPER_DETECTION_RULE_INFO_S;

/**
 * @struct tagNETDEVOutputSwitchActParamInfo
 * @brief 联动开关量输出
 * @attention
 */
typedef struct tagNETDEVOutputSwitchActParamInfo
{
    UINT32 udwNum;                                                                                 /* 联动的开关量输出个数*/
    NETDEV_OUTPUT_SWITCH_ALARM_STATUS_S astOutputAlarmStatusInfo[NETDEV_MAX_ALARM_OUT_NUM];        /* 联动的开关量输出列表*/
}NETDEV_OUTPUT_SWITCH_ACT_PARAM_INFO_S,*LPNETDEV_OUTPUT_SWITCH_ACT_PARAM_INFO_S;

/**
 * @struct tagNETDEVChannelActParamInfo
 * @brief 通道联动
 * @attention
 */
typedef struct tagNETDEVChannelActParamInfo
{
    UINT32 udwNum;                                 /* 通道个数*/
    INT32 adwChannelID[NETDEV_CHANNEL_MAX];        /* 通道ID列表*/
}NETDEV_CHANNEL_ACT_PARAM_INFO_S,*LPNETDEV_CHANNEL_ACT_PARAM_INFO_S;

/**
 * @struct tagNETDEVChannelPreset
 * @brief 联动云台预置位
 * @attention
 */
typedef struct tagNETDEVChannelPreset
{
    INT32 dwChannelID;                              /* 通道号*/
    INT32 dwPresetID;                               /* 预置位编号*/
    BYTE  byRes[128];                               /* 保留字段 */
}NETDEV_CHANNEL_PRESET_S,*LPNETDEV_CHANNEL_PRESET_S;

/**
 * @struct tagNETDEVPresetActParamInfo
 * @brief 联动云台预置位
 * @attention
 */
typedef struct tagNETDEVPresetActParamInfo
{
    UINT32 udwNum;                                                      /* 联动动作数量*/
    NETDEV_CHANNEL_PRESET_S stChannelPreset[NETDEV_CHANNEL_MAX];        /* 联动到预置位信息列表*/
}NETDEV_PRESET_ACT_PARAM_INFO_S,*LPNETDEV_PRESET_ACT_PARAM_INFO_S;

/**
 * @struct tagNETDEVEnabledActParamInfo
 * @brief 使能联动参数
 * @attention
 */
typedef struct tagNETDEVEnabledActParamInfo
{
    BOOL    bEnabled;       /* 使能标记 */
    BYTE    byRes[64];      /* 保留字段 */
}NETDEV_ENABLED_ACT_PARAM_INFO_S, *LPNETDEV_ENABLED_ACT_PARAM_INFO_S;

/**
 * @enum tagNETDEVAlarmActID
 * @brief 使能联动参数
 * @attention
 */
typedef enum tagNETDEVAlarmActID
{
    ALARM_ACTION_TYPE_NVR_PREVIEW                = 0,                    /* 联动NVR预览，ActParam见NETDEV_CHANNEL_ACT_PARAM_INFO_S */
    ALARM_ACTION_TYPE_BUZZER                     = 1,                    /* 联动蜂鸣器，IPC暂不支持,NVR ActParam见NETDEV_ENABLED_ACT_PARAM_INFO_S */
    ALARM_ACTION_TYPE_E_MAIL                     = 2,                    /* 联动E-Mail，IPC暂不支持，NVR ActParam见NETDEV_ENABLED_ACT_PARAM_INFO_S */
    ALARM_ACTION_TYPE_RECORD                     = 3,                    /* 联动存储，IPC暂不支持，NVR ActParam见NETDEV_CHANNEL_ACT_PARAM_INFO_S */
    ALARM_ACTION_TYPE_PRESET                     = 4,                    /* 联动云台预置位，ActParam见NETDEV_PRESET_ACT_PARAM_INFO_S */
    ALARM_ACTION_TYPE_OUTPUT_SWITCH              = 5,                    /* 联动开关量输出，ActParam见NETDEV_OUTPUT_SWITCH_ACT_PARAM_INFO_S */
    ALARM_ACTION_TYPE_SNAP                       = 6,                    /* 联动抓拍，IPC无需填写ActParam ，NVR ActParam见NETDEV_CHANNEL_ACT_PARAM_INFO_S*/
    ALARM_ACTION_TYPE_BOX                        = 7,                    /* 告警弹框，IPC暂不支持，NVR ActParam见NETDEV_ENABLED_ACT_PARAM_INFO_S */
    ALARM_ACTION_TYPE_CENTER_RECORD              = 8,                    /* 联动中心存储，IPC无需填写ActParam，NVR不支持 */
    ALARM_ACTION_TYPE_START_LOCAL_RECORD         = 9,                    /* 联动启动本地存储，IPC无需填写ActParam，NVR不支持 */
    ALARM_ACTION_TYPE_STOP_LOCAL_RECORD          = 10,                   /* 联动停止本地存储，IPC无需填写ActParam，NVR不支持 */
    ALARM_ACTION_TYPE_SNAP_UP_FTP                = 11,                   /* 联动抓拍上传FTP，IPC无需填写ActParam，NVR不支持 */
    ALARM_ACTION_TYPE_SNAP_UP_EMAIL              = 12,                   /* 联动抓拍上传EMail，IPC无需填写ActParam，NVR不支持 */
    ALARM_ACTION_TYPE_SNAP_UP_FTP_AND_EMAIL      = 13,                   /* 联动抓拍上传FTP和EMail，IPC无需填写ActParam，NVR不支持 */
    ALARM_ACTION_TYPE_SMART_SNAP_UP              = 14,                   /* 智能联动抓拍上传，IPC无需填写ActParam，NVR不支持 */
    ALARM_ACTION_TYPE_FACE_PIC_SNAP_UP           = 15,                   /* 联动人脸小图抓拍上传，IPC无需填写ActParam，NVR不支持 */
    ALARM_ACTION_TYPE_ALARM_REPORT               = 16,                   /* 联动告警上报，IPC无需填写ActParam，NVR不支持 */
    ALARM_ACTION_TYPE_PTZ_ZOOM                   = 17,                   /* 联动云台变倍， */
    ALARM_ACTION_TYPE_INVALID                    = 0xff                  /* 无效参数 */
}NETDEV_ALARM_ACT_ID_E;


/**
 * @struct tagNETDEVLinkageActionList
 * @brief 联动动作列表
 * @attention
 */
typedef struct tagNETDEVLinkageActionInfo 
{
    UINT32  udwActID;                                                   /* 联动动作ID，参见枚举值NETDEV_ALARM_ACT_ID_E */
    NETDEV_ENABLED_ACT_PARAM_INFO_S  stEnabledInfo;                     /* 联动参数使能标记，适用于联动蜂鸣器、联动EMail、联动告警弹窗、 */
    NETDEV_OUTPUT_SWITCH_ACT_PARAM_INFO_S stOutputSwitchActParamInfo;   /* 联动开关量输出*/
    NETDEV_CHANNEL_ACT_PARAM_INFO_S stChannelActParamInfo;              /* 联动NVR预览、联动存储、联动抓拍 */
    NETDEV_PRESET_ACT_PARAM_INFO_S  stPresetActParamInfo;               /* 联动云台预置位 */
    BYTE  byRes[512];                                                   /* 保留字段 */
}NETDEV_LINKAGE_ACTION_INFO_S,*LPNETDEV_LINKAGE_ACTION_INFO_S;

/**
 * @struct tagNETDEVLinkageActionList
 * @brief 布控任务联动动作列表 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVLinkageActionList
{
    UINT32          udwNum;
    NETDEV_LINKAGE_ACTION_INFO_S stActionInfo[NETDEV_MAX_LINK_ACTION_NUM];
    BYTE            byRes[256];
}NETDEV_LINKAGE_ACTION_LIST_S,*LPNETDEV_LINKAGE_ACTION_LIST_S;

/**
 * @struct tagNETDEVSwitchLinkageAction
 * @brief 开关量布控任务联动动作 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVSwitchLinkageAction
{
    UINT32                          udwSwitchIndex; /* 开关量索引 */
    NETDEV_LINKAGE_ACTION_LIST_S    stLinkageActionList;
    BYTE                            byRes[256];
}NETDEV_SWITCH_LINKAGE_ACTION_S,*LPNETDEV_SWITCH_LINKAGE_ACTION_S;

/**
 * @enum tagLinkageStrategy
 * @brief 告警联动配置信息 结构体定义
 * @attention 无 None
 */
typedef enum tagPersonCompareResult
{
    NETDEV_TYPE_COMPARE_SUCCESS = 1,
    NETDEV_TYPE_COMPARE_FAILED = 2,
    NETDEV_TYPE_COMPARE_INVALID = 0xff
}NETDEV_PERSON_COMPARE_RESULT_TYPE_E;

/**
 * @struct tagLinkageStrategy
 * @brief 告警联动配置信息 结构体定义
 * @attention 无 None
 */
typedef struct tagLinkageStrategy
{
    UINT32                          udwType;                /* 告警类型,NETDEV_PERSON_COMPARE_RESULT_TYPE_E */
    NETDEV_LINKAGE_ACTION_LIST_S    stLintageActions;       /* 人脸布控任务联动动作 */
    BYTE                            byRes[512];             /* 保留字段 */
}NETDEV_LINKAGE_STRATEGY_S, *LPNETDEV_LINKAGE_STRATEGY_S;

/**
 * @struct tagNETDEVMonitorDefenceInfo
 * @brief 布防信息 结构体定义
 * @attention 仅PTS VMS使用
 */
typedef struct tagNETDEVMonitorDefenceInfo
{
    INT64      tBegin;                  /* 时间模板生效起始时间(unix时间戳) */
    INT64      tEnd;                    /* 时间模板生效结束时间(unix时间戳) */
    UINT32     udwTimeTemplateID;       /* 时间模板索引，若未配置，则填写0 */
    BYTE       byRes[128];              /* 保留字段 */
}NETDEV_MONITOR_DEFENCE_INFO_S, *LPNETDEV_MONITOR_DEFENCE_INFO_S;

/**
 * @struct tagNETDEVFaceMonitorInfo
 * @brief 布控任务信息 结构体定义 Device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVMonitorInfo
{
    UINT32                              udwID;                        /* 人脸布控任务序号 添加布控不再返回该字段 */
    NETDEV_MONITION_RULE_INFO_S         stMonitorRuleInfo;            /* 人脸布控任务配置信息 */
    UINT32                              udwLinkStrategyNum;           /* 告警联动策略数量 */
    LPNETDEV_LINKAGE_STRATEGY_S         pstLinkStrategyList;          /* 告警联动策略配置信息，需动态分配内存*/
    NETDEV_VIDEO_WEEK_PLAN_S            stWeekPlan;                   /* 人脸布控任务布防计划,仅NVR IPC使用 */
    NETDEV_MONITOR_DEFENCE_INFO_S       stMonitorDefenceInfo;         /* 布防信息，仅PTS VMS使用 */
    BYTE                                byRes[250];                   /* 保留字段  Reserved */
}NETDEV_MONITION_INFO_S,*LPNETDEV_MONITION_INFO_S;

/**
 * @struct tagNETDEVFaceMonitorList
 * @brief 人脸布控任务列表 结构体定义 Device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVFaceMonitorList
{
    UINT32 udwNum;                                                    /* 人脸布控任务数量 */
    LPNETDEV_MONITION_INFO_S pstMonitorList;                     /* 人脸布控任务列表 该指针所指向内存需调用者分配*/
}NETDEV_FACE_MONITOR_LIST_S,*LPNETDEV_FACE_MONITOR_LIST_S;

/**
 * @struct tagstNETDEVFaceAlarmImageArea
 * @brief 区域坐标
 * @attention
 */
typedef struct tagstNETDEVFaceAlarmImageArea
{
    UINT32   udwLeft;          /* 左坐标 */
    UINT32   udwTop;           /* 上坐标 */
    UINT32   udwRight;         /* 右坐标 */
    UINT32   udwButtom;        /* 下坐标 */

    BYTE     byRes[128];       /* 保留字段  Reserved */
}NETDEV_FACE_ALARM_IMAGE_AREA_S, *LPNETDEV_FACE_ALARM_IMAGE_AREA_S;

/**
 * @struct tagstNETDEVFaceAlarmLogSnapImage
 * @brief 抓拍图片信息
 * @attention
 */
typedef struct tagstNETDEVFaceAlarmSnapImage
{
    NETDEV_FILE_INFO_S   stBigImage;                /* 大图 */
    NETDEV_FILE_INFO_S   stSmallImage;              /* 小图 */
    NETDEV_FACE_ALARM_IMAGE_AREA_S   stArea;        /* 区域坐标 */
    BYTE    byRes[128];                             /* 保留字段  Reserved */
}NETDEV_FACE_ALARM_SNAP_IMAGE_S, *LPNETDEV_FACE_ALARM_SNAP_IMAGE_S;


/**
* @struct tagNETDEVVehicleMonitorRuleInfo
* @brief 车辆布控任务配置信息 结构体定义
* @attention 无 None
*/
typedef struct tagNETDEVVehicleMonitorRuleInfo
{
    CHAR                        szName[NETDEV_LEN_260];                              /* 车辆布控任务的布控名称 */
    BOOL                        bEnabled;                                            /* 车辆布控任务使能 */
    INT64                       tBegin;                                              /* 开始时间 */
    INT64                       tEnd;                                                /* 结束时间 */
    UINT32                      udwMonitorReason;                                    /* 布控类型 参见枚举 NETDEV_VEHICLE_MONITOR_TYPE_E */
    CHAR                        szDescription[NETDEV_FACE_MONITOR_RULE_REASON_LEN];  /* 车辆布控任务的布控描述 */
    UINT32                      udwMonitorAlarmType;                                 /* 布控告警类型 当只有是告警记录才需要携带 0：匹配告警 1：不匹配告警*/
    UINT32                      udwDatabaseID;                                       /* 车辆库ID */
    UINT32                      udwMemberNum;                                        /* 车辆成员数量[0~32] */
    NETDEV_MEMBER_INFO_S        stMemberInfo[NETDEV_LEN_64];                         /* 车辆成员信息 */
    BYTE                        byRes[128];                                          /* 保留字段  Reserved */
}NETDEV_VEHICLE_MONITION_RULE_INFO_S, *LPNETDEV_VEHICLE_MONITION_RULE_INFO_S;

/**
* @struct tagNETDEVVehicleMonitorInfo
* @brief 车辆布控任务信息 结构体定义 Vehicle monitoring task information Structure definition
* @attention 无 None
*/
typedef struct tagNETDEVVehicleMonitorInfo
{
    UINT32   udwMonitorID;                                            /* 车辆布控任务序号 */
    NETDEV_VEHICLE_MONITION_RULE_INFO_S stMonitorRuleInfo;            /* 车辆布控任务配置信息 */

    BYTE    byRes[128];                                               /* 保留字段  Reserved */

}NETDEV_VEHICLE_MONITION_INFO_S, *LPNETDEV_VEHICLE_MONITION_INFO_S;

/**
* @struct tagstNETDEVPlateAttrInfo
* @brief 车牌信息
* @attention
*/
typedef struct tagstNETDEVPlateAttrInfo
{
    CHAR     szPlateNo[NETDEV_LEN_16];                        /* 车牌号 */
    UINT32   udwColor;                                        /* 车牌颜色 参见NETDEV_PLATE_COLOR_E */
    UINT32   udwType;                                         /* 车牌类型，参见NETDEV_PLATE_TYPE_E */
    BYTE     byRes[64];                                       /* 保留字段  Reserved */
}NETDEV_PLATE_ATTR_INFO_S, *LPNETDEV_PLATE_ATTR_INFO_S;

/**
* @struct tagstNETDEVVehicleAttrInfo
* @brief 车辆信息
* @attention
*/
typedef struct tagstNETDEVVehicleAttrInfo
{
    UINT32   udwColor;          /* 车辆颜色 参见NETDEV_VEHICLE_COLOR_E */
    UINT32   udwType;           /* 车辆类型，参见NETDEV_VEHICLE_TYPE_E */
    FLOAT    udwSpeedValue;     /* 车辆速度 double */
    UINT32   udwSpeedUnit;      /* 车辆速度单位 参见枚举 NETDEV_VEHICLE_SPEED_UNIT_E */

    BYTE     byRes[64];         /* 保留字段  Reserved */
}NETDEV_VEHICLE_ATTR_INFO_S, *LPNETDEV_VEHICLE_ATTR_INFO_S;

/**
 * @struct tagNETDEVVehAttr
 * @brief 车辆属性信息
 * @attention 无 None
 */
typedef struct tagNETDEVVehAttr
{
    UINT32 udwType;                                       /* 车辆类型 详见 NETDEV_VEHICLE_TYPE_E */
    UINT32 udwColor;                                      /* 车身颜色 详见 NETDEV_PLATE_COLOR_E */
    UINT32 udwSpeedUnit;                                  /* 车辆速度单位 0：公里/每小时 1：英里/每小时 */
    FLOAT  fSpeedValue;                                   /* 车辆速度 */
    UINT32 udwSpeedType;                                  /* 结构化场景中的机动车车辆速度类型 详见 NETDEV_SPEED_TYPE_E */
    CHAR   szVehicleBrand[NETDEV_LEN_64];                 /* 车辆车标编码（自行编码) */
    UINT32 udwImageDirection;                             /* 结构化场景中的机动车在画面坐标系中的行驶方向 详见 NETDEV_IMAGE_DIRECTION_E */
    BYTE   byRes[128];                                    /* 保留字段 */
}NETDEV_VEH_ATTR_S,*LPNETDEV_VEH_ATTR_S;

/**
 * @struct tagNETDEVVehicleMemberAttr
 * @brief 车辆信息(不能增加预留，会导致NETDEV_VEHICLE_DETAIL_INFO_S预留不够)
 * @attention 无 None
 */
typedef struct tagNETDEVVehicleMemberAttr
{
    UINT32 udwColor;                                      /* 车身颜色 详见枚举NETDEV_PLATE_COLOR_E*/
    NETDEV_FILE_INFO_S stVehicleImage;                    /* 车辆图片 图片加密后大小不超过4M */
}NETDEV_VEHICLE_MEMBER_ATTR_S,*LPNETDEV_VEHICLE_MEMBER_ATTR_S;

/**
* @struct tagstNETDEVVehicleDetailInfo
* @brief 车辆成员信息
* @attention
*/
typedef struct tagstNETDEVVehicleDetailInfo
{
    UINT32                       udwReqSeq;                         /* 请求数据序列号 */
    UINT32                       udwMemberID;                       /* 人脸成员ID */
    NETDEV_PLATE_ATTR_INFO_S     stPlateAttr;                       /* 车牌信息 */
    NETDEV_VEHICLE_MEMBER_ATTR_S stVehicleAttr;                     /* 车辆信息 */
    BOOL                         bIsMonitored;                      /* 是否已布控 0未布控 1已布控 */
    UINT32                       udwDBNum;                          /* 所属车辆库数量 */
    UINT32                       audwDBIDList[NETDEV_LEN_16];       /* 所属车辆库ID数组 */
    BYTE                         byRes[124];                        /* 保留字段  Reserved */
}NETDEV_VEHICLE_DETAIL_INFO_S, *LPNETDEV_VEHICLE_DETAIL_INFO_S;

/**
* @struct tagstNETDEVMonitorAlarmInfo
* @brief 车牌告警布控信息(无法增加预留，会导致NETDEV_VEHICLE_RECORD_INFO_S预留不够)
* @attention
*/
typedef struct tagstNETDEVMonitorAlarmInfo
{
    UINT32 udwMonitorReason;                          /* 布控原因类型 */
    UINT32 udwMonitorAlarmType;                       /* 布控告警类型 0：匹配告警 1：不匹配告警 */
    UINT32 udwMemberID;                               /* 车辆成员ID */
}NETDEV_MONITOR_ALARM_INFO_S,*LPNETDEV_MONITOR_ALARM_INFO_S;

/**
* @struct tagstNETDEVVehicleRcordInfo
* @brief 车辆识别记录信息
* @attention
*/
typedef struct tagstNETDEVVehicleRcordInfo
{
    UINT32   udwRecordID;                                       /* 车辆识别记录ID */
    UINT32   udwChannelID;                                      /* 通道ID，抓拍推送时有效 */
    UINT32   udwPassingTime;                                    /* 过车时间，UTC格式，单位秒*/
    CHAR     szChannelName[NETDEV_LEN_260];                     /* 卡口相机名称 */
    NETDEV_PLATE_ATTR_INFO_S    stPlateAttr;                    /* 车牌抓拍信息 */
    NETDEV_VEH_ATTR_S           stVehAttr;                      /* 车辆抓拍信息 */
    NETDEV_FILE_INFO_S          stPlateImage;                   /* 车牌抓拍图片 图片加密后大小不超过1M*/
    NETDEV_FILE_INFO_S          stVehicleImage;                 /* 车辆抓拍图片 结构化查询时携带 图片加密后大小不超过1M*/
    NETDEV_FILE_INFO_S          stPanoImage;                    /* 全景图 结构化查询时携带 仅携带图片URL和size，图片数据需要通过/LAPI/V1.0/System/Picture接口获取*/
    NETDEV_MONITOR_ALARM_INFO_S stMonitorAlarmInfo;             /* 车牌告警布控信息 */
    BYTE     byRes[132];                                        /* 保留字段  Reserved */
}NETDEV_VEHICLE_RECORD_INFO_S, *LPNETDEV_VEHICLE_RECORD_INFO_S;

/**
* @struct tagstVehicleEventInfo
* @brief 车辆比对报警信息
* @attention
*/
typedef struct tagstVehicleEventInfo
{
    UINT32 udwID;                                              /* 通知记录ID */
    UINT32 udwTimestamp;                                       /* 通知上报时间，UTC格式，单位秒 */
    UINT32 udwNotificationType;                                /* 通知类型 详见 NETDEV_NOTIFICATION_TYPE_E*/
    UINT32 udwVehicleInfoNum;                                  /* 车辆信息数目 [0, 1] */
    LPNETDEV_VEHICLE_RECORD_INFO_S pstVehicleRecordInfo;       /* 车辆信息列表 */
    BYTE     byRes[256];                                       /* 保留字段  Reserved */
}NETDEV_VEHICLE_EVENT_INFO_S,*LPNETDEV_VEHICLE_EVENT_INFO_S;

/**
* @struct tagstNETDEVVehRecognitionEvent
* @brief 车辆识别事件
* @attention
*/
typedef struct tagstNETDEVVehRecognitionEvent
{
    CHAR   szReference[NETDEV_LEN_480];                        /* 订阅者描述信息 */
    UINT32 udwSrcID;                                           /* 告警源ID */
    NETDEV_VEHICLE_EVENT_INFO_S stVehicleEventInfo;            /* 车辆比对报警信息 需动态申请内存 */
    BYTE     byRes[256];                                       /* 保留字段  Reserved */
}NETDEV_VEH_RECOGNITION_EVENT_S, *LPNETDEV_VEH_RECOGNITION_EVENT_S;

/**
 * @struct tagNETDEVFaceMemberRegionInfo
 * @brief 人脸库成员地区信息 
 * @attention 无 None
 */
typedef struct tagNETDEVFaceMemberRegionInfo
{
    CHAR   szNation[NETDEV_FACE_MEMBER_REGION_LEN];                       /* 国籍 */
    CHAR   szProvince[NETDEV_FACE_MEMBER_REGION_LEN];                     /* 省份 */
    CHAR   szCity[NETDEV_FACE_MEMBER_REGION_LEN];                         /* 城市 */
    BYTE   byRes[256];                                                    /* 保留字段  Reserved */

}NETDEV_FACE_MEMBER_REGION_INFO_S,*LPNETDEV_FACE_MEMBER_REGION_INFO_S;
/**
 * @struct tagNETDEVFaceMemberIDInfo
 * @brief 成员证件信息 
 * @attention 无 None
 */
typedef struct tagNETDEVFaceMemberIDInfo
{
    UINT32   udwType;                                       /*证件类型 参见枚举 NETDEV_FACE_MEMBER_ID_TYPE_E */
    CHAR     szNumber[NETDEV_FACE_IDNUMBER_LEN];            /* 证件号 */

    BYTE    byRes[128];                                     /* 保留字段  Reserved */
}NETDEV_FACE_MEMBER_ID_INFO_S,*LPNETDEV_FACE_MEMBER_ID_INFO_S;

/**
 * @struct tagNETDEVFaceMemberInfo
 * @brief 人脸库成员信息 结构体定义 Device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVFaceMemberInfo
{
    UINT32   udwReqSeq;                                                   /* 请求数据序号 */
    UINT32   udwMemberID;                                                 /*人脸库成员ID   只读 post消息时不带*/
    CHAR     szMemberName[NETDEV_FACE_MEMBER_NAME_LEN];                   /* 成员名称 */
    UINT32   udwMemberGender;                                             /* 成员性别 参见枚举 NETDEV_GENDER_TYPE_E */
    CHAR     szMemberBirthday[NETDEV_FACE_MEMBER_BIRTHDAY_LEN];           /* 成员出生日期 */
    NETDEV_FACE_MEMBER_REGION_INFO_S   stMemberRegionInfo;                /* 成员地区信息 */
    NETDEV_FACE_MEMBER_ID_INFO_S       stMemberIDInfo;                    /* 成员证件信息 */
    NETDEV_FILE_INFO_S                 stMemberImageInfo;                 /* 人脸图片信息 */
    NETDEV_FILE_INFO_S                 stMemberSemiInfo;                  /* 人脸半结构化信息 */
    UINT32   udwCustomNum;                                                /* 自定义属性值数量 */
    NETDEV_CUSTOM_VALUE_S   stCustomValue[NETDEV_FACE_MEMBER_CUSTOM_NUM];        /* 自定义属性值列表 */    
    BOOL      bIsMonitored;                                               /* 是否已布控  0未布控，1已布控 */
    UINT32    udwDBNum;                                                   /* 所属人脸库数量 */
    UINT32    audwDBIDList[NETDEV_LEN_16];                                /* 人脸库ID列表 */
    BYTE      byRes[128];                                                 /* 保留字段  Reserved */

}NETDEV_FACE_MEMBER_INFO_S,*LPNETDEV_FACE_MEMBER_INFO_S;

/**
 * @struct tagstNETDEVFaceAlarmCmpInfo
 * @brief 人脸抓拍告警记录比对信息
 * @attention
 */
typedef struct tagstNETDEVFaceAlarmCmpInfo
{
    UINT32                           udwSimilarity;               /* 相似度 */
    NETDEV_FACE_MEMBER_INFO_S        stMemberInfo;                /* 人脸库成员信息 */
    NETDEV_FACE_ALARM_SNAP_IMAGE_S   stSnapshotImage;             /* 抓拍图片 */
    LPNETDEV_PERSON_INFO_S           pstPersonInfo;               /* 人脸库成员信息(NVR支持) 查询匹配成功/失败记录携带 需malloc申请内存 */
    BYTE    byRes[124];                                           /* 保留字段  Reserved */
}NETDEV_FACE_ALARM_CMP_INFO_S, *LPNETDEV_FACE_ALARM_CMP_INFO_S;


/**
 * @struct tagstNETDEVFaceRecordSnapshotInfo
 * @brief 人脸识别记录
 * @attention
 */
typedef struct tagstNETDEVFaceRecordSnapshotInfo
{
    UINT32   udwRecordID;                                       /* 人脸识别记录ID */
    UINT32   udwRecordType;                                     /* 人脸识别记录类型 参见# NETDEV_FACE_PASS_RECORD_TYPE_E */
    UINT32   udwPassTime;                                       /* 过人时间 UTC格式 */
    UINT32   udwEventType;                                      /* 事件类型 按BIT位进行类型描述，相应BIT为1，表示属于该类型，为0表示不属于该类型。BIT0:人脸抓拍BIT1:人脸匹配告警BIT2:人脸不匹配告警*/
    UINT32   udwChannelID;                                      /* 通道ID */
    UINT32   udwMonitorRuleID;                                  /* 告警对应的布控ID */
    CHAR     szChannelName[NETDEV_LEN_260];                     /* 抓拍通道名称 */
    NETDEV_FACE_ALARM_CMP_INFO_S  stCompareInfo;                /* 比对信息 */
    BYTE     byRes[124];                                        /* 保留字段  Reserved */
}NETDEV_FACE_RECORD_SNAPSHOT_INFO_S, *LPNETDEV_FACE_RECORD_SNAPSHOT_INFO_S;

/**
 * @struct tagstNETDEVFaceAlarmLogResultInfo
 * @brief 告警记录返回信息（人脸识别和车牌识别）
 * @attention
 */
typedef struct tagstNETDEVSmartAlarmLogResultInfo
{
    UINT32   udwTotal;                     /* 告警记录总数 */
    UINT32   udwOffset;                    /* 记录偏移量 */
    UINT32   udwNum;                       /* 此次返回告警记录个数 */
    BYTE     byRes[128];                   /* 保留字段  Reserved */
}NETDEV_SMART_ALARM_LOG_RESULT_INFO_S, *LPNETDEV_SMART_ALARM_LOG_RESULT_INFO_S;

/**
* struct tagNETDEVSmartRecordCond
* @brief 智能回放录像查询条件
* @attention 无
*/
typedef struct tagNETDEVSmartRecordCond
{
    INT32       dwChannelID;                              /* 通道号 */
    UINT32      udwPosition;                              /* 录像位置 参见枚举#NETDEV_RECORD_LOCATION_E */
    UINT32      udwGridEnable;                            /* 1表示是宏块，0表示不是 */
    BYTE        awGridAreas[NETDEV_GRID_AREAS_LEN];       /* 宏块值 */
    INT64       tBeginTime;                               /* 起始时间(unix时间戳) */
    INT64       tEndTime;                                 /* 结束时间(unix时间戳) */
    UINT32      udwSensitivity;                           /* 灵敏度，范围1~8 */
    UINT32      udwServerID;                              /* 录像所属服务器ID Video server ID */
    BYTE        byRes[128];                               /* 保留字段  Reserved */      
}NETDEV_SMART_RECORD_COND_S, *LPNETDEV_SMART_RECORD_COND_S;


/**
 * @struct tagstNETDEV_VoiceBroadcastChlInfo
 * @brief 语音广播通道信息
 * @attention
 */
typedef struct tagstNETDEV_VoiceBroadcastChlInfo
{
    UINT32  dwChannelID;               /* 音频通道ID */
    UINT32  dwResultCode;              /* 广播通道状态码 */
    UINT32  dwStatus;                  /* 广播通道声音开启状态 */
}NETDEV_VOICE_BROADCAST_CHL_INFO_S, *LPNETDEV_VOICE_BROADCAST_CHL_INFO_S;

/**
 * @struct tagstNETDEV_VoiceBroadcastGroupInfo
 * @brief 语音广播组信息
 * @attention
 */
typedef struct tagstNETDEV_VoiceBroadcastGroupInfo
{
    INT32                                  dwSize;                                                        /* 广播组通道个数 */
    NETDEV_VOICE_BROADCAST_CHL_INFO_S      astChlInfoList[NETDEV_VOICE_BROADCAST_CHANNEL_NUM_MAX];        /* 所有通道信息 */
}NETDEV_VOICE_BROADCAST_GROUP_INFO_S, *LPNETDEV_VOICE_BROADCAST_GROUP_INFO_S;

/**
 * @struct tagstNETDEV_ModifyVoiceBroadcastInfo
 * @brief 修改语音广播组信息
 * @attention
 */
typedef struct NETDEV_ModifyVoiceBroadcastInfo
{
    LPNETDEV_OPERATE_LIST_S     pstAddChannelList;      /* 新增通道列表 */
    LPNETDEV_OPERATE_LIST_S     pstDelChannelList;      /* 删除通道列表 */
}NETDEV_MODIFY_VOICE_BROADCAST_INFO_S, *LPNETDEV_MODIFY_VOICE_BROADCAST_INFO_S;

/**
 * @struct tagstNETDEV_VoiceBroadcastCtrlInfo
 * @brief 语音广播组控制信息
 * @attention
 */
typedef struct tagstNETDEV_VoiceBroadcastCtrlInfo
{
    INT32   dwChannelID;             /* 通道ID */
    UINT32  udwStatus;               /* 声音状态,开(1),关(0) */
}NETDEV_VOICE_BROADCAST_CTRL_INFO_S, *LPNETDEV_VOICE_BROADCAST_CTRL_INFO_S;


/**
 * @struct tagNETDEVRecordLabel
 * @brief 录像标签信息
 * @attention
 */
typedef struct tagNETDEVRecordLabel
{
    INT32   dwChannelID;                            /* 通道ID */
    UINT32  udwTime;                                /* 标签时间 */
    CHAR    szLabelID[NETDEV_LABEL_ID_MAX_LEN];     /* 标签ID */
    CHAR    szDesc[NETDEV_DESCRIBE_MAX_LEN];        /* 标签描述 */
    UINT32  udwServerID;                            /* 标签所属服务器ID */
    BYTE    byRes[256];                             /* 保留字段 Reserved */
}NETDEV_RECOED_LABEL_S, *LPNETDEV_RECOED_LABEL_S;

/**
 * @struct tagNETDEVLabelDelete
 * @brief 录像标签基本信息
 * @attention
 */
typedef struct tagNETDEVLabelBase
{
    INT32   dwChannelID;                            /* 通道ID */
    CHAR    szLabelID[NETDEV_LABEL_ID_MAX_LEN];     /* 标签ID */
    UINT32  udwResult;                              /* 设备返回结果 参见 NETDEV_RECODE_LABEL_RESULT_E */
    UINT32  udwServerID;                            /* 标签所属服务器ID */
    BYTE    byRes[256];                             /* 保留字段 Reserved */
}NETDEV_LABEL_BASE_S, *LPNETDEV_LABEL_BASE_S;

/**
 * @struct tagNETDEVLabelBase
 * @brief 录像标签基本信息
 * @attention
 */
typedef struct tagNETDEVLabelBaseList
{
    UINT32                  udwPosition;              /* 标签位置 参见 NETDEV_RECORD_LOCATION_E */
    UINT32                  udwSize;                  /* 标签数量 */
    LPNETDEV_LABEL_BASE_S   pstLabelBase;             /* 标签基本信息 */
    UINT32                  udwLabelFailNum;           /* 返回失败的标签数量 */
}NETDEV_LABEL_BASE_LIST_S, *LPNETDEV_LABEL_BASE_LIST_S;

 /**
 * @struct tagNETDEVLabelFindData
 * @brief 录像标签查询信息
 * @attention
 */
typedef struct tagNETDEVLabelFindData
{
    UINT32  udwPosition;               /* 标签位置 参见 NETDEV_RECORD_LOCATION_E */
    UINT32  udwChannelNum;             /* 查询通道数量 */
    INT32   *pdwChannelID;             /* 查询通道号 用户分配内存 */
    INT64   tBeginTime;               /* 起始时间  Start time */
    INT64   tEndTime;                 /* 结束时间  End time */
    CHAR    szDesc[NETDEV_DESCRIBE_MAX_LEN]; /* 标签关键字 */
}NETDEV_LABEL_FINDDATA_S, *LPNETDEV_LABEL_FINDDATA_S;

/**
 * @struct tagRecordSectionInfo
 * @brief 锁定录像段信息
 * @attention
 */
typedef struct tagRecordSectionInfo
{
    CHAR    szLockDecs[NETDEV_RECORD_LOCK_DESC_LEN];                 /* 锁定录像段的描述 */
    INT64   tBeginTime;                                              /* 起始时间  Start time */
    INT64   tEndTime;                                                /* 结束时间  End time */
    UINT32  udwServerID;                                             /* 标签所属服务器ID */
    BYTE    byRes[256];                                              /* 保留字段 */
}NETDEV_RECORD_SECTION_INFO_S,* LPNETDEV_RECORD_SECTION_INFO_S;

/**
 * @struct tagstNETDEVLockIDInfo
 * @brief 锁定ID
 * @attention
 */
typedef struct tagstNETDEVLockIDInfo
{
    CHAR    szLockIDInfo[NETDEV_RECORD_LOCK_ID_LEN];                  /* 锁定ID */
    UINT32  udwServerID;                                              /* 标签所属服务器ID */
    BYTE    byRes[256];                                               /* 保留字段 */
}NETDEV_LOCK_ID_INFO_S, *LPNETDEV_LOCK_ID_INFO_S;

/**
 * @struct tagstNETDEVLockIDList
 * @brief 锁定ID列表
 * @attention
 */
typedef struct tagstNETDEVLockIDList
{
    INT32                       dwSize;             /* 锁定ID个数 */
    LPNETDEV_LOCK_ID_INFO_S     pszLockIDInfo;      /* 锁定ID列表，动态申请dwsize内存*/
}NETDEV_LOCK_ID_LIST_S, *LPNETDEV_LOCK_ID_LIST_S;




/**
 * @struct tagRecordLockQryInfo
 * @brief 锁定录像查询信息
 * @attention
 */
typedef struct tagNETDEVRecordLockQryInfo
{
    UINT32              udwPosition;        /* 录像查询位置 */
    INT64               tBeginTime;         /* 起始时间  Start time */
    INT64               tEndTime;           /* 结束时间  End time */
    NETDEV_CHANNELS_S   stChannels;         /* 多通道ID */
    BYTE                byRes[256];         /* 保留字段 */
}NETDEV_RECORD_LOCK_FIND_COND_S,* LPNETDEV_RECORD_LOCK_FIND_COND_S;

/**
 * @struct tagRecordLockInfo
 * @brief 锁定录像信息
 * @attention
 */
typedef struct tagNETDEVRecordLockInfo
{
    NETDEV_LOCK_ID_INFO_S           stLockIDInfo;               /* 录像锁定ID */
    INT32                           dwChannelID;                /* 通道ID */
    NETDEV_RECORD_SECTION_INFO_S    stRecordSectionInfo;        /*录像段信息*/
    BYTE                            byRes[256];                 /* 保留字段 */
}NETDEV_RECORD_LOCK_INFO_S,* LPNETDEV_RECORD_LOCK_INFO_S;

/** 
 * @struct tagNETDEVAddress
 * @brief 地址 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVAddress
{
    UINT32  udwAddressType;                     /* 地址类型,参见枚举#NETDEV_ADDRESS_TYPE_E */
    CHAR    szAddress[NETDEV_IP_ADDRESS_LEN];   /* 地址 */
    BYTE    byRes[256];                         /* 保留字段  Reserved */
}NETDEV_ADDRESS_S,*LPNETDEV_ADDRESS_S;

/** 
 * @struct tagNETDEVHotStandbyParam
 * @brief 热备配置参数 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVHotStandbyParam
{
    UINT32              udwVirtualRouterID;                              /* 虚拟路由ID */
    CHAR                szVirtualNETMask[NETDEV_IP_ADDRESS_LEN];         /* 网络掩码 */
    UINT32              udwCleanupFlag;                                  /* 报警日志数据清除标志,参见枚举#NETDEV_ALARM_LOG_CLEANUP_FLAG_E */
    NETDEV_ADDRESS_S    stMasterAddress;                                 /* 主机地址 */
    NETDEV_ADDRESS_S    stBackupAddress;                                 /* 备机地址 */
    NETDEV_ADDRESS_S    stVirtualAddress;                                /* 虚拟地址 */
    BYTE                byRes[256];                                      /* 保留字段  Reserved */
}NETDEV_HOTSTANDBY_PARAM_S,*LPNETDEV_HOTSTANDBY_PARAM_S;

/**
 * @struct tagNETDEVMasterSlaveState
 * @brief 一体机主从状态 结构体定义 VMS Master_Slave State Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVMasterSlaveState
{
    UINT32                      udwMode;                             /* 主从模式,参见枚举#NETDEV_VMS_MODE_E */
    UINT32                      udwStatus;                           /* 主从服务器的状态,参见枚举#NETDEV_VMS_STATUS_E */
    NETDEV_ADDRESS_S            stVMSAddress;                        /* 一体机地址 */
    UINT32                      udwHotStandbyMode;                   /* 热备模式,参见枚举#NETDEV_VMS_HOTSTANDBYMODE_E */
    NETDEV_HOTSTANDBY_PARAM_S   stHotStandbyParam;                   /* 热备配置设置和获取的参数 */
    UINT32                      udwOldHotStandbyMode;                /* 原先配置文件中的主备模式,参见枚举#NETDEV_VMS_HOTSTANDBYMODE_E */
    BYTE                        byRes[256];                          /* 保留字段 */
}NETDEV_MASTER_SLAVE_STATE_S,*LPNETDEV_MASTER_SLAVE_STATE_S;




/**
 * @struct tagNETDEVVodFile
 * @brief 录像文件 结构体定义 Recording file Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVVodFile
{
    CHAR                    szFileName[NETDEV_NAME_MAX_LEN];        /* 录像文件名  Recording file name */
    NETDEV_STORE_TYPE_E     enType;                                 /* 录像存储类型  Recording storage type */
    INT64                   tBeginTime;                             /* 起始时间  Start time */
    INT64                   tEndTime;                               /* 结束时间  End time */
}NETDEV_VOD_FILE_S, *LPNETDEV_VOD_FILE_S;


/**
 * @struct tagNETDEVPictureDataEx
 * @brief 图像数据 结构体定义 Image data Structure definition
 *        存放解码后图像数据的指针和长度等信息 Storing pointer and length of decoded picture data
 * @attention 无 None
 */
typedef struct tagNETDEVPictureDataEx
{
    BYTE    *pucData[4];                /* pucData[0]:Y 平面指针,pucData[1]:U 平面指针,pucData[2]:V 平面指针  pucData[0]: Y plane pointer, pucData[1]: U plane pointer, pucData[2]: V plane pointer */
    INT32   dwLineSize[4];              /* ulLineSize[0]:Y平面每行跨距, ulLineSize[1]:U平面每行跨距, ulLineSize[2]:V平面每行跨距  ulLineSize[0]: Y line spacing, ulLineSize[1]: U line spacing, ulLineSize[2]: V line spacing */
    INT32   dwPicHeight;                /* 图片高度  Picture height */
    INT32   dwPicWidth;                 /* 图片宽度  Picture width */
    INT32   dwRenderTimeType;           /* 用于渲染的时间数据类型  Time data type for rendering */
    INT64   tRenderTime;                /* 用于渲染的时间数据  Time data for rendering */
    INT32   dwFrameRate;                /* 帧率 */
    BYTE    byRes[32];                  /* 保留字段 */
}NETDEV_PICTURE_DATA_EX_S, *LPNETDEV_PICTURE_DATA_EX_S;



/**
* @struct tagstNETDEVGpuAbleState
* @brief GPU使能状态结构体
* @attention 无
*/
typedef struct tagstNETDEVGpuAbleState
{
    BOOL bGpuAbleH264;            /* GPU使能-H.264标准*/
    BOOL bGpuAbleH265;            /* GPU使能-H.265标准 */
    BOOL bGpuAbleMJPEG;           /* GPU使能-MJEGP标准 */
    BOOL bGpuAbleMPEG2;           /* GPU使能-MPEG-2标准 */
    BOOL bGpuAbleMPEG4;           /* GPU使能-MPEG-4标准 */
    BOOL bReserved1;              /* 预留类型1 */
    BOOL bReserved2;              /* 预留类型2 */
    BOOL bReserved3;              /* 预留类型3 */
}NETDEV_GPU_ABLESTATE_S,*LPNETDEV_GPU_ABLESTATE_S;

/**
 * @struct tagstNETDEVXWEncodeChnProperty
 * @brief 本地编码通道通道属性
 * @attention
 */
typedef struct tagstNETDEVXWEncodeChnProperty
{
    INT32 dwVideoSrc;                                     /* 视频输入格式 NETDEV_VIDEO_SRC_TYPE_E */
    BYTE   byRes[512];
}NETDEV_XW_ENCODE_CHN_PROPERTY_S, *LPNETDEV_XW_ENCODE_CHN_PROPERTY_S;



/**
 * @struct tagNETDEVLogFindCondV30
 * @brief 日志查询条件 结构体定义 Log query condition Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVLogFindCondV30
{
    NETDEV_LOG_MAIN_TYPE_E  enMainType;         /* 主类型  Main type */
    NETDEV_LOG_SUB_TYPE_E   enSubType;          /* 次类型  Sub type */
    INT64                   tBeginTime;         /* 起始时间  Start time */
    INT64                   tEndTime;           /* 结束时间  End time */
}NETDEV_LOG_FIND_COND_V30_S, *LPNETDEV_LOG_FIND_V30_COND_S;


/**
 * @struct tagstNETDEVUserLogInfo
 * @brief 用户登录信息
 * @attention
 */
typedef struct tagstNETDEVUserLogInfo
{
    CHAR   szUserName[NETDEV_USERNAME_LEN];                     /* 用户名 */
    INT32  dwUserHandle;                                        /* 用户ID(登录句柄) */
    NETDEV_IPADDR_INFO_S   stUserIPAddr;                        /* 用户IP地址 */
}NETDEV_USER_LOG_INFO_S, *LPNETDEV_USER_LOG_INFO_S;

/**
 * @struct tagstNETDEVUserEventType
 * @brief 用户事件类型
 * @attention
 */
typedef struct tagstNETDEVUserEventType
{
    INT32 dwMajorType;                                  /* 主类型 */
    INT32 dwMinorType;                                  /* 子类型 */
}NETDEV_USER_EVENT_TYPE_S, *LPNETDEV_USER_EVENT_TYPE_S;

/**
 * @struct tagstNETDEVEventNotifyInfo
 * @brief 事件订阅信息
 * @attention
 */
typedef struct tagstNETDEVEventNotifyInfo
{    
    NETDEV_USER_EVENT_TYPE_S    stEventType;            /* 事件类型 */
    INT32 dwParamLen;                                   /* 参数长度 */
}NETDEV_EVENT_NOTIFY_TYPE_S, *LPNETDEV_EVENT_NOTIFY_TYPE_S;

/**
 * @struct tagstNETDEVDateInfo
 * @brief 时间信息
 * @attention
 */
typedef struct tagstNETDEVDateInfo
{
    INT32     dwYear;                               /* 所在年份 */
    INT32     dwMonth;                              /* 所在月份 */
    INT32     dwDay;                                /* 具体日期 */
    INT32     dwHour;                               /* 具体小时 */
    INT32     dwMinute;                             /* 具体分钟 */
    BYTE      byRes[32];                            /* 保留字段 */
}NETDEV_DATE_INFO_S, *LPNETDEV_DATE_INFO_S;

/**
 * @enum tagClientType
 * @brief 客户端类型
 * @attention 无 None
 */
typedef enum tagClientType
{
    NETDEV_CLIENT_TYPE_EZVMS    = 0,
    NETDEV_CLIENT_TYPE_EZGATE   = 1,
    NETDEV_CLIENT_TYPE_EZASSIST = 2,

    NETDEV_CLIENT_TYPE_IVALID   = 0xff
}NETDEV_CLIENT_TYPE_E;

/**
 * @struct tagstNETDEVClientVersionsInfo
 * @brief 客户端版本信息
 * @attention
 */
typedef struct tagstNETDEVClientVersionsInfo
{
    UINT32                              udwType;                                            /* 客户端类型 参见枚举# NETDEV_CLIENT_TYPE_E */
    CHAR                                szVersion[NETDEV_LEN_256];                          /* 客户端独立版本号， 范围[0, 255] */

    BYTE                                byRes[32];                                          /* 保留字段 */
}NETDEV_CLIENT_VERSION_INFO_S, *LPNETDEV_CLIENT_VERSION_INFO_S;

/**
 * @struct tagstNETDEVClientVersionsInfoList
 * @brief 客户端版本信息列表
 * @attention
 */
typedef struct tagstNETDEVClientVersionsInfoList
{
    UINT32                                  udwNum;                                          /* 数量 */
    LPNETDEV_CLIENT_VERSION_INFO_S          pstClientVersionsInfo;                           /* 客户端版本信息列表 */

    BYTE                                    byRes[32];                                       /* 保留字段 */
}NETDEV_CLIENT_VERSION_INFO_LIST_S, *LPNETDEV_CLIENT_VERSION_INFO_LIST_S;

/**
 * @struct tagNETDEVDeviceBaseInfo
 * @brief 设备信息
 * @attention 无
 */
typedef struct tagNETDEVDeviceBaseInfo
{
    INT32 dwChlID;                                              /* 视频输入通道号  Video input channel ID */
    INT32 dwDeviceType;                                         /* 设备类型  Device Type */
    INT32 dwDevCode;                                            /* 设备编号  Device code */
    INT32 dwCurrentLang;                                        /* 设备当前语言 参见枚举#NETDEV_LANG_TYPE_E Current language NETDEV_LANG_TYPE_E*/
    NETDEV_DATE_INFO_S stBuildDate;                             /* 发布时间  Release time */
    CHAR szSerialNum[NETDEV_LEN_32];                            /* 设备序列号  Device serial number */
    CHAR szMacAddress[NETDEV_LEN_64];                           /* IPv4的Mac地址  MAC address of IPv4 */
    CHAR szDevName[NETDEV_CODE_STR_MAX_LEN];                    /* 设备名称  Device name */
    CHAR szDevModel[NETDEV_CODE_STR_MAX_LEN];                   /* 设备型号  Device model */
    CHAR szVIIDVersion[NETDEV_CODE_STR_MAX_LEN];                /* 视图库组件版本号  VIIDVersion version */
    CHAR szSoftwareVersion[NETDEV_CODE_STR_MAX_LEN];            /* 内部软件版本 Internal software version */
    CHAR szFirmwareVersion[NETDEV_CODE_STR_MAX_LEN];            /* 软件版本号  Software version */
    CHAR szHardewareID[NETDEV_CODE_STR_MAX_LEN];                /* 硬件标识  Hardware ID */
    CHAR szUbootVersion[NETDEV_CODE_STR_MAX_LEN];               /* UBOOT引导版本  UBOOT version */
    CHAR szManufacturer[NETDEV_LEN_64];                         /* 厂商名称，字符串长度[1,64]  Manufacturer */
    NETDEV_CLIENT_VERSION_INFO_LIST_S stClientVersionsInfo;     /* 版本信息，可选：仅一体机支持  Client Versions Infos */

    BYTE byRes[472];                                        /* 保留字段 Reserved */
}NETDEV_DEVICE_BASE_INFO_S, *LPNETDEV_DEVICE_BASE_INFO_S;

/**
 * @struct tagNETDEVNetWorkCardDetailInfo
 * @brief 网卡详细信息
 * @attention 无
 */
typedef struct tagNETDEVNetWorkCardDetailInfo
{
    CHAR                          szNetCardName[NETDEV_LEN_32];                           /* 网卡名称，范围[0,16] */
    UINT32                        udwInBoundRate;                                         /* 接收带宽使用情况，单位Kbps */
    UINT32                        udwOutBoundRate;                                        /* 发送带宽使用情况，单位Kbps */

    BYTE byRes[256];                                        /* 保留字段 Reserved */
}NETDEV_NETWORK_CARD_DETAIL_INFO_S, *LPNETDEV_NETWORK_CARD_DETAIL_INFO_S;

/**
 * @struct tagNETDEVDeviceRunInfo
 * @brief 设备运行信息
 * @attention 无
 */
typedef struct tagNETDEVDeviceRunInfo
{
    UINT32                        udwRuntime;                                                /* 设备运行时间，单位s */
    UINT32                        udwCPUUsage;                                               /* 设备CPU使用率，百分比，VMS支持 */
    UINT32                        udwMemUsage;                                               /* 设备内存使用率，百分比，VMS支持 */
    UINT32                        udwNetInterfaceNum;                                        /* 网卡的数量，VMS支持 */
    NETDEV_NETWORK_CARD_DETAIL_INFO_S astNetInterfaceInfoList[NETDEV_MAX_NET_WORK_CARD_NUM]; /* 网卡信息列表，当NetCardNum值为0时该节点可选 */

    BYTE byRes[512];                                        /* 保留字段 Reserved */
}NETDEV_DEVICE_RUN_INFO_S, *LPNETDEV_DEVICE_RUN_INFO_S;

/**
 * @struct tagNETDEVMotionIntervalInfo
 * @brief 运动检测告警参数 Motion Interval Info
 * @attention 无 None
 */
typedef struct tagNETDEVMotionIntervalInfo
{
    UINT32    udwSuppressTime;                                     /* 报警抑制间隔时间,单位:秒,范围[5, 3600] */
    UINT32    udwClearTime;                                        /* 报警恢复间隔时间,单位:秒,范围[1,600] */

    BYTE    byRes[512];                                            /* 保留字段  Reserved */
}NETDEV_MOTION_INTERVAL_INFO_S, *LPNETDEV_MOTION_INTERVAL_INFO_S;
/************************************************************************/
/*                            组织 ORG                                 */
/************************************************************************/

/**
 * @struct tagstNETDEVOrgChnShortInfo
 * @brief 组织下通道数量信息
 * @attention
 */
typedef struct tagstNETDEVOrgChnShortInfo
{
    INT32 dwOrgID;              /* 组织ID */
    INT32 dwChannelsNum;        /* 通道个数 */
    INT32 *pdwChnIDs;           /* 通道ID 指针 根据通道个数动态申请内存 */

    BYTE  byRes[68];            /* 保留字段  Reserved field*/
}NETDEV_ORG_CHN_SHORT_INFO_S, *LPNETDEV_ORG_CHN_SHORT_INFO_S;


/**
 * @struct tagstNETDEVOrgDetailInfo
 * @brief 待删除组织详细信息
 * @attention
 */
typedef struct tagstNETDEVDelOrgDetailInfo
{    
    INT32 dwOrgNum;     /* 组织数量 */
    INT32 *pdwOrgIDs;   /* 需要删除的组织ID，根据dwOrgNum 动态申请 */
    INT32 dwOrgType;    /* 组织类型 见 NETDEV_ORG_TYPE_E */
    BYTE  byRes[64];    /* 保留字段  Reserved field*/
}NETDEV_DEL_ORG_INFO_S, *LPNETDEV_DEL_ORG_INFO_S;

/**
 * @struct tagstNETDEVOrgDelDetailInfo
 * @brief 批量删除组织返回信息
 * @attention
 */
typedef struct tagstNETDEVOrgDelDetailInfo
{    
    INT32 dwStatus;                             /* 响应状态，类型 参见 NETDEV_ORG_RESPONSE_STAUTE_E */
    INT32 dwNum;                                /* 响应数量 */
    LPNETDEV_OPERATE_INFO_S pstResultInfo;      /*批量删除返回信息，根据删除数量动态申请*/

    BYTE  byRes[68];                            /* 保留字段  Reserved field*/
}NETDEV_ORG_BATCH_DEL_INFO_S, *LPNETDEV_ORG_BATCH_DEL_INFO_S;


/**
 * @struct tagNETDEVDCPlaybackCond
 * @brief DC录像回放参数 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVDCPlaybackCond
{
    INT32   dwChannelID;                    /* 通道ID  Channel ID */
    INT32   dwTVWallID;                     /* 电视墙ID */
    INT32   dwWinIndex;                     /* 窗口索引 */
    INT32   dwSubWinIndex;                  /* 子窗口索引 */
    INT32   dwStreamType;                   /* 流类型,#参见NETDEV_STREAM_TYPE_E */
    INT64   tBeginTime;                     /* 开始时间 */
    INT64   tEndTime;                       /* 结束时间 */
    INT32   dwTransProto;                   /* 传输协议,#参见NETDEV_TRANSPORT_PROTOCOL_E */
    INT32   dwRecordType;                   /* 录像类型,.参见#NETDEV_STORE_TYPE_E */
    INT32   dwRecordLocation;               /* 录像存储位置，参见#NETDEV_RECORD_LOCATION_E */
    BOOL    bRealtimeSync;                  /* 是否即时生效 */
    CHAR    szUrl[NETDEV_LEN_260];          /* 回放Url */
    BYTE    byRes[196];                     /* 保留字段  Reserved */
}NETDEV_DC_PLAYBACK_COND_S, *LPNETDEV_DC_PLAYBACK_COND_S;

/**
 * @struct tagNETDEVDCPlaybackCond
 * @brief DC录像回放转发回显参数 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVDCTransWinCond
{
    INT32   dwChannelID;                /* 被绑定的编码通道ID */
    UINT32  udwSessionID;               /* 回放的业务号 */
    INT64   tBeginTime;                 /* 回放开始时间 */
    INT64   tEndTime;                   /* 回放结束时间 */
    INT32   dwLinkMode;                 /* 传输协议，参见枚举#NETDEV_TRANS_PROTOCAL_E */
    LPVOID  hPlayWnd;                   /* 回显的窗格句柄 */
    INT32   dwTransType;                /* 传输类型，参见枚举#NETDEV_TRANS_TYPE_E */
    BYTE    byRes[124];                 /* 保留字段 */
}NETDEV_DC_TRANS_WIN_COND_S, *LPNETDEV_DC_TRANS_WIN_COND_S;




/**
 * @struct tagstNETDEVAlarmPlanAlarmSrcInfo
 * @brief 告警预案告警源信息
 * @attention
 */
typedef struct tagstNETDEVAlarmPlanAlarmSrcInfo
{
    INT32 dwAlarmType;          /* 告警类型 */
    INT32 dwAlarmSubType;       /* 告警子类型 */
    INT32 dwAlarmSrcID;         /* 告警源ID */
}NETDEV_ALARM_PLAN_ALARMSRCINFO_S, *LPNETDEV_ALARM_PLAN_ALARMSRCINFO_S;

/**
 * @struct tagstNETDEVAlarmPlanLinkPreset
 * @brief 告警预案联动预置位信息
 * @attention
 */
typedef struct tagstNETDEVAlarmPlanLinkPreset
{
    INT32 dwChnID;      /* 联动预置位通道ID */
    INT32 dwPresetID;   /* 联动预置位序号 */
}NETDEV_ALARM_PLAN_LINKPRESET_S, *LPNETDEV_ALARM_PLAN_LINKPRESET_S;

/**
 * @struct tagstNETDEVAlarmPlanLinkSwitchOut
 * @brief 告警预案联动开关量输出信息
 * @attention
 */
typedef struct tagstNETDEVAlarmPlanLinkSwitchOut
{
    INT32   dwSwitchOutChnID; /* 联动开关量输出通道号ID */
    BYTE    byRes[256];
}NETDEV_ALARM_PLAN_LINKSWITCHOUT_S, *LPNETDEV_ALARM_PLAN_LINKSWITCHOUT_S;

/**
 * @struct tagstNETDEVAlarmPlanLinkMonitor
 * @brief 告警预案联动实况信息
 * @attention
 */
typedef struct tagstNETDEVAlarmPlanLinkMonitor
{
    INT32 dwChnID;                          /* 联动实况通道号ID */
    INT32 dwMonitorDelay;                   /* 联动实况持续时间 单位s */
}NETDEV_ALARM_PLAN_LINKMONITOR_S, *LPNETDEV_ALARM_PLAN_LINKMONITOR_S;

/**
 * @struct tagstNETDEVAlarmPlanLinkTvwall
 * @brief 联动报警上墙信息
 * @attention
 */
typedef struct tagstNETDEVAlarmPlanLinkTvwall
{
    INT32 dwTaskID;                          /* 报警上墙任务ID */
    INT32 dwTaskDelayTime;                   /* 持续时间 */
}NETDEV_ALARM_PLAN_LINKTVWALL_S, *LPNETDEV_ALARM_PLAN_LINKTVWALL_S;

/**
 * @struct tagstNETDEVAlarmPlanLinkRuleInfo
 * @brief 告警预案联动规则信息
 * @attention
 */
typedef struct tagstNETDEVAlarmPlanLinkRuleInfo
{
    INT32 dwLinkType;                                                                   /* 联动类型(比特位操作)，参见#NETDEV_ALARM_LINK_TYPE_E */
    INT32 dwLinkPresetSize;                                                             /* 联动预置位数量*/
    NETDEV_ALARM_PLAN_LINKPRESET_S astLinkPreset[NETDEV_ALARM_LINK_PRESET_NUM];         /* 预置位详细信息*/
    INT32 dwSwitchOutSize;                                                              /* 联动告警输出通道数量*/
    NETDEV_ALARM_PLAN_LINKSWITCHOUT_S astSwitchOut[NETDEV_ALARM_LINK_SWITCHOUT_NUM];    /* 联动告警输出通道信息*/
    INT32 dwLinkMonitorSize;                                                            /* 联动实况数量*/
    BOOL bIsMonitorLinkScr;                                                             /* 是否联动告警源自身 0：非联动告警源自身 1：联动告警源自身 */
    NETDEV_ALARM_PLAN_LINKMONITOR_S astLinkMonitor[NETDEV_ALARM_LINK_MONITOR_NUM];      /* 联动实况信息*/
    INT32 dwLinkTVWallSize;                                                             /* 联动电视墙个数*/
    NETDEV_ALARM_PLAN_LINKTVWALL_S astLinkTVWall[NETDEV_ALARM_LINK_TVWALL_NUM];         /* 联动报警上墙信息*/
    CHAR szLinkSoundInfo[NETDEV_ALARM_LINK_SOUND_LEN];                                  /* 联动声音信息 */

    BYTE    byRes[512];                                                                 /* 保留字段  Reserved */
}NETDEV_ALARM_PLAN_LINKRULEINFO_S, *LPNETDEV_ALARM_PLAN_LINKRULEINFO_S;

/**
 * @struct tagstNETDEVAlarmPlanLinkInfo
 * @brief 告警预案联动信息
 * @attention
 */
typedef struct tagstNETDEVAlarmPlanLinkInfo
{
    INT32 dwLinkRuleID;                                                         /* 联动规则ID */
    INT32 dwAlarmSrcSize;                                                       /* 告警源数量 */
    NETDEV_ALARM_PLAN_ALARMSRCINFO_S astAlarmSrc[NETDEV_ALARM_SOURCE_NUM];      /* 告警源信息 */
    NETDEV_ALARM_PLAN_LINKRULEINFO_S stLinkRuleInfo;                            /* 联动规则信息 */
}NETDEV_ALARM_PLAN_LINKINFO_S, *LPNETDEV_ALARM_PLAN_LINKINFO_S;

/**
 * @struct tagstNETDEVAlarmPlanDetailInfo
 * @brief 告警预案详细信息
 * @attention
 */
typedef struct tagstNETDEVAlarmPlanDetailInfo
{
    INT32   dwPlanType;                                                 /* 告警布防预案类型 */
    INT32   dwPlanID;                                                   /* 预案ID */
    CHAR    szPlanName[NETDEV_NAME_MAX_LEN];                            /* 预案名称 */
    INT32   dwTimeTamplateID;                                           /* 时间模板ID */
    CHAR    szPlanDesc[NETDEV_DESCRIBE_MAX_LEN];                        /* 预案描述 */
    BOOL    bEnable;                                                    /* 是否启用预案 */
    INT32   dwLinkInfoSize;                                             /* 预案联动数量信息 */
    NETDEV_ALARM_PLAN_LINKINFO_S astLinkInfo[NETDEV_ALARM_LINK_NUM];    /* 预案联动信息 */
}NETDEV_ALARM_PLAN_DETAILINFO_S, *LPNETDEV_ALARM_PLAN_DETAILINFO_S;

/**
 * @struct tagstNETDEVTimeTemplateList
 * @brief 时间模板列表
 * @attention
 */
typedef struct tagstNETDEVTimeTemplateList
{
    INT32   dwSize;                                                         /* 模板大小 */
    NETDEV_TIME_TEMPLATE_S astTimeTemplate[NETDEV_TIME_TEMPLATE_NUM];       /* 时间模板信息 */
}NETDEV_TIME_TEMPLATE_LIST_S, *LPNETDEV_TIME_TEMPLATE_LIST_S;


/**
 * @struct tagstNETDEVViewBasicInfo
 * @brief 轮巡预案基本信息
 * @attention
 */
typedef struct tagstNETDEVViewBasicInfo
{
    INT32   dwPlanID;                                           /* 预案ID */
    CHAR    szPlanName[NETDEV_NAME_MAX_LEN];                    /* 预案名称 */
    INT32   dwOrderNo;                                          /* 计划序号 */
    CHAR    szPlanDesc[NETDEV_DESCRIBE_MAX_LEN];                /* 预案描述 */
    INT32   dwLayout;                                           /* 分屏模式, 参见#NETDEV_LAYOUT_TYPE_E */
    BYTE    byRes[124];                                         /* 保留字段  Reserved */
}NETDEV_VIEW_BASIC_INFO_S, *LPNETDEV_VIEW_BASIC_INFO_S;

/**
 * @struct tagstNETDEVScenesTimeTable
 * @brief 轮巡计划时间表模式信息
 * @attention
 */
typedef struct tagstNETDEVScenesTimeTable
{
    UINT32   udwScenseID;                             /* 场景ID */
    CHAR     szStartTime[NETDEV_LEN_16];              /* 开始时间 HH:MM     最大长度: 8*/
    BYTE     byRes[128];                              /* 保留字段  Reserved */
}NETDEV_SCENES_TIME_TABLE_INFO_S, *LPNETDEV_SCENES_TIME_TABLE_INFO_S;

/**
 * @struct tagstNETDEVScenesPlanInfo
 * @brief 轮巡计划信息
 * @attention
 */
typedef struct tagstNETDEVScenesPlanInfo
{
    NETDEV_VIEW_BASIC_INFO_S         stScenesBasicInfo;                  /* 轮巡预案基本信息 */
    UINT32   udwStatus;                                                  /* 计划状态 参见 NETDEV_DC_SEQ_STATUS_E */
    UINT32   udwPlanMode;                                                /* 计划方式  0：定时切换 1：24小时计划表 参见枚举NETDEV_PLANS_MODE_E */
    UINT32   udwInterval;                                                /* 时间间隔（属于定时切换模式信息）, 单位：秒， 当PlanMode为0时必选 */
    UINT32   udwSceneNum;                                                /* 场景个数（属于定时切换模式信息）   当PlanMode为0时必选*/
    UINT32   audwSceneID[NETDEV_LEN_1024];                               /* 场景ID列表（属于定时切换模式信息）  当PlanMode为0时必选*/
    UINT32   udwTimeTableNum;                                            /*时间表模式成员个数*/
    NETDEV_SCENES_TIME_TABLE_INFO_S   astTimeTable[NETDEV_LEN_1024];     /* 时间表模式信息列表  当PlanMode为1时必选*/
    BYTE     byRes[128];                                                 /* 保留字段  Reserved */
}NETDEV_SCENES_PLAN_INFO_S, *LPNETDEV_SCENES_PLAN_INFO_S;

/**
 * @struct tagstNETDEVResInfo
 * @brief 轮巡资源信息
 * @attention
 */
typedef struct tagstNETDEVResInfo
{
    INT32   dwWinIndex;                                                 /* 窗口索引 */
    INT32   dwResType;                                                  /* 资源类型 参考枚举#NETDEV_VIEW_TYPE_E*/
    INT32   dwResID;                                                    /* 资源ID */
    INT32   dwStreamIndex;                                              /* 码流索引 */
    INT32   dwPresetID;                                                 /* 预置位ID */
}NETDEV_RES_INFO_S, *LPNETDEV_RES_INFO_S;

/**
 * @struct tagstNETDEVViewDetailInfo
 * @brief 视图详细信息
 * @attention
 */
typedef struct tagstNETDEVViewDetailInfo
{
    NETDEV_VIEW_BASIC_INFO_S       stBasicInfo;                                      /* 基本信息 */
    INT32                          dwViewResSize;                                    /* 视图资源数量 */
    NETDEV_RES_INFO_S              astViewResInfo[NETDEV_VIEW_MAX_WIN_NUM];          /* 视图资源详细信息 */
}NETDEV_VIEW_DETAIL_INFO_S, *LPNETDEV_VIEW_DETAIL_INFO_S;


/**
 * @struct tagstNETDEVViewPlanModeInfo
 * @brief 视图计划模式详细信息
 * @attention
 */
typedef struct tagstNETDEVViewPlanModeInfo
{
    UINT32   udwViewID;                                                  /* 视图ID*/
    UINT32   udwInterval;                                                /* 时间间隔 模式为定时切换模式时必选，单位：秒*/
    CHAR     szStartTime[NETDEV_LEN_16];                                 /* 开始时间时 模式为时间表模式时必选，HH:MM， 长度范围：[1, 8]*/
    BYTE     byRes[128];                                                 /* 保留字段  Reserved */
}NETDEV_VIEW_PLAN_MODE_INFO_S, *LPNETDEV_VIEW_PLAN_MODE_INFO_S;

/**
 * @struct tagstNETDEVViewPlanInfo
 * @brief 视图计划信息
 * @attention
 */
typedef struct tagstNETDEVViewPlanInfo
{
    NETDEV_VIEW_BASIC_INFO_S         stScenesBasicInfo;                     /* 轮巡预案基本信息 */
    UINT32   udwStatus;                                                     /* 计划状态 参见 NETDEV_DC_SEQ_STATUS_E*/
    UINT32   udwPlanMode;                                                   /* 计划方式  0：定时切换 1：24小时计划表, 参见枚举NETDEV_PLANS_MODE_E*/
    NETDEV_VIEW_PLAN_MODE_INFO_S    astViewPlanInfoList[NETDEV_LEN_1024];                   /*计划信息列表 根据udwPlanMode 进行对应内容的填充*/
    UINT32   udwPlanNum;                                                    /* 计划信息列表中计划的个数*/
    BYTE     byRes[128];                                                    /* 保留字段  Reserved */
}NETDEV_VIEW_PLAN_INFO_S, *LPNETDEV_VIEW_PLAN_INFO_S;

/**
 * @struct tagstNETDEVEMapPicInfo
 * @brief 电子地图 图片信息
 * @attention 
 */
typedef struct tagstNETDEVEMapPicInfo
{
    UINT32  udwID;                                /* 图片ID */
    CHAR    szName[NETDEV_LEN_128];               /* 图片名称，范围[0,127]字符 */
    UINT32  udwType;                              /* 图片类型 参见 NETDEV_EMAP_PIC_TYPE */
    UINT32  udwSubType;                           /* 图标子类型，图片类型为1时SubType必带 参见 NETDEV_EMAP_PIC_SUBTYPE */
    BOOL    bIsBuiltin;                           /* 是否为内置图片，只读。 1：是 0：否 */
    CHAR    szURL[NETDEV_LEN_128];                /* 图片URL */
    BYTE    byRes[128];                           /* 保留字段 */
}NETDEV_EMAP_PIC_INFO_S, *LPNETDEV_EMAP_PIC_INFO_S;

/**
 * @struct tagstNETDEVEEmapMarkerStyle
 * @brief 电子地图标记样式
 * @attention 
 */
typedef struct tagstNETDEVEEmapMarkerStyle
{
    UINT32  udwColor;       /* 颜色 参见 NETDEV_EMAP_MARKER_COLOR_E */
    UINT32  udwPicID;       /* 热区、热点图标对应的图片ID */
}NETDEV_EMAP_MARKER_STYLE_S;
/**
 * @struct tagstNETDEVEMapMarkerInfo
 * @brief 电子地图标记信息
 * @attention 
 */
typedef struct tagstNETDEVEMapMarkerInfo
{
    UINT32  udwID;                                 /* 热点ID。 添加热点时不携带此字段。 */
    UINT32  udwPID;                                /* 父热区ID。 修改本地图片、热点时不携带此字段。 */
    UINT32  udwType;                               /* 标记类型，参见# NETDEV_EMAP_MARKER_TYPE_E */
    UINT32  udwLinkID;                             /* 热区时为地图ID，热点是为通道ID */
    NETDEV_EMAP_MARKER_STYLE_S stMarkerStyle;      /* 样式 */
    DOUBLE  fPosX;                                 /* 水平坐标 */
    DOUBLE  fPosY;                                 /* 垂直坐标 */
    CHAR    szName[NETDEV_LEN_128];                /* 热点/热区名称 */
}NETDEV_EMAP_MARKER_INFO_S, *LPNETDEV_EMAP_MARKER_INFO_S;

/**
 * @struct tagstNETDEVDCSchemeResInfo
 * @brief DC轮巡资源基本信息
 * @attention 
 */
typedef struct tagstNETDEVDCSchemeResInfo
{
    INT32   dwResID;                                    /* 资源ID 添加时不需要 */
    BOOL    bEnable;                                    /* 轮巡是否使能 */
    CHAR    szName[NETDEV_NAME_MAX_LEN];                /* 轮巡资源名称 */
    CHAR    szDesc[NETDEV_DESCRIBE_MAX_LEN];            /* 轮巡资源描述 */
}NETDEV_DC_SCHEME_RES_INFO_S, *LPNETDEV_DC_SCHEME_RES_INFO_S;

/**
 * @struct tagstNETDEVDCSchemeResChnInfo
 * @brief DC轮巡资源通道信息
 * @attention
 */
typedef struct tagstNETDEVDCSchemeResChnInfo
{
    INT32   dwIndex;                                            /* 索引 */
    INT32   dwChannelID;                                        /* 通道ID */
    INT32   dwStreamIndex;                                      /* 码流索引 */
    INT32   dwPresetID;                                         /* 预置位ID */
}NETDEV_DC_SCHEME_RES_CHN_INFO_S, *LPNETDEV_DC_SCHEME_RES_CHN_INFO_S;

/**
 * @struct tagstNETDEVDCSchemeRes
 * @brief DC轮巡资源信息
 * @attention 
 */
typedef struct tagstNETDEVDCSchemeResource
{
    NETDEV_DC_SCHEME_RES_INFO_S         stResInfo;                                          /* 轮巡资源基本信息 */
    INT32                               dwIntervalTime;                                     /* 轮巡时间间隔(s) */
    INT32                               dwSize;                                             /* 轮巡通道资源个数 */
    NETDEV_DC_SCHEME_RES_CHN_INFO_S     astChnInfo[NETDEV_DC_SCHEME_RES_CHN_MAX_NUM];       /* 轮巡通道资源信息 */
}NETDEV_DC_SCHEME_RESOURCE_S, *LPNETDEV_DC_SCHEME_RESOURCE_S;

/**
 * @struct tagstNETDEVRoleRight
 * @brief 用户角色权限信息
 * @attention 
 */

typedef struct tagstNETDEVRoleRight
{
    UINT32 udwMajorRight;
    UINT32 udwMinorRight;     /* 见枚举#NETDEV_MINOR_OPER_DOOR_CONFIG_E*/
}NETDEV_ROLE_RIGHT_S, *LPNETDEV_ROLE_RIGHT_S;

/**
 * @struct tagstNETDEVOrgTreeList
 * @brief 用户角色权限列表
 * @attention 
 */
typedef struct tagstNETDEVOrgTreeList
{
    INT32 dwSize;                                               /* 组织树数量 */
    INT32 adwOrgRootID[NETDEV_MAX_ORG_ROOT_ID_NUM];              /* 组织树根节点ID */
}NETDEV_ORG_TREE_S, *LPNETDEV_ORG_TREE_S;

/**
 * @struct tagstNETDEVRoleRightList
 * @brief 用户角色权限列表
 * @attention 
 */
typedef struct tagstNETDEVRoleRightList
{
    INT32 dwSize;                                                   /* 数量 */
    NETDEV_ROLE_RIGHT_S astRoleRight[NETDEV_MAX_ROLE_RIGHT_SIZE];        /* 用户权限信息 */
    NETDEV_ORG_TREE_S stOrgTreeInfo;                                 /* 组织树信息 */
}NETDEV_RIGHT_LIST_S, *LPNETDEV_RIGHT_LIST_S;



/**
 * @struct tagstNETDEVTimeDuration
 * @brief 每天的时间段信息
 */
typedef struct tagstNETDEVTimeDuration
{
    INT64    tBeginTime;                              /* 起始时间 */
    INT64    tEndTime;                                /* 结束时间 */
    INT32    dwPlanType;                              /* 参见 NETDEV_TIME_TEMPLATE_PLAN_TYPE */
}NETDEV_TIME_DURATION_S, *LPNETDEV_TIME_DURATION_S;

/**
 * @struct tagstNETDEVTimeDurationList
 * @brief 每天的时间段信息列表，一天最多24个时间段
 */
typedef struct tagstNETDEVTimeDurationList
{
    INT32                     dwSize;                                                      /* 时间段个数 */
    NETDEV_TIME_DURATION_S    astTimeDurationList[NETDEV_TIME_DURATION_NUM];               /* 时间段信息列表 */
}NETDEV_TIME_DURATION_LIST_S, *LPNETDEV_TIME_DURATION_LIST_S;

/**
 * @struct tagstNETDEVTimeRange
 * @brief 时间范围信息，一个时间模板最多可包含8个时间范围，周一到周日和假日
 * @attention
 */
typedef struct tagstNETDEVTimeRange
{
    INT32                            dwSize;                                         /* 时间范围个数 */
    NETDEV_TIME_DURATION_LIST_S      astTimeRangeList[NETDEV_TIME_RANGE_NUM];        /* 时间范围列表 */
}NETDEV_TIME_RANGE_S, *LPNETDEV_TIME_RANGE_S;

/**
 * @struct tagstNETDEVTimeTemplateInfo
 * @brief 时间模板详细信息
 * @attention
 */
typedef struct tagstNETDEVTimeTemplateInfoV30
{
    CHAR    szTamplateName[NETDEV_NAME_MAX_LEN];                            /* 模板名称 */
    CHAR    szTamplateDesc[NETDEV_DESCRIBE_MAX_LEN];                        /* 模板描述 */
    INT32   dwTemplateType;                                                 /* 时间模板类型 参见NETDEV_TIME_TEMPLATE_TYPE_E */
    NETDEV_TIME_RANGE_S    stTimeRange;                                     /* 共8个时间范围 */
}NETDEV_TIME_TEMPLATE_INFO_V30_S, *LPNETDEV_TIME_TEMPLATE_INFO_V30_S;

/**
 * @struct tagstNETDEVHolidayTimeInfo
 * @brief 假日时间信息
 * @attention
 */
typedef struct tagstNETDEVHolidayTimeInfo
{
    INT32     dwYear;                               /* 所在年份 */
    INT32     dwMonth;                              /* 所在月份 */
    INT32     dwDay;                                /* 具体日期 */
    INT32     dwWeekOfMonth;                        /* 当月的第几周 */
    INT32     dwWeekDay;                            /* 周几 */
}NETDEV_HOLIDAY_TIME_INFO_S, *LPNETDEV_HOLIDAY_TIME_INFO_S;

/**
 * @struct tagstNETDEVHolidayInfo
 * @brief 假日信息
 * @attention
 */
typedef struct tagstNETDEVHolidayInfo
{
    INT32      dwHolidayID;                            /* 假日信息索引 */
    CHAR       szHolidayName[NETDEV_NAME_MAX_LEN];           /* 假日名称 */
    INT32      dwStatus;                               /* 假日状态(0表示未启用，1表示启用) */
    INT32      dwRepeatType;                           /* 重复方式(0表示单年，1表示常年) */
    INT32      dwHolidayType;                          /* 节假日时间识别方式(0表示按日，1表示按周) */
    NETDEV_HOLIDAY_TIME_INFO_S    stBeginTime;         /* 假日开始时间 */
    NETDEV_HOLIDAY_TIME_INFO_S    stEndTime;           /* 假日结束时间 */
}NETDEV_HOLIDAY_INFO_S, *LPNETDEV_HOLIDAY_INFO_S;

/**
 * @struct tagstNETDEVHolidayInfoList
 * @brief 所有假日信息
 * @attention
 */
typedef struct tagstNETDEVHolidayInfoList
{
    INT32                        dwSize;                                        /* 假日配置数量 */
    NETDEV_HOLIDAY_INFO_S        astHolidayInfoList[NETDEV_HOLIDAY_INFO_NUM];      /* 所有假日信息 */
}NETDEV_HOLIDAY_INFO_LIST_S, *LPNETDEV_HOLIDAY_INFO_LIST_S;

/**
 * @struct tagNETDEVPaneBindInfo
 * @brief 分屏绑定业务信息
 * @attention
 */
typedef struct tagNETDEVPaneBindInfo
{
    UINT32  udwVideoInChannelID;              /* 视频源ID */
    UINT32  udwStreamID;                      /* 媒体流ID */
}NETDEV_PANE_BIND_INFO_S, *LPNETDEV_PANE_BIND_INFO_S;


/**
 * @struct tagNETDEVPaneBindService
 * @brief 分屏绑定业务
 * @attention
 */
typedef struct tagNETDEVPaneBindService
{
    UINT32                       udwTVWallID;                 /* 电视墙ID */
    UINT32                       udwWindowID;                 /* 窗口ID */
    UINT32                       udwPaneID;                   /* 分屏ID */
    UINT32                       udwPaneOperateType;          /* 分屏操作类型 参见NETDEV_PANE_OPERATE_TYPE_E*/
    NETDEV_PANE_BIND_INFO_S      udwPaneBindInfo;             /* 分屏绑定的业务信息 */
}NETDEV_PANE_BIND_SERVICE_S, *LPNETDEV_PANE_BIND_SERVICE_S;


/**
 * @struct tagNETDEVXWPaneInfo
 * @brief XW窗口分屏信息
 * @attention
 */
typedef struct tagNETDEVVideoInSource
{
    UINT32  udwPaneID;          /* 分屏序号 */
    INT32   dwChannelID;        /* 通道ID */
    UINT32  udwStreamIndex;     /* 流索引 */
    UINT32  udwTaskNo;          /* 业务号 */
    UINT32  udwTransProtocal;   /* 传输协议 参见 NETDEV_LAPI_TRANS_PROTOCAL_E */
    UINT32  udwSessionType;     /* 分屏业务类型 参见 NETDEV_SESSION_TYPE_E */
}NETDEV_VIDEO_IN_SOURCE_INFO_S, *LPNETDEV_VIDEO_IN_SOURCE_INFO_S;


/**
 * @struct tagNETDEVXWSceneWndInfo
 * @brief 场景窗口信息
 * @attention
 */
typedef struct tagNETDEVVideoInChnInfo
{
    UINT32                              udwWndID;                             /* 窗口ID */
    UINT32                              udwSeqResID;                          /* 轮巡资源ID */
    UINT32                              udwSeqStatus;                         /* 轮巡状态 参见 NETDEV_SEQ_STATUS_E */
    NETDEV_VIDEO_IN_SOURCE_INFO_S       stVideoInSourceInfo;                  /* 窗口分屏信息 */
}NETDEV_VIDEO_IN_CHN_INFO_S, *LPNETDEV_VIDEO_IN_CHN_INFO_S;


typedef struct tagNETDEVSceneWndInfo
{
    UINT32              udwWndID;                            /* 窗口ID */
    UINT32              udwDChlID;                           /* DC通道ID */
    CHAR                szName[NETDEV_WND_NAME_LEN];         /* 名称 */
    UINT32              udwWndType;                          /* 窗口类型 NETDEV_TVWALL_WND_TPYE */
    UINT32              udwStatus;                           /* 0表示不锁定，1表示锁定 */
    UINT32              udwPaneMod;                          /* 分屏模式 参见NETDEV_LAYOUT_TYPE_E */
    UINT32              udwZoomType;                         /* 放大类型 参见NETDEV_WINDOWS_ZOOM_TYPE_E zoom Type see NETDEV_WINDOWS_ZOOM_TYPE_E */
    UINT32              udwSplitIndex;                       /* 分屏序号  当ZoomType字段值1时必选*/
    UINT32              udwLayer;                            /* 图层 */
    UINT32              udwTransparency;                     /* 透明度 */
    NETDEV_XW_AREA_S    stArea;                              /* 区域范围 */
}NETDEV_SCENE_WND_INFO_S, *LPNETDEV_SCENE_WND_INFO_S;

/**
 * @struct tagstNETDEVResInfo
 * @brief 轮巡资源信息
 * @attention
 */
typedef struct tagstNETDEVGroupSeqInfo
{
    UINT32                      udwSeqID;           /* 组轮巡ID */
    BOOL                        bEnabled;           /* 组轮巡启用状态 */
    UINT32                      udwResourceID;      /* 轮巡资源ID */
    UINT32                      udwStatus;          /* 轮巡状态 参见 NETDEV_SEQ_STATUS_E */
    UINT32                      udwWndNum;          /* 组轮巡窗口数量 */
    LPNETDEV_SCENE_WND_INFO_S   audwWndIDList;      /* 窗口信息 */
}NETDEV_GROUP_SEQ_INFO_S, *LPNETDEV_GROUP_SEQ_INFO_S;

/**
 * @struct tagNETDEVXWSceneDetailInfo
 * @brief 场景详细信息
 * @attention
 */
typedef struct tagNETDEVXWSceneDetailInfoEx
{
    UINT32                              udwVirtualLedNum;       /* 虚拟LED数量 */
    LPNETDEV_XW_VIRTUAL_LED_INFO_S      pstVirtualLedInfo;      /* 虚拟LED信息 */
    UINT32                              udwWndNum;              /* 窗口数量 */
    LPNETDEV_SCENE_WND_INFO_S           pstWndInfo;             /* 窗口信息 */
    UINT32                              udwGroupSeqNums;        /* 组轮巡数量 */
    LPNETDEV_GROUP_SEQ_INFO_S           pstGroupSeqInfo;        /* 组轮巡信息 */
    UINT32                              udwVideoChnNums;        /* 绑定业务数量 */
    LPNETDEV_VIDEO_IN_CHN_INFO_S        pstVideoInChnInfo;      /* 绑定业务信息 */
}NETDEV_XW_SCENE_DETAIL_INFO_EX_S, *LPNETDEV_XW_SCENE_DETAIL_INFO_EX_S;


/**
 * @struct tagNETDEVXWWndIndex
 * @brief 窗口索引
 * @attention
 */
typedef struct tagNETDEVXWWndIndex
{
    UINT32  udwTVWallID;    /* 电视墙ID */
    UINT32  udwWndID;       /* 窗口ID */
}NETDEV_XW_WND_INDEX_S, *LPNETDEV_XW_WND_INDEX_S;

/**
 * @struct tagNETDEVXWLEDIndex
 * @brief 虚拟LED索引 
 * @attention
 */
typedef struct tagNETDEVXWLEDIndex
{
    UINT32  udwTVWallID;        /* 电视墙ID */
    UINT32  udwVirtualLEDID;    /* 虚拟LED ID */
}NETDEV_XW_LED_INDEX_S, *LPNETDEV_XW_LED_INDEX_S;

/**
 * @struct tagNETDEVXWBatchResuleInfo
 * @brief 批量添加返回信息
 * @attention
 */
typedef struct tagNETDEVXWBatchResuleInfo
{
    UINT32  udwReqSeq;          /*请求数据序号*/
    UINT32  udwResuleCode;      /*返回错误码*/
    UINT32  udwID;              /*窗口ID*/
}NETDEV_XW_BATCH_RESULT_INFO_S,*LPNETDEV_XW_BATCH_RESULT_INFO_S;

/**
 * @struct tagNETDEVXWAudioOutputInfo
 * @brief 音频输出信息 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVXWAudioOutputInfo
{
    UINT32  udwID;          /* 音频输出通道ID */
    UINT32  udwVolum;       /* 音量 */
    UINT32  udwIsMute;      /* 静音状态 */
    BYTE    byRes[64];      /* 保留字段 */
}NETDEV_XW_AUDIO_OUTPUT_INFO_S,*LPNETDEV_XW_AUDIO_OUTPUT_INFO_S;

/**
 * @struct tagNETDEVXWWinAudioOutputInfo
 * @brief 音频输出业务信息 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVXWWinAudioOutputInfo
{
    UINT32 udwWindowID;                                         /* 窗口ID */
    UINT32 udwPanelID;                                          /* 分屏序号 */
    NETDEV_XW_AUDIO_OUTPUT_INFO_S stXWAudioOutputInfo;          /* 音频输出信息结构体 */
    BYTE byRes[64];                                             /* 保留字段 */
}NETDEV_XW_WIN_AUDIO_OUTPUT_INFO_S,*LPNETDEV_XW_WIN_AUDIO_OUTPUT_INFO_S;

/**
 * @struct tagNETDEVXWWinAudioOutputList
 * @brief 音频输出业务列表信息 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVXWWinAudioOutputList
{
    UINT32 udwNum;                                                                          /* 窗口音频输出业务数量 */
    NETDEV_XW_WIN_AUDIO_OUTPUT_INFO_S stXWWinAudioOutputInfo[NETDEV_AUDIO_MAX_NUM];       /* 窗口音频输出业务列表 */
    BYTE byRes[64];                                                                         /* 保留字段 */
}NETDEV_XW_WIN_AUDIO_OUTPUT_LIST_S,*LPNETDEV_XW_WIN_AUDIO_OUTPUT_LIST_S;

/**
 * @struct tagNETDEVXWPriviewInfo
 * @brief 实况预览参数
 * @attention
 */
typedef struct tagNETDEVXWPriviewInfo
{
    UINT32  udwTVWallID;        /* 电视墙ID */
    UINT32  udwWndID;           /* 窗口ID */
    UINT32  udwPaneID;          /* 分屏ID */
    INT32   dwChannelID;        /* 通道ID */
    UINT32  udwStreamIndex;     /* 流类型 */
    UINT32  udwTransProtocal;   /* 传输协议 */
    UINT32  udwTransType;       /* 直连(0)或转发(1) */
}NETDEV_XW_PRIVIEW_INFO_S, *LPNETDEV_XW_PRIVIEW_INFO_S;

/**
 * @struct tagNETDEVXWPlayBackCond
 * @brief 回放参数
 * @attention
 */
typedef struct tagNETDEVXWPlayBackCond
{
    UINT32  udwTVWallID;            /* 电视墙ID */
    UINT32  udwWndID;               /* 窗口屏ID */
    UINT32  udwPaneID;              /* 分屏ID */
    INT32   dwChannelID;            /* 通道ID */
    UINT32  udwBeginTime;           /* 开始时间 */
    UINT32  udwEndTime;             /* 结束时间 */
    UINT32  udwStoreType;           /* 录像存储类型 参见 NETDEV_STORE_TYPE_E */
    UINT32  udwRecordLocation;      /* 录像位置 */
    UINT32  udwSessionID;           /* session id */
}NETDEV_XW_PLAY_BACK_COND_S, *LPNETDEV_XW_PLAY_BACK_COND_S;


/**
 * @struct tagNETDEVXWPlayBackCond
 * @brief 轮巡操作枚举
 * @attention
 */
typedef struct tagNETDEVXWSequenceCond
{
    UINT32  udwTVWallID;        /* 电视墙ID */
    UINT32  udwSeqID;           /* 轮巡ID */
    UINT32  udwResourceType;    /* 资源类型 参见NETDEV_XW_SEQ_RESOURCE_TYPE_E */
    UINT32  udwResourceID;      /* 资源ID */
    UINT32  udwSeqCmd;          /* 轮巡操作方法,参见NETDEV_XW_SEQ_CMD_E */
}NETDEV_XW_SEQUENCE_COND_S, *LPNETDEV_XW_SEQUENCE_COND_S;

/**
 * @struct tagstNETDEVVersionInfo
 * @brief 一体机设备版本信息
 * @attention 
 */
typedef struct tagstNETDEVVersionInfo
{
    UINT32  udwDefaultLang;                         /* 默认语言 参加枚举 NETDEV_LANG_TYPE_E */
    UINT32  udwNum;                                 /* 支持的语言数量 */
    UINT32  audwLangType[NETDEV_LEN_16];            /* 支持的语言类型 参加枚举 NETDEV_LANG_TYPE_E ,目前最多支持两种*/
    UINT32  udwRegionType;                          /* 区域类型 参见枚举 NETDEV_REGION_TYPE_E */
    UINT32  udwCustomType;                          /* 定制类型 定制类型 参见枚举 NETDEV_CUSTOM_TYPE_E */
    CHAR    szWin32ClientVision[NETDEV_LEN_64];     /* 32位C/S客户端版本路径，范围[1,32]] */
    CHAR    szWin64ClientVision[NETDEV_LEN_64];     /* 64位C/S客户端版本路径，范围[1,32]] */
    CHAR    szAgentClientVision[NETDEV_LEN_64];     /* agent客户端版本路径，范围[1,32] */
    CHAR    szEztoolClientVision[NETDEV_LEN_64];    /* Eztool客户端版本，范围[1,32] */
    CHAR    szUNPClientVision[NETDEV_LEN_64];       /* UNP客户端版本，范围[1,32] */
    CHAR    szGateClientVersion[NETDEV_LEN_64];     /* EZGate客户端版本，范围[1,32] */
    BYTE    byRes[192];                             /* 保留字段 */
}NETDEV_VERSION_INFO_S, *LPNETDEV_VERSION_INFO_S;



/**
 * @struct tagNETDEVXWDecodeInfo
 * @brief 窗口解码信息
 * @attention
 */
typedef struct tagNETDEVXWDecodeInfo
{
    UINT32         udwTvWallID;                               /* 电视墙ID*/
    CHAR           szTVWallCode[NETDEV_LEN_64];               /* 电视墙编码（可选字段），由设备端分配，字符串长度范围[1,64] */
    UINT32         udwWndID;                                  /* 窗口ID*/
    UINT32         udwWndIndex;                               /* 窗口索引序号*/
    UINT32         udwPaneID;                                 /* 分屏序号*/
    UINT32         udwChnCode;                                /* 窗口所在通道编码，0x01000100表示这是一个视频输出通道，为第2个设备的第1个槽位的第1个视频输出通道*/
    UINT32         udwStreamStatus;                           /* 建流状态 参见枚举 NETDEV_XW_WND_STREAM_STATUS_E */
    CHAR           szCameraCode[NETDEV_LEN_64];               /* 摄像机编码*/
    CHAR           szCameraIP[NETDEV_LEN_64];                 /* 摄像机地址 [0,64]*/
    CHAR           szSourceAddress[NETDEV_LEN_64];            /* 源地址 [0,64]*/
    UINT32         udwSourcePort;                             /* 源端口*/
    CHAR           szDestAddress[NETDEV_LEN_64];              /* 目的地址（dsp地址）[0,64]*/
    UINT32         udwDestPort;                               /* 目的端口*/
    CHAR           szTransport[NETDEV_LEN_16];                /* 传输模式[0,16], 例如：TCP*/
    NETDEV_XW_RESOLUTION_S stResolution;                      /* 分辨率节点 */
    UINT32         udwFrameRate;                              /* 帧率*/
    CHAR           szVideoEncodeType[NETDEV_LEN_8];           /* 视屏格式[0,8], 例如：H.264*/
    CHAR           szAudioEncodeType[NETDEV_LEN_8];           /* 音频格式[0,8], 例如：G.711U*/
    CHAR           szFormatType[NETDEV_LEN_16];               /* 封装格式[0,16], 例如：RTP+PS、PS等*/
    FLOAT          fPacketDorpRate;                           /* 两分钟丢包率（相机丢包率）*/
    UINT32         udwPacketDropCnt;                          /* 丢包计数*/
    UINT32         udwTotalPacketNum;                         /* 总包数*/
    BYTE           bRes[64];                                  /* 预留字段 */
}NETDEV_XW_DECODE_INFO_S, *LPNETDEV_XW_DECODE_INFO_S;


/**
 * @enum tagNETDEVXWSerialCfgInfo
 * @brief XW串口ID信息
 * @attention 无 None
 */
typedef struct tagNETDEVXWSerialCfgInfo
{
    UINT32      udwSerialID;                       /* 串口ID */
    UINT32      udwSerialType;                     /* 串口类型 参见枚举 NETDEV_XW_SERIAL_TYPE_E*/
    UINT32      udwIndex;                          /* 串口序号 */
    UINT32      udwSerialMode;                     /* 串口模式 参见枚举NETDEV_XW_SERIAL_MODE_E*/
    UINT32      udwWorkMode;                       /* 工作模式 RS232串口不携带 参见枚举NETDEV_XW_SERIAL_MODE_E*/
    UINT32      udwBaudRate;                       /* 波特率 取值范围：1200、2400、4800、9600、19200、38400、57600、115200*/
    UINT32      udwDataBits;                       /* 数据位 取值范围：5、6、7、8*/
    UINT32      udwStopBits;                       /* 停止位 取值范围：1、2*/
    UINT32      udwParity;                         /* 校验位 参见枚举 NETDEV_XW_PARITY_TYPE_E*/
    UINT32      udwFlowCtrl;                       /* 流控位 参见枚举 NETDEV_XW_PARITY_TYPE_E*/
    BYTE        byRes[128];                        /* 预留字段 参见枚举 NETDEV_XW_FLOW_CTRL_E*/
}NETDEV_XW_SERIAL_CFG_INFO_S, *LPNETDEV_XW_SERIAL_CFG_INFO_S;

/**
 * @enum tagNETDEVXWSerialList
 * @brief XW串口ID列表
 * @attention 无 None
 */
typedef struct tagNETDEVXWSerialList
{
    UINT32                          udwNum;                                     /* 串口数量 */
    NETDEV_XW_SERIAL_CFG_INFO_S     stSerialCfgInfo[NETDEV_XW_SERIAL_NUM];      /* 串口类型 参见枚举 NETDEV_XW_COM_TYPE_E*/
    BYTE                            byRes[128];                                 /* 预留字段 */
}NETDEV_XW_DEVICE_SERIAL_LIST_S, *LPNETDEV_XW_DEVICE_SERIAL_LIST_S;

/*
* @struct tagNETDEVDiscoverCondInfo
* @brief 设备发现条件信息
* @attention 无 None
*/
typedef struct tagNETDEVDiscoverCondInfo
{
    CHAR                szBeginIP[NETDEV_LEN_128];    /* 起始IP地址,不指定时为0 */
    CHAR                szEndIP[NETDEV_LEN_128];      /* 结束IP地址,不指定时为0 */
    UINT32              udwServiceID;                 /* 服务器ID,范围[0-255],0表示主机，其它值从机设备 */
    UINT32              udwAccessMode;                /* 接入方式，参见枚举NETDEV_DEVICE_ACCESS_MODE_E */
    BYTE                byRes[128];                   /* 保留字  Reserved */
}NETDEV_DISCOVER_COND_INFO_S, *LPNETDEV_DISCOVER_COND_INFO_S;

/*
* @struct tagNETDEVDeviceFindCond
* @brief 获取设备查找条件信息
* @attention 无 None
*/
typedef struct tagNETDEVDeviceFindCond
{
    UINT32              udwDeviceType;                  /* 设备类型 参见枚举NETDEV_DEVICE_MAIN_TYPE_E */
    UINT32              udwServiceID;                   /* 服务器ID,范围[0-255],0表示主机，其它值从机设备 */
    BYTE                byRes[128];                     /* 保留字  Reserved */
}NETDEV_DEVICE_FIND_COND_S, *LPNETDEV_DEVICE_FIND_COND_S;

/*
* @struct tagNETDEVDiscoverDeviceInfo
* @brief 发现的设备信息
* @attention 无 None
*/
typedef struct tagNETDEVDiscoverDeviceInfo
{
    UINT32              udwDeviceType;                      /* 设备类型 参见枚举NETDEV_DEVICE_MAIN_TYPE_E */
    UINT32              udwDeviceSubType;                   /* 设备子类型 参见枚举NETDEV_DEVICE_SUB_TYPE_E */
    UINT32              udwPort;                            /* 端口 */
    BOOL                bIsAdded;                           /* 是否已添加,FALSE未添加，TRUE已添加 */
    CHAR                szIPAddress[NETDEV_LEN_64];         /* IP地址 */
    CHAR                szDevModel[NETDEV_LEN_64];          /* 设备型号 */
    CHAR                szSerialNumber[NETDEV_LEN_64];      /* 设备序列号 */
    CHAR                szFirmwareVersion[NETDEV_LEN_64];   /* 软件版本 */
    CHAR                szDevMac[NETDEV_LEN_64];            /* MAC地址 */
    CHAR                szManufacturer[NETDEV_LEN_64];      /* 设备制造商 */
    CHAR                szUniCode[NETDEV_LEN_64];           /* 设备国标编码 */
    UINT32              udwProtocolType;                    /* 协议类型，参见枚举NETDEV_ACCESS_PROTOCOL_E */
    BYTE                byRes[128];                         /* 保留字  Reserved */
}NETDEV_DISCOVER_DEV_INFO_S, *LPNETDEV_DISCOVER_DEV_INFO_S;

typedef struct tagstNETDEVDevChnCommonInfo
{    
    UINT32 udwDevID;                                          /* 设备ID */
    UINT32 udwOrgID;                                          /* 组织ID */
    UINT32 udwChnIndex;                                       /* 通道索引 */
    CHAR  szDevName[NETDEV_LEN_256];                        /* 设备名称 */
    UINT32 udwRight;                                        /* 通道权限 */
    BYTE   byRes[128];                                      /* 保留字段 */
}NETDEV_DEV_CHN_COMMON_INFO_S, *LPNETDEV_DEV_CHN_COMMON_INFO_S;

/**
 * @brief 通道信息
 * @attention
 */
typedef struct tagstNETDEVChnInfo
{    
    UINT32                          udwChannelID;               /* 通道ID */
    CHAR                            szChnName[NETDEV_LEN_256];  /* 通道名称 */

    BYTE                            byRes[128];                 /* 保留字段 */
}NETDEV_CHN_INFO_S, *LPNETDEV_CHN_INFO_S;

/**
 * @struct tagNETDEVStreamFormatInfo
 * @brief 视频编码格式信息
 * @attention
 */
typedef struct tagNETDEVStreamFormatInfo
{
    UINT32                           udwStreamIndex;             /* 视频流索引 参考 NETDEV_LIVE_STREAM_INDEX_E */
    UINT32                           udwEncodeFormat;            /* 编码格式 参考 NETDEV_VIDEO_CODE_TYPE_E */
    BYTE                             byRes[128];                 /* 保留字段 */
}NETDEV_STREAM_FORMAT_INFO_S, *LPNETDEV_STREAM_FORMAT_INFO_S;

/**
 * @struct tagstNETDEVDevVideoChnInfo
 * @brief 设备视频通道信息
 * @attention
 */
typedef struct tagstNETDEVDevVideoChnInfo
{    
    UINT32                           udwChannelID;                                  /* 通道ID */
    CHAR                             szChnName[NETDEV_LEN_256];                     /* 通道名称 */
    UINT32                           udwChnStatus;                                  /* 通道状态, 参见 NETDEV_CHN_STATUS_E */
    CHAR                             szGBID[NETDEV_LEN_32];                         /* 国标资源编码 */
    NETDEV_DEV_CHN_COMMON_INFO_S     stCommonInfo;                                  /* 通用信息 */
    UINT32                           udwMaxStream;                                  /* 支持的最大流个数 */
    BOOL                             bSupportPTZ;                                   /* 是否支持云台 */
    UINT32                           udwAudioResID;                                 /* 音频资源ID */
    LPNETDEV_STREAM_FORMAT_INFO_S    pastStreamFormatList;                          /* 媒体流编码格式列表,需动态分配内存 */

    BYTE                             byRes[124];                                    /* 保留字段 */
}NETDEV_VIDEO_CHN_INFO_S, *LPNETDEV_VIDEO_CHN_INFO_S;

/**
 * @struct tagstNETDEVVideoChnFindCond
 * @brief 查找视频通道信息列表条件
 * @attention
 */
typedef struct tagstNETDEVVideoChnFindCond
{    
    UINT32                           udwDevID;                /* 设备ID */
    UINT32                           udwOrgID;                /* 组织ID */
    UINT32                           udwLimit;                /* 每次查询的数量，范围[1,500] */
    UINT32                           udwOffset;               /* 开始查询的序号，从0开始 */
    UINT32                           udwFindType;             /* 查找模式，参见NETDEV_VIDEO_CHN_FIND_TYPE_E */
    
    BYTE                            byRes[128];             /* 保留字段 */
}NETDEV_VIDEO_CHN_FIND_COND_S, *LPNETDEV_VIDEO_CHN_FIND_COND_S;

/**
 * @struct tagstNETDEVOrgFindCond
 * @brief 查找组织信息列表条件
 * @attention
 */
typedef struct tagstNETDEVOrgFindCond
{    
    UINT32                           udwOrgType;              /* 组织类型 参见NETDEV_ORG_TYPE_E */
    UINT32                           udwRootOrgID;            /* 根节点组织ID */
    UINT32                           udwFindType;             /* 查找模式，参见NETDEV_ORG_FIND_MODE_E */
    
    BYTE                            byRes[128];             /* 保留字段 */
}NETDEV_ORG_FIND_COND_S, *LPNETDEV_ORG_FIND_COND_S;

/**
* @struct tagstNETDEVModifyDevInfo
* @brief 修改设备信息
* @attention
*/
typedef struct tagstNETDEVModifyDevInfo
{
    UINT32                            udwID;                              /* 设备ID */
    CHAR                              szDevName[NETDEV_LEN_64];           /* 设备名称 */
    NETDEV_IPADDR_INFO_S              stDevIPAddress;                     /* IP地址 */
    CHAR                              szLoginName[NETDEV_LEN_64];         /* 登录用户名 */
    CHAR                              szPasswd[NETDEV_LEN_64];            /* 登录密码，不修改接入登录密码时为"" */
    UINT32                            udwAccessProtocol;                  /* 接入协议 参见枚举NETDEV_ACCESS_PROTOCOL_E */
    UINT32                            udwDevSubType;                      /* 设备子类型，参见枚举NETDEV_DEVICE_SUB_TYPE_E */
    UINT32                            udwServerID;                        /* 服务器ID，范围[0,255] */
    UINT32                            udwOrgID;                           /* 组织编码 */
    CHAR                              szDescription[NETDEV_LEN_256];      /* 设备描述 */
    NETDEV_ONVIF_INFO_S               stOnvifInfo;                        /* onvif信息 */
    NETDEV_GBINFO_S                   stGBInfo;                           /* 国标信息 */
    UINT32                            uwdIsPTZNeeded;                     /*  0:  不需要 1:  需要 255: 自适应 */
    UINT32                            udwDeviceType;                      /* 设备类型 参考 NETDEV_DEVICE_MAIN_TYPE_E */
    UINT32                            udwCustomProtocolID;                /* 自定义协议ID，udwAccessProtocol值为4时必选，其他可选，上限32 */
    LPNETDEV_IPM_PLAYER_BASIC_INFO_S  pstPlayerInfo;                      /* 播放盒信息 当Type为11时必选 需要malloc分配内存 */
    UINT32                            udwChlMaxNum;                       /* 设备通道号最大数量，当AccessProtocol值为4时该节点必选 */
    UINT32                            udwChlIndexNum;                     /* 设备通道号数量，当AccessProtocol值为4时该节点必选，上限256 */
    UINT32*                           pudwChlIndexList;                   /* 通道号列表，需动态分配内存 */
    BYTE                              byRes[100];                         /* 保留字段  Reserved field*/
}NETDEV_MODIFY_DEV_INFO_S, *LPNETDEV_MODIFY_DEV_INFO_S;

/**
* @struct tagstNETDEVAddDevBasicInfo
* @brief 批量添加设备基本信息
* @attention
*/
typedef struct tagstNETDEVAddDevBasicInfo
{    
    UINT32                            udwReqSeq;                          /* 请求数据序号，范围[1, 50]，此字段会在返回结果中带回 */
    CHAR                              szDevName[NETDEV_LEN_64];           /* 设备名称 */
    NETDEV_IPADDR_INFO_S              stDevIPAddress;                     /* IP地址 */
    CHAR                              szLoginName[NETDEV_LEN_64];         /* 登录用户名 */
    CHAR                              szPasswd[NETDEV_LEN_64];            /* 登录密码，不修改接入登录密码时为"" */
    UINT32                            udwAccessProtocol;                  /* 接入协议 参见枚举NETDEV_ACCESS_PROTOCOL_E */
    UINT32                            udwDevType;                         /* 设备类型，参见枚举NETDEV_DEVICE_MAIN_TYPE_E */
    UINT32                            udwDevSubType;                      /* 设备子类型，参见枚举NETDEV_DEVICE_SUB_TYPE_E */
    UINT32                            udwServerID;                        /* 服务器ID，范围[0,255] */
    UINT32                            udwOrgID;                           /* 组织编码 */
    CHAR                              szDescription[NETDEV_LEN_256];      /* 设备描述 */
    NETDEV_ONVIF_INFO_S               stOnvifInfo;                        /* onvif信息 */
    NETDEV_GBINFO_S                   stGBInfo;                           /* 国标信息 */
    UINT32                            udwIsPTZNeeded;                     /* 是否需要云台 0:  不需要 1:  需要 255:  自适应 */
    CHAR                              szSN[NETDEV_LEN_32];                /* 设备序列号，Type为9且SubType为7时携带，字符串长度范围[1,20] */
    CHAR                              szIMEI[NETDEV_LEN_32];              /* 国际移动设备识别码，，Type为9且SubType为8时携带,字符串长度范围[1,16] */
    CHAR                              szDeviceCode[NETDEV_LEN_32];        /* 设备编码 [1,32] 添加播放盒时必选  */
    UINT32                            udwCustomProtocolID;                /* 自定义协议ID，udwAccessProtocol值为4时必选，其他可选，上限32 */
    LPNETDEV_IPM_PLAYER_BASIC_INFO_S  pstPlayerInfo;                      /* 播放盒信息 当Type为11时必选 需要malloc分配内存 */
    UINT32                            udwChlMaxNum;                       /* 设备通道号最大数量，当AccessProtocol值为4时该节点必选 */
    UINT32                            udwChlIndexNum;                     /* 设备通道号数量，当AccessProtocol值为4时该节点必选，上限256 */
    UINT32*                           pudwChlIndexList;                   /* 通道号列表，需动态分配内存 */
    BYTE                              byRes[12];                          /* 保留字段  Reserved field*/
}NETDEV_ADD_DEV_BASIC_INFO_S, *LPNETDEV_ADD_DEV_BASIC_INFO_S;

/**
 * @struct tagstNETDEVXWAddDevInfo
 * @brief 批量添加设备信息列表
 * @attention
 */
typedef struct tagstNETDEVXWAddDevInfo
{
    UINT32                              udwNum;                     /* 设备数量 */
    UINT32                              udwDevType;                 /* 设备类型，参见枚举 NETDEV_DEVICE_MAIN_TYPE_E */
    LPNETDEV_ADD_DEV_BASIC_INFO_S       pstAddDevBasicInfoList;     /* 批量添加设备信息列表指针，根据待添加设备数量，内存由调用者维护 */

    BYTE                                byRes[128];                 /* 保留字段  Reserved field */
}NETDEV_ADD_DEV_INFO_S, *LPNETDEV_ADD_DEV_INFO_S;

/**
 * @struct tagNETDEVBatchOperatorInfo
 * @brief 批量操作信息 结构体定义 Device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVBatchOperatorInfo
{
    UINT32   udwReqSeq;                          /* 请求数据序号 */
    UINT32   udwResultCode;                      /* 返回错误码,人脸布控操作结果详见# NETDEV_PERSON_MONITOR_OPT_RES_CODE_E */
    UINT32   udwID;                              /* 编号 */
    CHAR     szName[NETDEV_LEN_260];             /* 成员名称，长度范围[1,63] */
    BYTE     byRes[128];                         /* 保留字段  Reserved */
}NETDEV_BATCH_OPERATOR_INFO_S,*LPNETDEV_BATCH_OPERATOR_INFO_S;

/**
 * @struct tagstNETDEVXWAddDevResultInfo
 * @brief 批量添加设备返回信息
 * @attention
 */
typedef struct tagstNETDEVXWAddDevResultInfo
{    
    UINT32 udwStatus;                                               /* 响应状态，类型参见 NETDEV_ORG_RESPONSE_STAUTE_E */
    UINT32 udwNum;                                                  /* 响应数量 */
    LPNETDEV_BATCH_OPERATOR_INFO_S pstResultInfoList;               /* 批量添加返回信息，根据添加设备数量动态申请 */

    BYTE  byRes[128];                                               /* 保留字段  Reserved field */
}NETDEV_ADD_DEV_RESULT_INFO_S, *LPNETDEV_ADD_DEV_RESULT_INFO_S;

/**
 * @struct tagstNETDEVDelDevInfo
 * @brief 待删除设备详细信息
 * @attention
 */
typedef struct tagstNETDEVDelDevInfo
{    
    UINT32 udwDevNum;                                         /* 设备数量 */
    UINT32 udwDevType;                                        /* 设备类型，参见枚举NETDEV_DEVICE_MAIN_TYPE_E */
    UINT32 *pudwIDs;                                          /* 需要删除的设备ID，根据dwDevNum 动态申请 */
    BYTE  byRes[128];                                         /* 保留字段  Reserved field*/
}NETDEV_DEL_DEV_INFO_S, *LPNETDEV_DEL_DEV_INFO_S;

/**
 * @struct tagstNETDEVDelDevResultInfo
 * @brief 批量删除设备返回信息
 * @attention
 */
typedef struct tagstNETDEVDelDevResultInfo
{
    UINT32 udwNum;                                              /* 响应数量 */
    LPNETDEV_OPERATE_INFO_S pstResultInfoList;                  /* 批量删除返回信息，根据删除设备数量动态申请 */

    BYTE  byRes[128];                                           /* 保留字段  Reserved field */
}NETDEV_DEL_DEV_RESULT_INFO_S, *LPNETDEV_DEL_DEV_RESULT_INFO_S;


/************************************************************************/
/*                           经济型鱼眼接入                        */
/************************************************************************/
/**
 * @struct tagNETDEVACSFaceImage
 * @brief 图片信息
 * @attention
 */
typedef struct tagNETDEVACSFaceImage
{
    UINT32               udwNum;                            /* 照片数 */
    NETDEV_FILE_INFO_S   stImageList[NETDEV_LEN_16];        /* 人脸照片列表 */
    UINT32               udwMajorImageIndex;                /* 主照片索引 */

    BYTE                 byRes[128];                        /* 保留字段 */
}NETDEV_ACS_FACE_IMAGE_S, *LPNETDEV_ACS_FACE_IMAGE_S;

/**
 * @struct tagNETDEVACSStaffInfo
 * @brief 员工信息
 * @attention
 */
typedef struct tagNETDEVACSStaffInfo
{
    CHAR     szNumber[NETDEV_LEN_16];                               /* 人员编号 */
    CHAR     szBirthday[NETDEV_FACE_MEMBER_BIRTHDAY_LEN];           /* 出生日期 */
    CHAR     szDeptName[NETDEV_LEN_260];                            /* 部门名称*/
    UINT32   udwDeptID;                                             /* 部门ID */

    BYTE     byRes[128];                                            /* 保留字段 */
}NETDEV_ACS_STAFF_INFO_S, *LPNETDEV_ACS_STAFF_INFO_S;

 /**
 * @struct tagACSTimeSection
 * @brief 时间信息
 * @attention
 */
typedef struct tagACSTimeSection
{
    INT64   tStartTime;                                      /* 起始时间 UTC时间 单位秒s */
    INT64   tEndTime;                                        /* 结束时间 UTC时间 单位秒s */

    BYTE    byRes[32];                                       /* 保留字段 */
}NETDEV_ACS_TIME_SECTION_S, *LPNETDEV_ACS_TIME_SECTION_S;

 /**
 * @struct tagNETDEVACSVisitorInfo
 * @brief 访客信息
 * @attention
 */
typedef struct tagNETDEVACSVisitorInfo
{
    CHAR   szVisitorCompany[NETDEV_LEN_260];       /* 访客公司 [1,64]字符 */
    UINT32 udwVisitorCount;                        /* 访客人数 */
    UINT32 udwIntervieweeID;                       /* 被访者ID */
    CHAR   szIntervieweeName[NETDEV_LEN_260];      /* 被访者姓名 [1,64]字符 */
    CHAR   szIntervieweeDept[NETDEV_LEN_260];      /* 被访者部门 [1,64]字符 */
    NETDEV_ACS_TIME_SECTION_S   tScheduleTime;     /* 预约访问时间 */
    NETDEV_ACS_TIME_SECTION_S   tRealTime;         /* 实际到访时间 */
    UINT32 udwStatus;                              /* 状态 参见枚举NETDEV_ACS_VISIT_STATUS_E */

    BYTE   byRes[128];                             /* 保留字段 */
}NETDEV_ACS_VISITOR_INFO_S, *LPNETDEV_ACS_VISITOR_INFO_S;


/**
 * @struct tagACSPersonCard
 * @brief 人员所持门禁卡信息
 * @attention
 */
typedef struct tagACSPersonCard
{
    UINT32                      udwCardID;                      /* 绑定ID */
    UINT32                      udwCardType;                    /* 卡片类型 */
    UINT32                      udwCardStatus;                  /* 卡片状态  0:空白 1:激活 2:冻结 3:注销  */
    CHAR                        szCardNo[NETDEV_LEN_64];        /* 卡号 */
    UINT32                      udwReqSeq;                      /* 序号 */
    NETDEV_ACS_TIME_SECTION_S   stValidTime;                    /* 有效时间 */


    BYTE                        byRes[256];                     /* 保留字段 */
}NETDEV_ACS_PERSON_CARD_INFO_S,* LPNETDEV_ACS_PERSON_CARD_INFO_S;

/**
 * @struct tagNETDEVACSPersonInfo
 * @brief 门禁人员信息
 * @attention
 */
typedef struct tagNETDEVACSPersonInfo
{
    UINT32                          udwReqSeq;                          /* 请求序号 */
    UINT32                          udwPersonID;                        /* 人员编号 */
    CHAR                            szName[NETDEV_LEN_260];             /* 姓名 */
    UINT32                          udwGender;                          /* 性别 参见枚举 NETDEV_GENDER_TYPE_E*/
    NETDEV_FACE_MEMBER_ID_INFO_S    stMemberIDInfo;                     /* 证件信息 */
    CHAR                            szTelephone[NETDEV_LEN_64];         /* 联系电话 */
    CHAR                            szAddress[NETDEV_LEN_260];          /* 地址 */
    CHAR                            szDesc[NETDEV_LEN_480];             /* 备注 */

    UINT32                          udwCardNum;                         /* 门禁卡个数，取值范围[1,6] */
    NETDEV_ACS_PERSON_CARD_INFO_S   stACSPersonCardList[NETDEV_LEN_6];    /* 门禁卡信息 */
    NETDEV_ACS_FACE_IMAGE_S         stFaceImage;                        /* 人脸图片 */
    UINT32                          udwType;                            /* 人员类型  参见NETDEV_ACS_PERSON_TYPE_E*/
    NETDEV_ACS_STAFF_INFO_S         stStaffInfo;                        /* 员工信息 */
    NETDEV_ACS_VISITOR_INFO_S       stVisitor;                          /* 访客信息 */
    BYTE                            byRes[256];                         /* 保留字段 */
}NETDEV_ACS_PERSON_INFO_S, *LPNETDEV_ACS_PERSON_INFO_S;

/**
 * @struct tagNETDEVACSPersonList
 * @brief 人员列表
 * @attention
 */
typedef struct tagNETDEVACSPersonList
{
    UINT32                      udwNum;                 /* 人员数量 */
    LPNETDEV_ACS_PERSON_INFO_S  pstPersonInfoList;      /* 员工信息列表 根据udwNum动态申请*/
    BYTE                        byRes[128];             /* 保留字段 */
}NETDEV_ACS_PERSON_LIST_S, *LPNETDEV_ACS_PERSON_LIST_S;

/**
 * @struct tagNETDEVFaceBatchInfo
 * @brief 人脸识别模块批量操作信息 结构体定义 Device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVFaceBatchInfo
{
    UINT32   udwReqSeq;         /* 请求数据序号 */
    UINT32   udwResultCode;     /* 返回错误码 */
    UINT32   udwID;             /* 编号 */
    BYTE    byRes[128];         /* 保留字段  Reserved */
}NETDEV_FACE_BATCH_INFO_S,*LPNETDEV_FACE_BATCH_INFO_S;

/**
 * @struct tagNETDEVFaceBatchList
 * @brief 人脸识别模块批量操作列表 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVFaceBatchList
{
    UINT32                      udwNum;         /* 批量操作数量 */
    LPNETDEV_FACE_BATCH_INFO_S  pstBatchList;   /* 批量操作信息 根据udwNum进行动态申请 */
    BYTE                        byRes[128];     /* 保留字段  Reserved */
}NETDEV_FACE_BATCH_LIST_S,*LPNETDEV_FACE_BATCH_LIST_S;

/**
 * @struct tagNETDEVACSPersonBaseInfo
 * @brief 门禁人员基本信息
 * @attention
 */
typedef struct tagNETDEVACSPersonBaseInfo
{
    UINT32                          udwPersonID;                    /* 人员编号 */
    CHAR                            szName[NETDEV_LEN_260];         /* 姓名 */
    UINT32                          udwGender;                      /* 性别 参见枚举 NETDEV_GENDER_TYPE_E*/
    NETDEV_FACE_MEMBER_ID_INFO_S    stMemberIDInfo;                 /* 证件信息 */
    CHAR                            szTelephone[NETDEV_LEN_64];     /* 联系电话 */
    UINT32                          udwCardID;                      /* 卡片编号 */
    CHAR                            szCardNo[NETDEV_LEN_16];        /* 卡片号码*/
    UINT32                          udwType;                        /* 人员类型  0员工  1访客*/
    NETDEV_ACS_STAFF_INFO_S         stStaffInfo;                    /* 员工信息 */
    NETDEV_ACS_VISITOR_INFO_S       stVisitor;                      /* 访客信息 */
    BYTE                            byRes[256];                     /* 保留字段 */
}NETDEV_ACS_PERSON_BASE_INFO_S, *LPNETDEV_ACS_PERSON_BASE_INFO_S;

/**
 * @struct tagNETDEVACSPersonQueryCond
 * @brief 门禁人员基本信息查询条件
 * @attention
 */
typedef struct tagNETDEVACSPersonQueryCond
{
    CHAR     szName[NETDEV_LEN_260];                         /* 姓名 */
    CHAR     szNumber[NETDEV_FACE_IDNUMBER_LEN];             /* 证件号 */
    UINT32   udwType;                                        /* 人员类型  0员工  1访客*/
    UINT32   udwOffset;                                      /* 从当前序号开始查询 序号从0开始*/
    UINT32   udwLimit;                                       /* 每次查询的数量，最大为200 */

    BYTE     byRes[128];                                     /* 保留字段 */
}NETDEV_ACS_PERSON_QUERY_COND_S, *LPNETDEV_ACS_PERSON_QUERY_COND_S;

/**
 * @struct tagNETDEVBatchOperateBasicInfo
 * @brief 批量查询返回的基本信息 结构体定义 Device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVBatchOperateBasicInfo
{
    UINT32   udwTotal;       /* 数量 */
    UINT32   udwOffset;      /* 查询起始序号 */
    UINT32   udwNum;         /* 查询结果总数 */
    BYTE     byRes[128];     /* 保留字段  Reserved */
}NETDEV_BATCH_OPERATE_BASIC_S,*LPNETDEV_BATCH_OPERATE_BASIC_S;


/**
 * @struct tagNETDEVACSPersonPermissionInfo
 * @brief 人员授权信息
 * @attention
 */
typedef struct tagNETDEVACSPersonPermissionInfo
{
    NETDEV_OPERATE_LIST_S        stPersonList;                    /* 授权人员ID列表 */
    UINT32                       udwTemplateID;                   /* 时间模板ID  员工授权时携带*/
    NETDEV_ACS_TIME_SECTION_S    stValidTime;                     /* 有效时间，访客授权时携带 */
    NETDEV_OPERATE_LIST_S        stDoorList;                      /* 授权门通道列表，对门通道授权时携带 */
    NETDEV_OPERATE_LIST_S        stDoorGroupList;                 /* 授权门组列表，对门组授权时携带 */
    BYTE                         byRes[256];                      /* 保留字段 */
}NETDEV_ACS_PERSON_PERMISSION_INFO_S, *LPNETDEV_ACS_PERSON_PERMISSION_INFO_S;


/**
 * @struct tagNETDEVACSPermissionGroupInfo
 * @brief 权限组信息
 * @attention
 */
typedef struct tagNETDEVACSPermissionGroupInfo
{
    UINT32                       udwPermissionGroupID ;                  /* 权限组ID */
    CHAR                         szPermissionGroupName[NETDEV_LEN_260];  /* 权限组名称 */

    BYTE                         byRes[256];                             /* 保留字段 */
}NETDEV_ACS_PERMISSION_GROUP_INFO_S, *LPNETDEV_ACS_PERMISSION_GROUP_INFO_S;

/**
 * @struct tagNETDEVACSDoorPermissionInfo
 * @brief 门授权信息
 * @attention
 */
typedef struct tagNETDEVACSDoorPermissionInfo
{
    UINT32                                  udwPermissionNum;                  /* 权限组个数 */
    NETDEV_ACS_TIME_SECTION_S               stValidTime;                       /* 有效时间 */
    LPNETDEV_ACS_PERMISSION_GROUP_INFO_S    pstPermissionGroupList;            /* 权限组信息列表.Num数为0时可选 */
    BYTE                                    byRes[256];                         /* 保留字段 */
}NETDEV_ACS_DOOR_PERMISSION_INFO_S, *LPNETDEV_ACS_DOOR_PERMISSION_INFO_S;

/**
 * @struct tagNETDEVACSPermissionInfo
 * @brief 授权信息
 * @attention
 */
typedef struct tagNETDEVACSPermissionInfo
{
    UINT32                       udwPermissionID;                   /* 权限ID     */
    CHAR                         szPermissionName[NETDEV_LEN_260];  /* 权限名称 */
    UINT32                       udwPermissionType;                 /* 权限类型：0表示员工权限组，1表示访客权限组 */
    NETDEV_OPERATE_LIST_S        stPersonList;                      /* 人员ID列表，其中dwSize为人员个数*/
    UINT32                       udwTemplateID;                     /* 时间模板ID */
    NETDEV_ACS_TIME_SECTION_S    stValidTime;                       /* 有效时间 */
    NETDEV_OPERATE_LIST_S        stDoorList;                        /* 门通道列表, 其中dwSize为门通道个数*/
    
    BYTE                         byRes[256];                      /* 保留字段 */
}NETDEV_ACS_PERMISSION_INFO_S, *LPNETDEV_ACS_PERMISSION_INFO_S;

/**
 * @struct tagNETDEVACSPersonBlacklistInfo
 * @brief 黑名单信息
 * @attention
 */
typedef struct tagNETDEVACSPersonBlacklistInfo
{
    UINT32                               udwBlackListID;                    /* 黑名单ID */
    NETDEV_FACE_MEMBER_ID_INFO_S         stIdentificationInfo;               /* 身份信息 */

    BYTE                                byRes[256];                        /* 保留字段 */
}NETDEV_ACS_PERSON_BLACKLIST_INFO_S, *LPNETDEV_ACS_PERSON_BLACKLIST_INFO_S;



/**
 * @struct tagNETDEVACSPersonPermissionBasicInfo
 * @brief 人员授权信息
 * @attention
 */
typedef struct tagNETDEVACSPersonPermissionBasicInfo
{
    UINT32   udwPermissionID;                    /* 权限编号 */
    UINT32   udwPersonID;                        /* 人员编号 */
    CHAR     szPersonName[NETDEV_LEN_260];       /* 人员名称 */
    CHAR     szPersonNumber[NETDEV_LEN_16];      /* 人员编号 */
    UINT32   udwDeptID;                          /* 部门编号 */
    CHAR     szDeptName[NETDEV_LEN_260];         /* 部门名称 */
    UINT32   udwTemplateID;                      /* 模板ID */
    CHAR     szTemplateName[NETDEV_LEN_260];     /* 模板名称 */
    UINT32   udwCardID;                          /* 卡编号 已绑定卡时会携带*/
    CHAR     szCardNo[NETDEV_LEN_64];            /* 卡号 */
    UINT32   udwCardStatus;                      /* 卡状态*/
    UINT32   udwAuthStatus;                      /* 授权状态 0未授权  1已授权*/
    BYTE     byRes[256];                         /* 保留字段 */
}NETDEV_ACS_PERSON_PERMISSION_BASIC_INFO_S, *LPNETDEV_ACS_PERSON_PERMISSION_BASIC_INFO_S;

/**
 * @struct tagNETDEVPermissionGroupInfo
 * @brief 权限组信息
 * @attention
 */
typedef struct tagNETDEVPermissionGroupInfo
{
    UINT32 udwPermissionGroupID;                                   /* PermissionGroupID */
    CHAR   szPermissionGroupName[NETDEV_LEN_260];                  /* 权限组名称 */
    BYTE   byRes[256];                                              /* 保留字段 */
}NETDEV_PERMISSION_GROUP_INFO_S, *LPNETDEV_PERMISSION_GROUP_INFO_S;

/**
 * @struct tagNETDEVFaceAttr
 * @brief 人脸属性信息
 * @attention 无 None
 */
typedef struct tagNETDEVFaceAttr
{
    UINT32 udwGender;                                     /* 性别 详见 NETDEV_GENDER_TYPE_E */
    UINT32 udwAgeRange;                                   /* 年龄段 详见 NETDEV_AGE_RANGE_E */
    UINT32 udwEthicCode;                                  /* 民族代码 详见 NETDEV_ETHIC_CODE_E */
    UINT32 udwGlassFlag;                                  /* 是否戴眼镜标志 详见 NETDEV_GLASS_FLAG_E */
    UINT32 udwGlassesStyle;                               /* 眼镜款式 详见 NETDEV_GLASSES_STYLE_E */
    UINT32 udwMaskFlag;                                   /* 是否戴口罩 未检测时可选 详见 NETDEV_MASK_FLAG_E */
    FLOAT  fTemperature;                                  /* 人员体温 单位：摄氏度 */
    BYTE   byRes[120];                                    /* 保留字段 */
}NETDEV_FACE_ATTR_S,*LPNETDEV_FACE_ATTR_S;

/**
 * @struct tagNETDEVCompareInfo
 * @brief 人脸对比信息
 * @attention
 */
typedef struct tagNETDEVCompareInfo
{
    NETDEV_FILE_INFO_S  stPersonImage;                    /* 人员图片 */
    NETDEV_FILE_INFO_S  stSnapshotImage;                  /* 抓拍图片 */
    BYTE                byRes[128];                       /* 保留字段 */
}NETDEV_COMPARE_INFO_S, *LPNETDEV_COMPARE_INFO_S;

/**
 * @struct tagNETDEVACSAttendanceLogInfo
 * @brief 出入记录信息
 * @attention
 */
typedef struct tagNETDEVACSAttendanceLogInfo
{
    UINT32 udwAlarmType;                    /* 告警类型 */
    INT64  tTimeStamp;                      /* 告警时间 */
    CHAR   szDoorName[NETDEV_LEN_260];      /* 门名称 */
    CHAR   szDoorNo[NETDEV_LEN_64];         /* 门编号 */
    UINT32 udwDoorDirect;                   /* 进出方向 0:进,1:出 */
    CHAR   szCardNo[NETDEV_LEN_64];         /* 刷卡卡号*/
    CHAR   szPersonName[NETDEV_LEN_260];    /* 刷卡人姓名 */
    UINT32 udwPersonType;                   /* 人员类型  参见NETDEV_ACS_PERSON_TYPE_E*/
    CHAR   szPersonPhone[NETDEV_LEN_64];    /* 刷卡人电话 */
    CHAR   szPersonDept[NETDEV_LEN_260];    /* 刷卡人部门 */
    NETDEV_COMPARE_INFO_S stCompareInfo;    /* 脸对比信息，速通门会携带此信息 */
    NETDEV_FACE_ATTR_S    stFaceAttr;       /* 人脸属性信息 */
    BYTE   byRes[104];                      /* 保留字段 */
}NETDEV_ACS_ATTENDANCE_LOG_INFO_S, *LPNETDEV_ACS_ATTENDANCE_LOG_INFO_S;

 /**
 * @struct tagACSVisitLogInfo
 * @brief 访客记录信息
 * @attention
 */
typedef struct tagACSVisitLogInfo
{
    UINT32 udwLogID;                                /* 日子ID */
    UINT32 udwVisitorID;                            /* 访客ID */
    CHAR   szVisitorName[NETDEV_LEN_260];           /* 访客姓名 [1,64]字符 */
    CHAR   szVisitorCompany[NETDEV_LEN_260];        /* 访客公司 [1,64]字符 */
    CHAR   szVisitorPhone[NETDEV_LEN_64];           /* 访客电话 */
    CHAR   szCardNo[NETDEV_LEN_16];                 /* 访客卡号 */
    UINT32 udwIntervieweeID;                        /* 被访者ID */
    CHAR   szIntervieweeName[NETDEV_LEN_260];       /* 被访者姓名 [1,64]字符 */
    CHAR   szIntervieweeDept[NETDEV_LEN_260];       /* 被访者部门 [1,64]字符 */
    INT64  tScheduleStartTime;                      /* 预约来访时间 UTC时间 单位秒s */
    INT64  tRealStartTime;                          /* 实际来访时间 UTC时间 单位秒s */
    UINT32 udwStatus;                               /* 状态 参见枚举NETDEV_ACS_VISIT_STATUS_E */
    BYTE   byRes[256];                              /* 保留字段 */
}NETDEV_ACS_VISIT_LOG_INFO_S, *LPNETDEV_ACS_VISIT_LOG_INFO_S;


/**
 * @enum tagNETDEVAlarmActionType
 * @brief 输出开关量的报警状态
 * @attention
 */
typedef struct tagNETDEVSwitchOutputAlarmStatus
{
    UINT32 udwID;               /* 输出开关量编号 */
    INT32  dwAlarmStatus;       /* 开关量输出告警状态 */
    BYTE   bRes[32];            /* 保留字段 */
}NETDEV_ALARM_STATUS_S,* LPNETDEV_ALARM_STATUS_S;

/*************************************************************************************************************
************************************获取通道列表Begin******************************************************
***************************************************************************************************************/
/**
 * @struct tagstNETDEVDevChnBaseInfo
 * @brief 设备通道基本信息
 * @attention
 */
typedef struct tagstNETDEVDevChnBaseInfo
{    
    INT32 dwChannelID;                                      /* 通道ID */
    INT32 dwDevID;                                          /* 设备ID */
    INT32 dwOrgID;                                          /* 组织ID */
    INT32 dwChnType;                                        /* 通道类型，参见 NETDEV_CHN_TYPE_E */
    INT32 dwChnStatus;                                      /* 通道状态, 参见 NETDEV_CHN_STATUS_E */
    INT32 dwChnIndex;                                       /* 通道索引 */
    CHAR szChnName[NETDEV_NAME_MAX_LEN];                    /* 通道名称 */
    UINT32 udwRight;                                        /* 通道权限 */
    BYTE   byRes[128];                                      /* 保留字段 */
}NETDEV_DEV_CHN_BASE_INFO_S, *LPNETDEV_DEV_CHN_BASE_INFO_S;

/**
 * @struct tagstNETDEVDevChnEncodeInfo
 * @brief 设备编码通道信息
 * @attention
 */
typedef struct tagstNETDEVDevChnEncodeInfo
{
    NETDEV_DEV_CHN_BASE_INFO_S  stChnBaseInfo;                                  /* 通道基本信息 */
    INT32                       dwMaxStream;                                    /* 支持的最大流个数 */
    NETDEV_STREAM_FORMAT_INFO_S astStreamFormatList[NETDEV_STREAM_MAX_NUM];     /* 媒体流编码格式列表 */
    BOOL                        bSupportPTZ;                                    /* 是否支持云台 */
    BOOL                        bScrambleEnable;                                /* 码流是否加扰使能 */
    INT32                       dwAudioResID;                                   /* 音频资源ID */
    CHAR                        szGBResID[NETDEV_LEN_32];                                      /* 国标资源ID */
    BYTE                        byRes[224];                                     /* 保留字段 */
}NETDEV_DEV_CHN_ENCODE_INFO_S, *LPNETDEV_DEV_CHN_ENCODE_INFO_S;

/**
 * @struct tagQueryCondition
 * @brief 条件查询通道信息结构体
 * @attention
 */
typedef struct tagQueryCondition
{
    INT32                   dwLimit;
    INT32                   dwOffset;

    INT32                   dwQryInfoNum;
    LPNETDEV_QUERY_INFO_S   pstQueryInfo;
    INT32                   dwRecursion;

    BYTE   byRes[260];                                          /* 保留字段 */
}NETDEV_QUERY_CHN_CONDITION_S, *LPNETDEV_QUERY_CHN_CONDITION_S;

/**
 * @struct tagstNETDEVDevChnDecodeInfo
 * @brief 设备解码通道信息
 * @attention
 */
typedef struct tagstNETDEVDevChnDecodeInfo
{    
    NETDEV_DEV_CHN_BASE_INFO_S      stChnBaseInfo;              /* 通道基本信息 */
    INT32 dwVideoFmtCapSize;                                    /* 编码制式能力集选项数量 */
    INT32 adwVideoFormatCap[NETDEV_VIDEO_FORMAT_CAP_NUM];       /* 编码制式能力集 参见枚举NETDEV_DC_VIDEOFORMAT_E*/
    INT32 dwLayoutCapSize;                                      /* 分屏能力集选项数量 */
    INT32 adwLayoutCap[NETDEV_LAYOUT_CAP_NUM];                  /* 分屏能力集 */
    INT32 dwResolutionDefault;                                  /* 默认分辨率制式 参见枚举NETDEV_DC_VIDEOFORMAT_E */

    BYTE   byRes[260];                                          /* 保留字段 */
}NETDEV_DEV_CHN_DECODE_INFO_S, *LPNETDEV_DEV_CHN_DECODE_INFO_S;

/**
 * @struct tagstNETDEVDevChnAlarmOutInfo
 * @brief 告警输出通道信息
 * @attention
 */
typedef struct tagstNETDEVDevChnAlarmOutInfo
{
    NETDEV_DEV_CHN_BASE_INFO_S  stChnBaseInfo;    /* 通道基本信息 */
    INT32                       dwRunMode;        /* 运行模式（常开/常闭）参见#NETDEV_ALARM_STATUS_E */
    INT32                       dwDuration;       /* 持续时间：(ms) */
    UINT32                      udwRelayMode;     /* 中继模式 1：单稳态 2：双稳态 */
    UINT32                      udwAlarmOutputNum;/* 报警输出序号 */
    BYTE                        byRes[252];       /* 保留字段 */
}NETDEV_DEV_CHN_ALARMOUT_INFO_S, *LPNETDEV_DEV_CHN_ALARMOUT_INFO_S;

/**
 * @struct tagstNETDEVDevChnAlarmInInfo
 * @brief 告警输入通道信息
 * @attention
 */
typedef struct tagstNETDEVDevChnAlarmInInfo
{
    NETDEV_DEV_CHN_BASE_INFO_S  stChnBaseInfo;  /* 通道基本信息 */
    INT32                       dwRunMode;      /* 运行模式（常开/常闭）参见#NETDEV_ALARM_STATUS_E */
    BOOL                        bEnable;        /* 使能开关（使能开/使能关） */
    BYTE                        byRes[260];     /* 保留字段 */
}NETDEV_DEV_CHN_ALARMIN_INFO_S, *LPNETDEV_DEV_CHN_ALARMIN_INFO_S;

/**
 * @struct tagstNETDEVDevChnAudioInfo
 * @brief 音频通道信息
 * @attention
 */
typedef struct tagstNETDEVDevChnAudioInfo
{
    NETDEV_DEV_CHN_BASE_INFO_S      stChnBaseInfo;         /* 通道基本信息 */
    INT32                           dwAssociatedResID;     /* 音频通道的关联资源ID */

    BYTE   byRes[256];                                      /* 保留字段 */
}NETDEV_DEV_CHN_AUDIO_INFO_S, *LPNETDEV_DEV_CHN_AUDIO_INFO_S;

/**
 * @struct tagstNETDEVDevChnDaInfo
 * @brief 代理设备通道信息(门禁、报警点)
 * @attention
 */
typedef struct tagstNETDEVDevChnDaInfo
{    
    NETDEV_DEV_CHN_BASE_INFO_S  stChnBaseInfo;                          /* 通道基本信息 */
    CHAR                        szPointCode[NETDEV_DA_POINT_CODE_LEN];  /* 点位编码或门编码 */
    CHAR                        szAreaCode[NETDEV_DA_AREA_CODE_LEN];    /* 区域编码 */
    UINT32                      udwPointStatus;                         /* 告警点位状态请参考#NETDEV_ALARM_POINT_STATUS_TYPE_E 或门状态 请参考#NETDEV_DOOR_STATUS_TYPE_E */

    BYTE                        byRes[260];                             /* 保留字段 */
}NETDEV_DEV_CHN_DA_INFO_S, *LPNETDEV_DEV_CHN_DA_INFO_S;

/**
 * @struct tagstNETDEVDevChnXWEncodeInfo
 * @brief 设备XW本地信号源通道信息
 * @attention
 */
typedef struct tagstNETDEVDevChnXWEncodeInfo
{
    NETDEV_DEV_CHN_BASE_INFO_S  stChnBaseInfo;  /* 通道基本信息 */
    INT32                       dwVideoSrc;     /* 视频输入格式 NETDEV_VIDEO_SRC_TYPE_E */
    BYTE                        byRes[260];     /* 保留字段 */
}NETDEV_DEV_CHN_XW_ENCODE_INFO_S, *LPNETDEV_DEV_CHN_XW_ENCODE_INFO_S;


/**
 * @struct tagNETDEVEmergencyBellInfo
 * @brief 紧急铃信息 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVEmergencyBellInfo
{
    UINT32   udwID;                                            /* 紧急铃序号 */
    BOOL     bEnable;                                          /* 紧急铃使能标记*/
    CHAR     szName[NETDEV_EMERGENCY_BRLL_NAME_LEN];           /* 紧急铃名称 支持中文 */
    UINT32   udwRegionCode;                                    /* 紧急铃地区码 */
    UINT32   udwDistrictCode;                                  /* 紧急铃区域码 */
    UINT32   udwAddressCode;                                   /* 紧急铃地址码 */
    BYTE     byRes[108];                                       /* 保留字段 */
}NETDEV_EMERGENCY_BELL_INFO_S, *LPNETDEV_EMERGENCY_BELL_INFO_S;

/**
 * @struct tagNETDEVEmergencyBellInfoList
 * @brief 紧急铃列表信息 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVEmergencyBellInfoList
{
    UINT32   udwNum;                                           /* 紧急铃个数 用户输入申请的紧急铃个数，现阶段固定是NETDEV_EMERGENCY_BRLL_MAX_NUM*/
    LPNETDEV_EMERGENCY_BELL_INFO_S pstEmergencyBellList;       /*紧急铃信息 动态申请，一次申请NETDEV_EMERGENCY_BRLL_MAX_NUM个，*/

    BYTE     byRes[16];                                       /* 保留字段 */
}NETDEV_EMERGENCY_BELL_INFO_LIST_S, *LPNETDEV_EMERGENCY_BELL_INFO_LIST_S;


/**
 * @struct tagNETDEVPtzCapabilityInfo
 * @brief 视频通道云台能力集 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVPtzCapabilityInfo
{
    BOOL   bIsSupportPtz;       /* 是否支持云台 0不支持 1支持 */
    BOOL   bIsSupportTrack;     /* 是否支持录制巡航 0不支持 1支持 */

    BYTE   byRes[128];          /* 保留字段 */
}NETDEV_PTZ_CAPABILITY_INFO_S, *LPNETDEV_PTZ_CAPABILITY_INFO_S;

/**
 * @struct tagNETDEVVideoCapabilityInfo
 * @brief 视频通道实况能力集 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVVideoCapabilityInfo
{
    BOOL   bIsSupportImageSettings;     /* 是否支持画面调节 0不支持 1支持 */
    BOOL   bIsSupportCorrectCfg;        /* 是否支持图像矫正 0不支持 1支持 */
    BOOL   bIsSupportEPTZ;              /* 是否支持电子云台智能跟踪功能 0不支持 1支持 */

    BYTE   byRes[120];                  /* 保留字段 */
}NETDEV_VIDEO_CAPABILITY_INFO_S, *LPNETDEV_VIDEO_CAPABILITY_INFO_S;

/**
 * @struct tagNETDEVPlayBackCapabilityInfo
 * @brief 视频通道回放能力集 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVPlayBackCapabilityInfo
{
    BOOL   bIsSupportStep;      /* 是否支持单帧 0不支持 1支持 */
    BOOL   bIsSupportIntgVod;   /* 是否支持智能回放 0不支持 1支持 */

    BYTE   byRes[128];          /* 保留字段 */
}NETDEV_PLAYBACK_CAPABILITY_INFO_S, *LPNETDEV_PLAYBACK_CAPABILITY_INFO_S;

/**
 * @struct tagNETDEVSmartCapabilityInfo
 * @brief 视频通道实况能力集 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVSmartCapabilityInfo
{
    BOOL   bIsSupportPassengerFlow;     /* 是否支持客流量统计 0:不支持 1:支持 */
    BOOL   bIsVehicleDetection;         /* 是否支持车辆识别功能 0:不支持 1:支持 */
    BOOL   bIsCrossLineSupported;       /* 是否支持越界检测 0:不支持 1:支持 */
    BOOL   bIsIntrusionSupported;       /* 是否支持区域入侵 0:不支持 1:支持 */
    BOOL   bIsStructRecognitionSupport; /* 是否支持视频结构化识别功能 0：不支持 1：支持 */
    BOOL   bIsFaceRecognitionSupported; /* 是否支持人脸识别功能 0: 不支持 1: 支持*/
    BOOL   bIsFaceDetectionSupported;   /* 是否支持人脸检测功能 0: 不支持 1: 支持 */
    UINT32 udwSupportBoxDomeLinkage;    /* 是否支持枪球联动 详见 NETDEV_SUP_BOX_DOME_LINKAGE_E */
    UINT32 udwSupportAttrOverlay;       /* 是否支持结构化属性叠加显示功能：0：不支持；1：支持 */
    BYTE   byRes[223];                  /* 保留字段 */
}NETDEV_SMART_CAPABILITY_INFO_S, *LPNETDEV_SMART_CAPABILITY_INFO_S;


/**
 * @struct tagNETDEVVideoDetailCapabilityInfo
 * @brief 视频通道能力集 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVVideoDetailCapabilityInfo
{
    INT32                             dwChannelID;                     /* 通道ID  */
    NETDEV_PTZ_CAPABILITY_INFO_S      stPtzCapabilityInfo;             /* 云台能力集 */
    NETDEV_VIDEO_CAPABILITY_INFO_S    stVideoCapabilityInfo;           /* 实况能力 */
    NETDEV_PLAYBACK_CAPABILITY_INFO_S stPlayBackCapabilityInfo;        /* 回放能力 */
    NETDEV_SMART_CAPABILITY_INFO_S    stSmartCapabilityInfo;           /* 智能能力集 */
    BYTE                              byRes[128];                      /* 保留字段 */
}NETDEV_VIDEO_DETAIL_CAPABILITY_INFO_S, *LPNETDEV_VIDEO_DETAIL_CAPABILITY_INFO_S;

/**
 * @struct tagNETDEVDevSmartCapabilityInfo
 * @brief 设备智能能力集 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVDevSmartCapabilityInfo
{
    BOOL   bIsFaceRecognitionSupported;     /* 是否支持人脸识别能力 0不支持 1支持 */
    BOOL   bIsFaceDetectionSupported;       /* 是否支持人脸检测功能 0不支持 1支持 */
    BOOL   bIsVehicleRecognitionSupported;  /* 是否支持车辆识别功能 0不支持 1支持 */

    BYTE   byRes[255];                      /* 保留字段 */
}NETDEV_DEV_SMART_CAPABILITY_INFO_S, *LPNETDEV_DEV_SMART_CAPABILITY_INFO_S;

 /**
 * @struct tagNETDEVDevCapabilityInfo
 * @brief 设备能力集信息 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVDevCapabilityInfo
{
    UINT32                              udwDevID;                          /* 设备ID  */
    NETDEV_DEV_SMART_CAPABILITY_INFO_S  stSmartCapabilityInfo;          /* 智能能力集 */
    BYTE                                byRes[256];                         /* 保留字段 */
}NETDEV_DEV_CAPABILITY_INFO_S, *LPNETDEV_DEV_CAPABILITY_INFO_S;


 /**
 * @struct tagNETDEVSystemCapabilityInfo
 * @brief 系统能力集信息 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVSystemCapabilityInfo
{
    UINT32  udwSize;                             /* 文件大小 */
    CHAR    *pcData;                             /* 文件数据 根据Size动态申请*/
    BYTE    byRes[256];                         /* 保留字段 */
}NETDEV_SYSTEM_CAPABILITY_INFO_S, *LPNETDEV_SYSTEM_CAPABILITY_INFO_S;

/**
 * @struct tagNETDEVVideoSnapCapInfo
 * @brief 视频输入通道的抓图参数能力 Snap parameter capability
 * @attention
 */
typedef struct tagNETDEVVideoSnapCapInfo
{
    BOOL bIsSupportSnapshotCfg;                                                  /* 设备是否支持抓图可配置,0: 不支持, 1: 支持 Support configuration or not. 0-No, 1-Yes*/
    UINT32 udwPictureMaxSize;                                                    /* 抓图支持的图片大小的最大值 */
    UINT32 udwResolutionNum;                                                     /* 支持的分辨率个数 */
    NETDEV_VIDEO_RESOLUTION_S astResolutionCapList[NETDEV_LEN_16];               /* 支持的抓图分辨率信息列表 */

    BYTE   byRes[255];                                                           /* 保留字段 */
 
}NETDEV_VIDEO_SNAP_CAP_S,*LPNETDEV_VIDEO_SNAP_CAP_S;

/**
 * @struct tagNETDEVVideoSnapshotInfo
 * @brief 视频输入通道的抓图信息 Snap parameter info
 * @attention
 */
typedef struct tagNETDEVVideoSnapshotInfo
{
    BOOL bIsEnabled;                                                             /* 抓图使能,0: 关闭, 1: 开启 Support configuration or not. 0-close, 1-open*/
    UINT32 udwPictureMaxSize;                                                    /* 最大图片大小 */
    UINT32 udwSnapshotInterval;                                                  /* 抓图间隔，范围[1, 60],单位:秒。仅在抓图数量SnapshotNum设置为2或3时有效 */
    UINT32 udwSnapshotNum;                                                       /* 抓图数量，范围[1,3] */
    NETDEV_VIDEO_RESOLUTION_S stResolution;                                      /* 抓图分辨率 */

    BYTE   byRes[255];                                                           /* 保留字段 */
}NETDEV_VIDEO_SNAPSHOT_S,*LPNETDEV_VIDEO_SNAPSHOT_S;


/**
 * @struct tagstNETDEVAlarmLevelInfo
 * @brief 告警级别信息
 * @attention 
 */
typedef struct tagstNETDEVAlarmLevelInfo
{
    INT32   dwAlarmType;                    /* 告警类型 参见NETDEV_ALARM_TYPE_E*/
    INT32   dwAlarmSubType;                 /* 告警子类型 参见NETDEV_ALARM_SUBTYPE_E*/
    INT32   dwAlarmLevel;                   /* 告警级别 */
}NETDEV_ALARM_LEVEL_INFO_S, *LPNETDEV_ALARM_LEVEL_INFO_S;

/**
 * @struct tagstNETDEVAlarmLevelInfoList
 * @brief 告警级别信息列表
 * @attention
 */
typedef struct tagstNETDEVAlarmLevelInfoList
{
    INT32                           dwSize;                 /* 告警级别信息数量 */
    LPNETDEV_ALARM_LEVEL_INFO_S     pstAlarmLevelInfo;      /* 告警级别信息列表*/
}NETDEV_ALARM_LEVEL_INFO_LIST_S, *LPNETDEV_ALARM_LEVEL_INFO_LIST_S;

/**
 * @struct tagNETDEVBatchOperateList
 * @brief 批量操作列表 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVBatchOperateList
{
    UINT32                          udwNum;         /* 批量操作数量 */
    UINT32                          udwStatus;      /* 结果状态 */
    LPNETDEV_BATCH_OPERATOR_INFO_S  pstBatchList;   /* 批量操作信息 最大是2000个,需动态申请 */
    BYTE                            byRes[128];     /* 保留字段  Reserved */
}NETDEV_BATCH_OPERATOR_LIST_S,*LPNETDEV_BATCH_OPERATOR_LIST_S;

/**
 * @struct tagNETDEVMonitorDevResultInfo
 * @brief 设备布控结果信息 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVMonitorDevResultInfo
{
    UINT32                          udwDevID;           /* 布控设备ID */
    NETDEV_BATCH_OPERATOR_LIST_S    stMonitorResult;    /* 设备布控结果信息 */
    BYTE                            byRes[128];         /* 保留字段  Reserved */
}NETDEV_MONITOR_DEV_RESULT_INFO_S,*LPNETDEV_MONITOR_DEV_RESULT_INFO_S;

/**
 * @struct tagNETDEVMonitorDevResultList
 * @brief 设备布控结果列表 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVMonitorDevResultList
{
    UINT32                              udwDevNum;                                  /* 布控设备数量 */
    NETDEV_MONITOR_DEV_RESULT_INFO_S    astMonitorDevResultInfo[NETDEV_LEN_16];     /* 布控设备结果信息列表 目前最大量是5台设备*/
    BYTE                                byRes[128];                                 /* 保留字段  Reserved */
}NETDEV_MONITOR_DEV_RESULT_LIST_S,*LPNETDEV_MONITOR_DEV_RESULT_LIST_S;

/**
 * @struct tagNETDEVBatchOperateMemberList
 * @brief 批量操作成员列表 结构体定义 Device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVBatchOperateMemberList
{
    UINT32  udwTaskNo;             /* 操作任务号，仅NVR支持 */
    UINT32  udwMemberNum;          /* 成员数量 */
    UINT32* pstMemberIDList;       /* 成员列表 根据udwNum进行动态申请 */
    BYTE    byRes[128];             /* 保留字段  Reserved */

}NETDEV_BATCH_OPERATE_MEMBER_LIST_S,*LPNETDEV_BATCH_OPERATE_MEMBER_LIST_S;

/**
* @struct tagNETDEVMonitorCapacityInfo
* @brief 容量布控信息结构体定义
* @attention 无None
*/
typedef struct tagNETDEVMonitorCapacityInfo
{
    UINT32  udwMonitorType;         /* 布控类型 0：人脸布控   1：车辆布控 */
    UINT32  udwNum;                 /* 设备数量 */
    UINT32  *pudwDevIDList;         /* 设备ID列表 根据udwNum动态申请*/
    BYTE    byRes[128];             /* 保留字段  Reserved */
}NETDEV_MONITOR_CAPACITY_INFO_S, *LPNETDEV_MONITOR_CAPACITY_INFO_S;

/**
* @struct tagNETDEVDevCapacityInfo
* @brief 设备容量信息结构体定义
* @attention 无None
*/
typedef struct tagNETDEVDevCapacityInfo
{
    UINT32  udwDevID;               /* 设备ID */
    UINT32  udwCapacity;            /* 设备布控人脸总数量 */
    UINT32  udwMonitoredNum;        /* 已布控人脸数量 */
    BYTE    byRes[128];             /* 保留字段  Reserved */
}NETDEV_DEV_CAPACITY_INFO_S, *LPNETDEV_DEV_CAPACITY_INFO_S;

/**
* @struct tagNETDEVMonitorCapacityList
* @brief 容量布控操作列表结构体定义
* @attention 无None
*/
typedef struct tagNETDEVMonitorCapacityList
{
    UINT32                          udwDevNum;              /* 设备数量 */
    LPNETDEV_DEV_CAPACITY_INFO_S    pstDevCapacityList;     /* 容量列表 根据DevNum动态申请 */
    BYTE                            byRes[64];              /* 保留字段  Reserved */
}NETDEV_MONITOR_CAPACITY_LIST_S, *LPNETDEV_MONITOR_CAPACITY_LIST_S;



/**
* @struct tagNETDEVDevMonitorInfo
* @brief 成员布控设备信息结构体定义
* @attention 无None
*/
typedef struct tagNETDEVDevMonitorInfo
{
    UINT32  udwDevID;               /* 设备ID */
    UINT32  udwMonitorStatus;       /* 设备布控状态 */
    BYTE    byRes[64];              /* 保留字节 */
}NETDEV_DEV_MONITOR_INFO_S,*LPNETDEV_DEV_MONITOR_INFO_S;

/**
* @struct tagNETDEVMonitorMemberInfo
* @brief 成员布控状态信息结构体定义
* @attention 无None
*/
typedef struct tagNETDEVMonitorMemberInfo
{
    UINT32                      udwMemberID;                        /* 成员ID */
    CHAR                        szName[NETDEV_LEN_260];             /* 成员名称 */
    UINT32                      udwDevNum;                          /* 布控设备数量 */
    UINT32                      udwMonitorStatus;                   /* 布控状态 0:布控失败   1:布控成功*/
    NETDEV_DEV_MONITOR_INFO_S   stDevMonitorInfo[NETDEV_LEN_16];    /* 成员布控设备信息列表 目前设备数量最大为5*/
    BYTE                        byRes[64];                          /* 保留字段  Reserved */
}NETDEV_MONITOR_MEMBER_INFO_S,*LPNETDEV_MONITOR_MEMBER_INFO_S;

/**
* @struct tagNETDEVMonitorFaceVehicle
* @brief 布控任务下车辆/人脸成员
* @attention 无None
*/
typedef struct tagNETDEVMonitorFaceVehicle
{
    UINT32                          udwMemberNum;                           /* 成员数量 */
    NETDEV_MONITOR_MEMBER_INFO_S    stMonitorMemberInfo[NETDEV_LEN_32];     /* 成员布控状态信息 */
    BYTE                            byRes[64];                              /* 保留字段  Reserved */
}NETDEV_MONITOR_FACE_VEHICLE_S,*LPNETDEV_MONITOR_FACE_VEHICLE_S;


/**
 * @struct tagNETDEVDeleteDBFlagInfo
 * @brief 删除库信息标志位
 * @attention 无 None
 */
typedef struct tagNETDEVDeleteDBFlagInfo
{
    BOOL     bIsDeleteMember;       /* 是否删除库下里面的成员信息：0:不删除 1:删除 */
    BYTE     byRes[128];            /* 保留字段  Reserved */

}NETDEV_DELETE_DB_FLAG_INFO_S,*LPNETDEV_DELETE_DB_FLAG_INFO_S;

/**
 * @struct tagNETDEVFaceDBMemberCond
 * @brief 人脸库成员查询条件 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVFaceDBMemberCond
{
    UINT32   udwOffset;     /* 分页查询中第一条数据的序号 */
    UINT32   udwLimit;      /* 每页最大条数 */
    BYTE    byRes[128];     /* 保留字段  Reserved */
}NETDEV_FACE_DB_MEMBER_COND_S,*LPNETDEV_FACE_DB_MEMBER_COND_S;


/**
 * @struct tagNETDEVFaceAddMemberList
 * @brief 批量新增人脸成员列表 结构体定义 Device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVFaceAddMemberList
{
    UINT32                      udwTaskNo;              /* 操作任务号，仅NVR支持 */
    UINT32                      udwNum;                 /* 人脸成员数量 */
    LPNETDEV_FACE_MEMBER_INFO_S pstMemberInfoList;      /* 人脸列表成员 根据udwNum进行动态申请 */
    BYTE                        byRes[128];             /* 保留字段  Reserved */

}NETDEV_FACE_ADD_MEMBER_LIST_S,*LPNETDEV_FACE_ADD_MEMBER_LIST_S;



/**
 * @struct tagstNETDEVFaceSnapFeature
 * @brief 人脸识别抓拍特征
 * @attention
 */
typedef struct tagstNETDEVFaceSnapFeature
{
    UINT32   udwAge;                            /* 年龄 */
    UINT32   udwGender;                         /* 性别 参见枚举NETDEV_FACE_MEMBER_GENDER_TYPE_E*/
    BOOL     bWithGlasses;                     /* 是否带眼镜 */
    BOOL     bWithSmile;                       /* 是否微笑 */
    UINT32   udwHappyIndex;                     /* 开心指数 */

    BYTE     byRes[128];                        /* 保留字段  Reserved */
}NETDEV_FACE_SNAP_FEATURE_INFO_S, *LPNETDEV_FACE_SNAP_FEATURE_INFO_S;

/**
 * @struct tagstNETDEVFaceSnapLog
 * @brief 人脸识别抓拍事件
 * @attention
 */
typedef struct tagstNETDEVFaceSnapLog
{
    UINT32                          udwID;                                  /* 抓拍记录ID */
    UINT32                          udwTimestamp;                           /* 时间 */
    CHAR                            szAlarmSrc[NETDEV_FACE_ALARM_SRC_LEN];  /* 抓拍相机 */
    NETDEV_FACE_SNAP_FEATURE_INFO_S stSnapFeature;                          /* 抓拍特征 */
    NETDEV_FACE_ALARM_SNAP_IMAGE_S  stSnapImage;                            /* 抓拍图片信息 */

    BYTE                            byRes[128];                             /* 保留字段  Reserved */
}NETDEV_FACE_SNAP_LOG_INFO_S, *LPNETDEV_FACE_SNAP_LOG_INFO_S;


/**
 * @struct tagNETDEVVehicleInfoList
 * @brief 车辆信息列表 结构体定义 Device information Structure definition
 * @attention 无 None
 */
typedef struct tagNETDEVVehicleInfoList
{
    UINT32                          udwVehicleNum;          /* 车辆成员数量 */
    LPNETDEV_VEHICLE_DETAIL_INFO_S  pstMemberInfoList;      /* 车辆成员列表 根据udwNum进行动态申请 */
    BYTE                            byRes[132];             /* 保留字段  Reserved */
}NETDEV_VEHICLE_INFO_LIST_S,*LPNETDEV_VEHICLE_INFO_LIST_S;

/**
 * @struct tagDSTCfgTimeInfo
 * @brief 夏令时时间
 * @attention
 */
typedef struct tagDSTCfgTimeInfo
{
    UINT32    udwMonth;                   /* 开始的月份 1:一月  2:二月.....12:十二月*/
    UINT32    udwWeekNum;                 /* 开始这个月的第几周 1:第一周 2:第二周 1:第一周 3:第三周 4:第四周 5:最后一周 */
    UINT32    udwWeekDay;                 /* 开始这个月第X周的周几 1:周一  2:周二  3:周三  4:周四  5:周五  6:周六  7:周日*/
    UINT32    udwHour;                    /* 开始时间，单位小时（24小时制）0：00:00     1：01:00     2：02:00   3：03:00     22：22:00      23：23:00 */
    BYTE      byRes[256];                 /* 保留字段 */
}NETDEV_DST_CFG_TIME_INFO_S,* LPNETDEV_DST_CFG_TIME_INFO_S;


/**
* @brief 通道权限信息 结构体定义
* @attention 无
*/
typedef struct tagNETDEVChnPermissionInfo
{
    INT32    dwChannelID;               /* 通道号 */
    INT32    dwPermission;              /* 通道权限, 请参考#NETDEV_CHN_PERMISSION_TYPE_E */
    BYTE     byRes[256];                /* 保留字段  Reserved */
}NETDEV_CHN_PERMISSION_INFO_S, *LPNETDEV_CHN_PERMISSION_INFO_S;


/**
 * @brief用户详细信息
 * @attention 
 */
typedef struct tagNETDEVUserDetailInfo
{
    UINT32                         udwLevel;                                          /* 用户等级  参见枚举 NETDEV_USER_LEVEL_E*/
    CHAR                           szUserName[NETDEV_LEN_64];                         /* 用户名 不支持修改，获取单个信息时作为入参 范围1~18*/
    CHAR                           szPassword[NETDEV_LEN_256];                        /* 密码 添加使用 范围0~256 获取时不返回该字段*/
    UINT32                         udwBasePermission;                                 /* 基本权限，参见枚举NETDEV_USER_BASE_PERMISSION_E 按BIT位进行权限描述，相应BIT为1，表示该权限生效，为0表示该权限不生效*/
    UINT32                         udwNum;                                            /* 视频输入通道数量 */
    NETDEV_CHN_PERMISSION_INFO_S   astChnPermission[NETDEV_CHANNEL_MAX];              /* 通道权限列表 */
    BYTE                           byRes[256];                                        /* 保留字段 */
}NETDEV_USER_DETAIL_INFO_S, *LPNETDEV_USER_DETAIL_INFO_S;

/**
 * @brief修改用户详细信息
 * @attention 
 */
typedef struct tagNETDEVUserModifyDetailInfo
{
    NETDEV_USER_DETAIL_INFO_S      stUserInfo;
    BOOL                           bIsModifyPassword;                       /* 是否修改密码, 修改时赋值 */
    BOOL                           bIsModifyOther;                          /* 是否管理员修改其他用户, 修改时赋值 */
    CHAR                           szNewPassword[NETDEV_LEN_256];           /* 新密码(修改密码时使用)，范围0~256 不涉及密码的修改 那么该字段可不下发，如果配置时，密码为空，则下发空字段*/
    CHAR                           szCurrentPassword[NETDEV_LEN_256];       /* /当前使用的密码 修改密码时携带 范围0~256 管理员修改其他用户密码只需要新密码则可，如果配置时，密码为空，则下发空字段*/
    BYTE                           byRes[256];                              /* 保留字段 */
}NETDEV_USER_MODIFY_DETAIL_INFO_S, *LPNETDEV_USER_MODIFY_DETAIL_INFO_S;

/**
 * @brief用户信息列表
 * @attention 
 */
typedef struct tagNETDEVUserDetailList
{
    UINT32                      udwNum;                          /* 用户数量 */
    NETDEV_USER_DETAIL_INFO_S   astUserInfo[NETDEV_LEN_64];     /* 用户列表 */
    BYTE                        byRes[128];                      /* 保留字段 */
}NETDEV_USER_DETAIL_LIST_S, *LPNETDEV_USER_DETAIL_LIST_S;

/**
 * @struct tagNetWorkCloudInfo
 * @brief MyCloud信息
 * @attention
 */
typedef struct tagNetWorkCloudInfo
{
    BOOL        bEnable;                                  /* 云是否使能 0 不使能 1使能 */
    UINT32      udwType;                                  /* 类型，暂时为0 */
    UINT32      udwConStatus;                             /* 连接状态 0未连接 1已连接 */
    CHAR        szDomainAddress[NETDEV_DOMAIN_LEN];       /* 域名 */
    CHAR        szDevName[NETDEV_LEN_64];                 /* 设备名称  Device name */
    CHAR        szUserName[NETDEV_LEN_64];                /* 用户名称  User name */
    CHAR        szPassWord[NETDEV_LEN_64];                /* 密码 */
    UINT32      udwOffLineErrCode;                        /* 下线原因 参见枚举#NETDEV_MYCLOUD_OFF_ERR_E */
    CHAR        szRegisterCode[NETDEV_LEN_64];            /* 注册码 */
    CHAR        szRandomCode[NETDEV_LEN_32];              /* 注册随机码,与产品序列号共同构成注册码 */
    UINT32      udwRegisterStatus;                         /* 注册状态 参加枚举#NETDEV_REGISTER_STATUS_E*/
    CHAR        szActiveCode[NETDEV_LEN_64];              /* 激活码 */
    CHAR        szRedirectServer[NETDEV_LEN_128];         /* 云服务器重定向信息, 即当前注册/保活服务器地址(域名/IP), 便于问题定位，不允许用户修改 */

    BYTE        byRes[28];                                /* 保留字段 */
}NETDEV_NETWORK_CLOUD_INFO_S,* LPNETDEV_NETWORK_CLOUD_INFO_S;


/**
 * @brief 配置视频分发服务器信息
 * @attention
 */
typedef struct tagstNETDEVCDNSrvInfo
{
    UINT32  udwState;                           /* 流分发功能状态:0：不可用1：可用 */
    FLOAT   fSurplusFlux;                       /* 剩余流量(单位：GB) */
    CHAR    szServerDomain[NETDEV_LEN_256];     /* 服务器域名 */
    BYTE    byRes[256];
}NETDEV_CDN_SRV_INFO_S, *LPNETDEV_CDN_SRV_INFO_S;

/**
 * @brief 视频分发配置
 * @attention
 */
typedef struct tagstNETDEVCDNRule
{
    BOOL    bEnable;        /* 分发功能是否开启 */
    UINT32  ProtocolType;   /* 分发协议类型, 参见NETDEV_CDN_PROT_E */
    BYTE    byRes[256];
}NETDEV_CDN_RULE_S, *LPNETDEV_CDN_RULE_S;

/**
 * @brief 视频分发通道信息信息
 * @attention
 */
typedef struct tagstNETDEVCDNChnInfo
{
    UINT32  udwChannelID;                   /* 通道号 */
    UINT32  udwStreamType;                  /* 码流类型 */
    CHAR    szStreamUrl[NETDEV_LEN_260];    /* 推流地址 */
    BYTE    byRes[256];
}NETDEV_CDN_CHL_INFO_S, *LPNETDEV_CDN_CHL_INFO_S;

/**
* @struct tagNETDEVLoginNatInfo
* @brief 云设备登录信息
* @attention 无 None
*/
typedef struct tagNETDEVLoginNatInfo
{
    CHAR szDeviceUsername[NETDEV_LEN_260];      /* 设备登录用户名 */
    CHAR szDeviceIP[NETDEV_IPV4_LEN_MAX];       /* IP地址 */
    INT32 dwDevicePort;                         /* 端口 */
    BYTE byRes[236];                            /* 保留字段 Reserved */
} NETDEV_CLOUD_NAT_LOGIN_INFO_S, *LPNETDEV_CLOUD_NAT_LOGIN_INFO_S;

/**
 * @struct tagNETDEVPersonLibCapInfo
 * @brief 人脸库容量信息
 * @attention 无 None
 */
typedef struct tagNETDEVPersonLibCapInfo
{
    UINT32          udwLibID;            /* 库ID */
    UINT32          udwCapacity;         /* 库容量信息，单位：人 */
    BYTE            byRes[128];          /* 保留字段 */
}NETDEV_PERSON_LIB_CAP_INFO_S, *LPNETDEV_PERSON_LIB_CAP_INFO_S;

/**
 * @struct tagNETDEVPersonLibCapList
 * @brief 所有人员库的容量信息
 * @attention 无 None
 */
typedef struct tagNETDEVPersonLibCapList
{
    UINT32                      udwMaxPerpleMun;                         /* 总库容量，单位：K人 */
    UINT32                      udwFreePerpleNum;                        /* 剩余容量，单位：人 */
    UINT32                      udwMaxLibNum;                            /* 最大可建库容量 */
    UINT32                      udwFreeLibNum;                           /* 剩余可建库容量 */
    UINT32                      udwNum;                                  /* 已建库个数 库个数范围:[0, 16] */
    NETDEV_PERSON_LIB_CAP_INFO_S  stLibCapInfoList[NETDEV_LEN_16];         /* 单库容量信息 */
    BYTE                        byRes[256];                              /* 保留字段 */
}NETDEV_PERSON_LIB_CAP_LIST_S, *LPNETDEV_PERSON_LIB_CAP_LIST_S;

/**
 * @struct tagNETDEVPersonQueryInfo
 * @brief 人员信息查询条件
 * @attention 无 None
 */
typedef struct tagNETDEVPersonQueryInfo
{
    UINT32                      udwNum;             /* 查询条件数量 */
    LPNETDEV_QUERY_INFO_S       pstQueryInfos;      /* 查询条件列表，Num为0时，不带此字段*/
    UINT32                      udwLimit;           /* 每次查询的数量，最大20 */
    UINT32                      udwOffset;          /* 从当前序号开始查询，序号从0开始 */
    BYTE                        byRes[256];         /* 保留字段 */
}NETDEV_PERSON_QUERY_INFO_S, *LPNETDEV_PERSON_QUERY_INFO_S;

/**
 * @struct tagNETDEVMonitorQueryInfo
 * @brief 布控信息查询条件
 * @attention 无 None
 */
typedef struct tagNETDEVMonitorQueryInfo
{
    UINT32                      udwLimit;           /* 每次查询的数量，最大20 */
    UINT32                      udwOffset;          /* 从当前序号开始查询，序号从0开始 */
    BOOL                        bIsQueryAll;        /* 是否查询所有，是:TRUE,否:FALSE */
    BYTE                        byRes[128];         /* 保留字段 */
}NETDEV_MONITOR_QUERY_INFO_S, *LPNETDEV_MONITOR_QUERY_INFO_S;

/**
 * @struct tagNETDEVPersonQueryResultInfo
 * @brief 布控信息查询结果信息
 * @attention 无 None
 */
typedef struct tagNETDEVPersonQueryResultInfo
{
    UINT32                          udwTotal;           /* 符合查询条件的总数 */
    UINT32                          udwOffset;          /* 当前序号，序号从0开始 */
    NETDEV_PERSON_INFO_LIST_S       stPersonInfoList;   /* 符合条件的人脸信息列表 */
    BYTE                            byRes[256];         /* 保留字段 */
}NETDEV_PERSON_QUERY_RESULT_INFO_S, *LPNETDEV_PERSON_QUERY_RESULT_INFO_S;

/*
* @struct tagNETDEVStartInfo
* @brief 查询开始信息
* @attention 无 None
*/
typedef struct tagNETDEVStartInfo
{
    UINT32 udwNum;                             /* 查询的通道数量 */
    UINT32 *pudwID;                            /* 查询的通道ID列表 ,需动态分配内存*/
    UINT32 udwBegin;                           /* 查找开始时间，UTC时间戳 */
    UINT32 udwEnd;                             /* 查找结束时间，UTC时间戳 */
    BYTE   byRes[128];                         /* 保留字  Reserved */
}NETDEV_START_INFO_S,*LPNETDEV_START_INFO_S;

/*
* @struct tagNETDEVPicDataInfo
* @brief 图片数据信息
* @attention 无 None
*/
typedef struct tagNETDEVPicDataInfo
{
    UINT32 udwID;                              /* 通道编号 */
    UINT32 udwTime;                            /* 时间UTC */
    UINT32 udwSize;                            /* 图片大小，单位字节 */
    CHAR   szName[NETDEV_LEN_256];             /* 图片名称，长度[1,64] */
    CHAR*  pcData;                             /* 图片数据base64编码 需动态分配内存*/
    BYTE   byRes[128];                         /* 保留字  Reserved */
}NETDEV_PIC_DATA_INFO_S,*LPNETDEV_PIC_DATA_INFO_S;

/*
* @struct tagNETDEVPicQueryCond
* @brief 图片查询条件
* @attention 无 None
*/
typedef struct tagNETDEVPicQueryCond
{
    UINT32 udwSearchID;                        /* 业务号 */
    UINT32 udwLimit;                           /* 每次查询的数量 */
    UINT32 udwOffset;                          /* 从当前序号开始查询，序号从0开始 */
    BYTE   byRes[128];                         /* 保留字  Reserved */
}NETDEV_PIC_QUERY_COND_S,*LPNETDEV_PIC_QUERY_COND_S;

/*
* @struct tagNETDEVPicQueryResult
* @brief 图片查询结果
* @attention 无 None
*/
typedef struct tagNETDEVPicQueryResult
{
    UINT32 udwTotal;                           /* 查询结果总个数 */
    UINT32 udwNum;                             /* 当前返回数量 */
    BYTE   byRes[128];                         /* 保留字  Reserved */
}NETDEV_PIC_QUERY_RESULT_S,*LPNETDEV_PIC_QUERY_RESULT_S;

/**
 * @struct tagstNETDEVTmSectInfo
 * @brief 自定义时间段
 * @attention
 */
typedef struct tagstNETDEVTmSectInfo
{
    CHAR   szBegin[NETDEV_LEN_64];                                                  /* 开始时间, 格式hh:mm:ss 长度范围[0,31] */
    CHAR   szEnd[NETDEV_LEN_64];                                                    /* 结束时间，格式hh:mm:ss 长度范围[0,31] */
    BYTE   byRes[128];                                                              /* 保留字段 */
}NETDEV_TM_SECT_INFO_S,*LPNETDEV_TM_SECT_INFO_S;

/**
 * @struct tagstNETDEVVehThroughInfo
 * @brief 车辆放行信息
 * @attention
 */
typedef struct tagstNETDEVVehThroughInfo
{
    UINT32 udwType;                                                                 /* 放行方式 详见NETDEV_VEH_RELEASE_TYPE_E */
    UINT32 udwNum;                                                                  /* 自定义放行时间段列表 最多4个*/
    NETDEV_TM_SECT_INFO_S astTmSectInfo[NETDEV_LEN_4];                              /* 自定义放行时间段信息 */
    BYTE   byRes[128];                                                              /* 保留字段 */
}NETDEV_VEH_THROUGH_INFO_S,*LPNETDEV_VEH_THROUGH_INFO_S;

/**
 * @struct tagstNETDEVVehLaneInfo
 * @brief 车道信息
 * @attention
 */
typedef struct tagstNETDEVVehLaneInfo
{
    UINT32 udwVehLaneID;                                                            /* 车道ID */
    CHAR   szName[NETDEV_LEN_128];                                                  /* 车道名称 */
    UINT32 udwType;                                                                 /* 车道类型 详见 NETDEV_VEH_LANE_TYPE_E */
    UINT32 udwNum;                                                                  /* 自定义启用时间段个数，最大4段 */
    NETDEV_TM_SECT_INFO_S astEnTmSectInfo[NETDEV_LEN_4];                            /* 自定义启用时间段列表 */
    NETDEV_VEH_THROUGH_INFO_S stTmpVehThrough;                                      /* 临时车放行 */
    NETDEV_VEH_THROUGH_INFO_S stRegVehThrough;                                      /* 固定车放行 */
    UINT32 udwDevNum;                                                               /* 设备数量 最多4个*/
    UINT32 audwDevID[NETDEV_LEN_4];                                                 /* 车道关联的出入口设备ID列表 */
    BYTE   byRes[128];                                                              /* 保留字段 */
}NETDEV_VEH_LANE_INFO_S,*LPNETDEV_VEH_LANE_INFO_S;

/**
 * @struct tagstNETDEVVehLaneInfoList
 * @brief 车道信息列表
 * @attention
 */
typedef struct tagstNETDEVVehLaneInfoList
{
    UINT32 udwNum;                                                                   /* 车道数，最多2车道 */
    NETDEV_VEH_LANE_INFO_S astVehLaneInfo[NETDEV_LEN_4];                             /* 车道信息 */
    BYTE   byRes[128];                                                               /* 保留字段 */
}NETDEV_VEH_LANE_INFO_LIST_S,*LPNETDEV_VEH_LANE_INFO_LIST_S;

/**
 * @struct tagstNETDEVParkEntrLaneInfo
 * @brief 停车场、出入口、车道列表信息
 * @attention
 */
typedef struct tagstNETDEVParkEntrLaneInfo
{
    UINT32 udwParkingLotID;                                                          /* 停车场ID */
    UINT32 udwEntranceID;                                                            /* 出入口ID */
    NETDEV_VEH_LANE_INFO_LIST_S stVehLaneInfoList;                                   /* 车道信息列表 */
    BYTE   byRes[128];                                                               /* 保留字段 */
}NETDEV_PARK_ENTR_LANE_INFO_S,*LPNETDEV_PARK_ENTR_LANE_INFO_S;

/**
 * @struct tagstNETDEVParkInfo
 * @brief 停车场信息
 * @attention
 */
typedef struct tagstNETDEVParkInfo
{
    UINT32 udwParkingLotID;                                                          /* 停车场ID */
    CHAR   szParkingLotName[NETDEV_LEN_260];                                         /* 停车场名称，长度范围[1,64] */
    UINT32 udwTotalSpaceNum;                                                         /* 总车位数 */
    UINT32 udwRmnSpaceNum;                                                           /* 剩余车位数 */
    UINT32 udwReserveSpaceNum;                                                       /* 固定车位数 */
    UINT32 udwRmnReserveSpaceNum;                                                    /* 剩余固定车位数 */
    UINT32 udwMainParkingLotID;                                                      /* 所属停车场ID 没有所属主库时可不携带该字段 */
    BYTE   byRes[256];                                                               /* 保留字段 */
}NETDEV_PARK_INFO_S,*LPNETDEV_PARK_INFO_S;

/**
 * @struct tagstNETDEVParkInfoList
 * @brief 停车场信息列表
 * @attention
 */
typedef struct tagstNETDEVParkInfoList
{
    UINT32 udwNum;                                                                   /* 停车场数量 */
    NETDEV_PARK_INFO_S   astParkInfo[NETDEV_LEN_16];                                 /* 停车场信息 一个VMS最大支持8个停车场 */
    BYTE   byRes[512];                                                               /* 保留字段 */
}NETDEV_PARK_INFO_LIST_S, *LPNETDEV_PARK_INFO_LIST_S;

/**
 * @struct tagstNETDEVParkEntranceInfo
 * @brief 停车场出入口信息
 * @attention
 */
typedef struct tagstNETDEVParkEntranceInfo
{
    UINT32 udwParkEntranceID;                                                        /* 出入口ID 添加出入口是不携带 */
    CHAR   szName[NETDEV_LEN_260];                                                   /* 出入口名称，长度范围[1,64] */
    UINT32 udwVehicleLaneNum;                                                        /* 车道数，最多2个 */
    BYTE   byRes[256];                                                               /* 保留字段 */
}NETDEV_PARK_ENTRANCE_INFO_S, *LPNETDEV_PARK_ENTRANCE_INFO_S;

/**
 * @struct tagstNETDEVParkEntranceInfoList
 * @brief 停车场出入口信息列表
 * @attention
 */
typedef struct tagstNETDEVParkEntranceInfoList
{
    UINT32 udwNum;                                                                   /* 出入口数量 */
    NETDEV_PARK_ENTRANCE_INFO_S   astParkEntranceInfo[NETDEV_LEN_32];                /* 出入口信息 一个停车场最大支持16个出入口 */
    BYTE   byRes[512];                                                               /* 保留字段 */
}NETDEV_PARK_ENTRANCE_INFO_LIST_S,*LPNETDEV_PARK_ENTRANCE_INFO_LIST_S;

/**
 * @struct tagstNETDEVParkEntranceID
 * @brief 停车场出入口ID
 * @attention
 */
typedef struct tagstNETDEVParkEntranceID
{
    UINT32 udwParkID;                                                                /* 停车场ID */
    UINT32 udwEntranceID;                                                            /* 出入口ID */
    BYTE   byRes[256];                                                               /* 保留字段 */
}NETDEV_PARK_ENTRANCE_ID_S,*LPNETDEV_PARK_ENTRANCE_ID_S;

/**
 * @struct tagstNETDEVParkSpaceInfo
 * @brief 停车场车位信息
 * @attention
 */
typedef struct tagstNETDEVParkSpaceInfo
{
    UINT32 udwTotalSpaceNum;                                                         /* 总车位数 */
    UINT32 udwRmnSpaceNum;                                                           /* 剩余车位数 */
    UINT32 udwReserveSpaceNum;                                                       /* 固定车位数 */
    UINT32 udwRmnReserveSpaceNum;                                                    /* 剩余固定车位数 */
    BYTE   byRes[256];                                                               /* 保留字段 */
}NETDEV_PARK_SPACE_INFO_S,*LPNETDEV_PARK_SPACE_INFO_S;

/**
 * @struct tagstNETDEVChgRuleInfo
 * @brief 收费规则信息
 * @attention
 */
typedef struct tagstNETDEVChgRuleInfo
{
    UINT32 udwNum;                                                                   /* 规则数量 */
    UINT32 udwType;                                                                  /* 规则类型 详见 NETDEV_CHG_RULE_TYPE_E*/
    BYTE   byRes[256];                                                               /* 保留字段 */
}NETDEV_CHG_RULE_INFO_S,*LPNETDEV_CHG_RULE_INFO_S;

/**
 * @struct tagstNETDEVChgRuleQueryCond
 * @brief 收费规则查询条件
 * @attention
 */
typedef struct tagstNETDEVChgRuleQueryCond
{
    UINT32 udwParkingLotID;                                                          /* 停车场ID */
    UINT32 udwChargeRuleType;                                                        /* 收费规则类型 详见 NETDEV_CHG_RULE_TYPE_E */
    BYTE   byRes[256];                                                               /* 保留字段 */
}NETDEV_CHG_RULE_QUERY_COND_S,*LPNETDEV_CHG_RULE_QUERY_COND_S;

/**
 * @struct tagstNETDEVAbnChgRuleInfo
 * @brief 异常收费规则
 * @attention
 */
typedef struct tagstNETDEVAbnChgRuleInfo
{
    UINT32 udwID;                                                                    /* 规则ID */
    CHAR   szName[NETDEV_LEN_128];                                                   /* 规则名称 */
    UINT32 udwChgAmount;                                                             /* 收费金额(元) */
    CHAR   szDescription[NETDEV_LEN_512];                                            /* 描述，范围[1,128] */
    UINT32 udwIsDefaultRule;                                                         /* 是否为默认规则 0:否 1:是*/
    BYTE   byRes[128];                                                               /* 保留字段 */
}NETDEV_ABN_CHG_RULE_INFO_S,*LPNETDEV_ABN_CHG_RULE_INFO_S;

/**
 * @struct tagNETDEVEntrVehSnapInfo
 * @brief 入场车辆抓拍信息
 * @attention
 */
typedef struct tagNETDEVEntrVehSnapInfo
{
    UINT32 udwID;                                                                    /* 入场记录ID */
    UINT32 udwChannelID;                                                             /* 通道ID */
    CHAR   szPlateNo[NETDEV_LEN_16];                                                 /* 车牌号码，范围[1,16] */
    UINT32 udwVehType;                                                               /* 车辆类型 详见 NETDEV_PARK_VEH_TYPE_E */
    UINT32 udwVehColor;                                                              /* 车辆颜色 详见 NETDEV_VEHICLE_COLOR_E*/
    UINT32 udwVehAttr;                                                               /* 车辆属性 详见 NETDEV_VEH_ATTR_TYPE_E */
    UINT32 udwIsBlackList;                                                           /* 是否是黑名单车辆 0:否 1:是 */
    UINT32 udwEnterTime;                                                             /* 入场时间，UTC时间，单位秒 */
    UINT32 udwIsAutoOpenGate;                                                        /* 是否自动开闸 0:否 1:是 */
    NETDEV_FILE_INFO_S stPlateImage;                                                 /* 车牌图片 */
    NETDEV_FILE_INFO_S stVehImage;                                                   /* 车辆图片 */
    BYTE   byRes[128];                                                               /* 保留字段 */
}NETDEV_ENTR_VEH_SNAP_INFO_S,*LPNETDEV_ENTR_VEH_SNAP_INFO_S;

/**
 * @struct tagNETDEVEntrInfo
 * @brief 入场车辆抓拍信息
 * @attention
 */
typedef struct tagNETDEVEntrInfo
{
    UINT32 udwEnterTime;                                                             /* 入场时间，UTC时间，单位秒 */
    NETDEV_FILE_INFO_S stPlateImage;                                                 /* 车牌图片 */
    NETDEV_FILE_INFO_S stVehImage;                                                   /* 车辆图片 */
    BYTE   byRes[256];                                                               /* 保留字段 */
}NETDEV_ENTR_INFO_S,*LPNETDEV_ENTR_INFO_S;

/**
 * @struct tagstNETDEVExitInfo
 * @brief 出场车辆抓拍信息
 * @attention
 */
typedef struct tagstNETDEVExitInfo 
{
    UINT32 udwExitTime;                                                              /* 出场时间(UTC时间，单位秒) */
    UINT32 udwTotalAmount;                                                           /* 停车费(单位分) */
    UINT32 udwIsAlreadyPaid;                                                         /* 是否已缴费 0:否 1:是*/
    UINT32 udwChargeRecordID;                                                        /* 缴费记录ID */
    NETDEV_FILE_INFO_S stPlateImage;                                                 /* 车牌图片 */
    NETDEV_FILE_INFO_S stVehImage;                                                   /* 车辆图片 */
    CHAR   szOperatorName[NETDEV_LEN_128];                                           /* 操作员 */
    BYTE   byRes[256];                                                               /* 保留字段 */
}NETDEV_EXIT_INFO_S,*LPNETDEV_EXIT_INFO_S;

/**
 * @struct tagstNETDEVEntrExitMatchInfo
 * @brief 出入场记录信息
 * @attention
 */
typedef struct tagstNETDEVEntrExitMatchInfo
{
    UINT32 udwIsWhiteList;                                                           /* 是否是白名单车辆 0：否 1：是 */
    UINT32 udwIsBlackList;                                                           /* 是否是黑名单车辆 0:否 1:是 */
    UINT32 udwParkingTime;                                                           /* 停车时长，单位分，当出场时携带 */
    LPNETDEV_ENTR_INFO_S pstEntrInfo;                                                /* 匹配入场车辆信息 */
    LPNETDEV_EXIT_INFO_S pstExitInfo;                                                /* 匹配出场车辆信息 */
    BYTE   byRes[128];                                                               /* 保留字段 */
}NETDEV_ENTR_EXIT_MATCH_INFO_S,*LPNETDEV_ENTR_EXIT_MATCH_INFO_S;

/**
 * @struct tagstNETDEVParkEventInfo
 * @brief 停车场事件信息
 * @attention
 */
typedef struct tagstNETDEVParkEventInfo
{
    UINT32 udwID;                                                                    /* 记录ID */
    UINT32 udwParkID;                                                                /* 停车场ID */
    CHAR   szPlateNo[NETDEV_LEN_32];                                                 /* 车牌号码 */
    NETDEV_VEH_ATTR_S stVehAttr;                                                     /* 车辆属性信息 */
    UINT32 udwVehRemainNum;                                                          /* 场内车辆数 */
    UINT32 udwIsWhiteList;                                                           /* 是否是白名单车辆 0：否 1：是 */
    UINT32 udwIsBlackList;                                                           /* 是否是黑名单车辆 0：否 1：是 */
    CHAR   szEntranceName[NETDEV_LEN_128];                                           /* 岗亭出入口名称 */
    CHAR   szLaneName[NETDEV_LEN_128];                                               /* 车道名称 */
    UINT32 udwCrossDirection;                                                        /* 过车方向 0：入场 1：出场 */
    LPNETDEV_ENTR_INFO_S pstEnterInfo;                                               /* 入场信息 */
    LPNETDEV_EXIT_INFO_S pstExitInfo;                                                /* 出场信息 */
    BYTE   byRes[256];                                                               /* 保留字段 */
}NETDEV_PARK_EVENT_INFO_S,*LPNETDEV_PARK_EVENT_INFO_S;

/**
 * @struct tagstNETDEVParkPayOrderInfo
 * @brief 停车场支付订单信息
 * @attention
 */
typedef struct tagstNETDEVParkPayOrderInfo
{
    CHAR   szOrderNo[NETDEV_LEN_128];                                               /* 订单号，由第三方生成 */
    UINT32 udwOrderStatus;                                                          /* 订单支付状态 详见枚举 NETDEV_ORDER_STATUS_E*/
    CHAR   szPlateNo[NETDEV_LEN_128];                                               /* 车牌号 */
    UINT32 udwPayType;                                                              /* 支付类型  详见枚举 NETDEV_PAY_TYPE_E*/
    CHAR   szPayTradeNo[NETDEV_LEN_128];                                            /* 支付订单号 */
    UINT32 udwTotalAmount;                                                          /* 停车费总金额，单位分 */
    UINT32 udwDiscountAmount;                                                       /* 优惠减免的金额，单位分 */
    BYTE   byRes[256];                                                              /* 保留字段 */
}NETDEV_PARK_PAY_ORDER_INFO_S,*LPNETDEV_PARK_PAY_ORDER_INFO_S;

/**
 * @struct tagstNETDEVParkCost
 * @brief 停车花费
 * @attention
 */
typedef struct tagstNETDEVParkCost
{
    UINT32 udwTotalAmount;                                                          /* 优惠减免的金额，单位分 */
    UINT32 udwEnterTime;                                                            /* 进场时间，UTC时间，单位秒 */
    UINT32 udwExitLimitTime;                                                        /* 规定离场时间，单位分钟 */
    BYTE   byRes[256];                                                              /* 保留字段 */
}NETDEV_PARK_COST_S, *LPNETDEV_PARK_COST_S;

/**
 * @struct tagstNETDEVPassRecordInfo
 * @brief 过车记录信息
 * @attention
 */
typedef struct tagstNETDEVPassRecordInfo
{
    UINT32 udwRecordID;                                                              /* 记录ID */
    NETDEV_FILE_INFO_S stPlateImage;                                                 /* 车牌图片 */
    CHAR   szPlateNo[NETDEV_LEN_16];                                                 /* 车牌号码，范围[1,16] */
    CHAR   szName[NETDEV_LEN_128];                                                   /* 车主姓名，范围[1,32] */
    UINT32 udwVehType;                                                               /* 车辆类型 详见NETDEV_VEHICLE_TYPE_E */
    UINT32 udwVehColor;                                                              /* 车辆颜色 详见 NETDEV_VEHICLE_COLOR_E */
    UINT32 udwIsBlackList;                                                           /* 是否是黑名单车辆 0:否 1:是 */
    UINT32 udwIsWhiteList;                                                           /* 是否是白名单 0：否 1：是 */
    CHAR   szParkName[NETDEV_LEN_260];                                               /* 停车场名称，范围[1,64] */
    UINT32 udwCrossDirection;                                                        /* 过车方向 0:进场 1:出场 */
    UINT32 udwPassTime;                                                              /* 过车时间，UTC时间，单位秒 */
    CHAR   szEntrName[NETDEV_LEN_260];                                               /* 出入口名称，范围[1,64] */
    BYTE   byRes[128];                                                               /* 保留字段 */
}NETDEV_PASS_RECORD_INFO_S,*LPNETDEV_PASS_RECORD_INFO_S;

/**
 * @struct tagstNETDEVTmpVehChgRecord
 * @brief 临时车缴费记录详细信息
 * @attention
 */
typedef struct tagstNETDEVTmpVehChgRecord
{
    UINT32 udwRecordID;                                                              /* 记录ID */
    CHAR   szPlateNo[NETDEV_LEN_16];                                                 /* 车牌号码，范围[1,16] */
    UINT32 udwVehicleType;                                                           /* 车辆类型 详见NETDEV_VEHICLE_TYPE_E */
    UINT32 udwChargeTime;                                                            /* 缴费时间，UTC时间，单位秒 */
    INT64    tParkTime;                                                              /* 停车时长，单位秒 */
    UINT32 udwAmount;                                                                /* 收费金额，单位元 */
    CHAR   szAbnRuleName[NETDEV_LEN_128];                                            /* 异常收费规则名称，范围[1,32] */
    UINT32 udwChgType;                                                               /* 收费类型 详见 NETDEV_CHG_TYPE_E */
    CHAR   szParkName[NETDEV_LEN_260];                                               /* 停车场名称，范围[1,64] */
    CHAR   szOperatorName[NETDEV_LEN_260];                                           /* 操作员名称，范围[1,64] */
    BYTE   byRes[128];                                                               /* 保留字段 */
}NETDEV_TMP_VEH_CHG_RECORD_S,*LPNETDEV_TMP_VEH_CHG_RECORD_S;

/**
 * @struct tagstNETDEVTmpVehChgAmount
 * @brief 临时车缴费金额
 * @attention
 */
typedef struct tagstNETDEVTmpVehChgAmount
{
    UINT32 udwAmount;                                                                /* 收费金额合计，单位元 */
    UINT32 udwManualPayment;                                                         /* 人工缴费，单位元 */
    UINT32 udwSelfhelpPayment;                                                       /* 自助缴费，单位元 */
    BYTE   byRes[128];                                                               /* 保留字段 */
}NETDEV_TMP_VEH_CHG_AMOUNT_S,*LPNETDEV_TMP_VEH_CHG_AMOUNT_S;

/**
 * @struct tagstNETDEVShiftInfo
 * @brief 交班信息
 * @attention
 */
typedef struct tagstNETDEVShiftInfo
{
    CHAR   szName[NETDEV_LEN_260];                                                   /* 交班用户名 */
    UINT32 udwAmount;                                                                /* 收费金额，单位元 */
    BYTE   byRes[128];                                                               /* 保留字段 */
}NETDEV_SHIFT_INFO_S,*LPNETDEV_SHIFT_INFO_S;

/**
 * @struct tagstNETDEVEntrExitSnapRecordID
 * @brief 出入场抓拍记录ID
 * @attention
 */
typedef struct tagstNETDEVEntrExitSnapRecordID
{
    UINT32 udwEnterID;                                                               /* 车辆入场抓拍记录ID */
    UINT32 udwExitID;                                                                /* 车辆出场抓拍记录ID */
    BYTE   byRes[128];                                                               /* 保留字段 */
}NETDEV_ENTR_EXIT_SNAP_RECORDID_S,*LPNETDEV_ENTR_EXIT_SNAP_RECORDID_S;

/**
 * @struct tagstNETDEVChgInfo
 * @brief 收费信息
 * @attention
 */
typedef struct tagstNETDEVChgInfo
{
    CHAR   szPlateNo[NETDEV_LEN_16];                                                 /* 车牌号码 范围[1,16] */
    UINT32 udwAmount;                                                                /* 收费金额，单位元 */
    UINT32 udwAbnRuleID;                                                             /* 异常收费规则ID */
    UINT32 udwIsFree;                                                                /* 是否免费 0:否，1:是*/
    INT64  tParkingTime;                                                             /* 停车时长，单位秒 */
    BYTE   byRes[128];                                                               /* 保留字段 */
}NETDEV_CHG_INFO_S,*LPNETDEV_CHG_INFO_S;

 /**
 * @struct tagNETDEVStructAlarmInfo
 * @brief 结构化告警上报信息
 * @attention 无 None
 */
typedef struct tagNETDEVStructAlarmInfo
{
    CHAR   szReference[NETDEV_LEN_260];                   /* 描述信息 */
    UINT32 udwTimeStamp;                                  /* 告警时间 从1970年1月1日0点开始的秒数 */
    UINT32 udwSeq;                                        /* 告警序号 */
    UINT32 udwSrcID;                                      /* 告警源ID */
    CHAR   szSrcName[NETDEV_LEN_260];                     /* 告警源名称 */
    UINT32 udwNotificationType;                           /* 通知类型 0：实时通知 1：历史通知 */
    BYTE   byRes[128];                                    /* 保留字段 */
}NETDEV_STRUCT_ALARM_INFO_S,*LPNETDEV_STRUCT_ALARM_INFO_S;

/**
 * @struct tagNETDEVFaceStructInfo
 * @brief 人脸信息
 * @attention 无 None
 */
typedef struct tagNETDEVFaceStructInfo
{
    UINT32 udwFaceID;                                     /* 人脸ID */
    UINT32 udwFaceDoforPersonID;                          /* 人脸所属人员ID */
    CHAR   szPosition[NETDEV_LEN_64];                     /* 人脸位置信息 */
    UINT32 udwSmallPicAttachIndex;                        /* 人脸对应的小图在图像列表中的索引 */
    UINT32 udwLargePicAttachIndex;                        /* 人脸对应的大图在图像列表中的索引 */
    CHAR   szFeaturVersion[NETDEV_LEN_64];                /* 半结构化特征厂商类型版本号 */
    CHAR   szFeature[NETDEV_LEN_1024];                    /* 基于人脸提取出来的特征信息 采用base64编码 前加密前512 Bytes */
    NETDEV_FACE_ATTR_S stFaceAttr;                        /* 人脸属性信息 */
    BYTE   byRes[128];                                    /* 保留字段 */
}NETDEV_FACE_STRUCT_INFO_S,*LPNETDEV_FACE_STRUCT_INFO_S;

/**
 * @struct tagNETDEVPersonAttr
 * @brief 人员属性
 * @attention 无 None
 */
typedef struct tagNETDEVPersonAttr
{
    UINT32 udwGender;                                     /* 性别 详见 NETDEV_GENDER_TYPE_E */
    UINT32 udwAgeRange;                                   /* 年龄段 详见 NETDEV_AGE_RANGE_E */
    UINT32 udwSleevesLength;                              /* 上衣长短款式 详见 NETDEV_SLEEVES_LENGTH_E */
    UINT32 udwCoatColor;                                  /* 上衣颜色 详见 NETDEV_CLOTHES_COLOR_E */
    UINT32 udwTrousersLength;                              /* 下衣长短款式 详见 NETDEV_TROUSERS_STYLE_E */
    UINT32 udwTrousersColor;                              /* 下衣颜色 详见 NETDEV_CLOTHES_COLOR_E */
    UINT32 udwBodyToward;                                 /* 身体抓怕朝向 详见 NETDEV_BODY_TOWARD_E */
    UINT32 udwShoesTubeLength;                            /* 鞋子长短款式 详见 NETDEV_SHOES_TUBE_LENGTH_E */
    UINT32 udwHairLength;                                 /* 发型长短 详见 NETDEV_HAIR_LENGTH_E */
    UINT32 udwBagFlag;                                    /* 是否携包标志 详见 NETDEV_BAG_FLAG_E */
    BYTE   byRes[128];                                    /* 保留字段 详见 */
}NETDEV_PERSON_ATTR_S,*LPNETDEV_PERSON_ATTR_S;

/**
 * @struct tagNETDEVPersonStructInfo
 * @brief 人员信息
 * @attention 无 None
 */
typedef struct tagNETDEVPersonStructInfo
{
    UINT32 udwPersonID;                                   /* 人员ID */
    UINT32 udwPersonDoforFaceID;                          /* 人员所属人脸ID */
    CHAR   szPosition[NETDEV_LEN_64];                     /* 人员位置信息 */
    UINT32 udwSmallPicAttachIndex;                        /* 人员对应的小图在图像列表中的索引 */
    UINT32 udwLargePicAttachIndex;                        /* 人员对应的大图在图像列表中的索引 */
    CHAR   szFeaturVersion[NETDEV_LEN_64];                /* 半结构化特征厂商类型版本号 */
    CHAR   szFeature[NETDEV_LEN_1024];                    /* 半结构化特征信息 采用base64编码 加密前512 Bytes */
    NETDEV_PERSON_ATTR_S stPersonAttr;                    /* 人员信息 */
    BYTE   byRes[128];                                    /* 保留字段 */
}NETDEV_PERSON_STRUCT_INFO_S,*LPNETDEV_PERSON_STRUCT_INFO_S;

/**
 * @struct tagNETDEVNonMotorVehicleAttr
 * @brief 非机动车属性信息
 * @attention 无 None
 */
typedef struct tagNETDEVNonMotorVehAttr
{
    UINT32 udwSpeedType;                                  /* 结构化场景中非机动车速度类型 详见 NETDEV_SPEED_TYPE_E */
    UINT32 udwImageDirection;                             /* 结构化场景中非机动车相对画面运动方向 详见 NETDEV_IMAGE_DIRECTION_E */
    UINT32 udwNonVehicleType ;                            /* 非机动车类型 详见 NETDEV_NON_VEH_TYPE_E */
    BYTE   byRes[128];                                    /* 保留字段 */
}NETDEV_NO_MOTOR_VEH_ATTR_S,*LPNETDEV_NO_MOTOR_VEH_ATTR_S;

/**
 * @struct tagNETDEVNonMotorVehInfo
 * @brief 非机动车信息
 * @attention 无 None
 */
typedef struct tagNETDEVNonMotorVehInfo
{
    UINT32 udwID;                                         /* 非机动车ID */
    CHAR   szPosition[NETDEV_LEN_64];                     /* 非机动车位置信息 */
    UINT32 udwSmallPicAttachIndex;                        /* 非机动车对应的小图在图像列表中的索引 */
    UINT32 udwLargePicAttachIndex;                        /* 非机动对应的大图在图像列表中的索引 */
    NETDEV_NO_MOTOR_VEH_ATTR_S stNoMotorVehAttr;          /* 非机动车属性信息 */
    UINT32 udwPersonOnNoVehiNum;                          /* 驾乘人员数目 */
    LPNETDEV_PERSON_ATTR_S pstPersonAttr;                 /* 人员属性 需动态申请内存 */
    BYTE   byRes[128];                                    /* 保留字段 */
}NETDEV_NON_MOTOR_VEH_INFO_S,*LPNETDEV_NON_MOTOR_VEH_INFO_S;

/**
 * @struct tagNETDEVPlateAttr
 * @brief 车牌属性信息
 * @attention 无 None
 */
typedef struct tagNETDEVPlateAttr
{
    CHAR   szPlateNo[NETDEV_LEN_64];                      /* 车牌号码 */
    UINT32 udwColor;                                      /* 车牌颜色 详见 NETDEV_PLATE_COLOR_E */
    UINT32 udwType;                                       /* 车牌类型 详见 NETDEV_PLATE_TYPE_E */
    BYTE   byRes[128];                                    /* 保留字段 */
}NETDEV_PLATE_ATTR_S,*LPNETDEV_PLATE_ATTR_S;

/**
 * @struct tagNETDEVVehicleInfo
 * @brief 车辆信息
 * @attention 无 None
 */
typedef struct tagNETDEVVehicleInfo
{
    UINT32 udwID;                                         /* 车辆ID */
    CHAR   szPosition[NETDEV_LEN_64];                     /* 车辆位置信息 */
    UINT32 udwSmallPicAttachIndex ;                       /* 车辆对应的小图在图像列表中的索引 */
    UINT32 udwLargePicAttachIndex;                        /* 车辆对应的大图在图像列表中的索引 */
    UINT32 udwPlatePicAttachIndex;                        /* 车牌对应的小图在图像列表中的索引 */
    CHAR   szFeatureVersion[NETDEV_LEN_64];               /* 半结构化特征厂商类型版本号 */
    CHAR   szFeature[NETDEV_LEN_1024];                    /* 基于人脸提取出来的特征信息 采用base64编码 加密前512 Bytes */
    NETDEV_VEH_ATTR_S stVehAttr;                          /* 车辆属性信息 */
    NETDEV_PLATE_ATTR_S stPlateAttr;                      /* 车牌属性信息 */
    BYTE   byRes[128];                                    /* 保留字段 */
}NETDEV_VEH_INFO_S, *LPNETDEV_VEH_INFO_S;

/**
 * @struct tagNETDEVObjectInfo
 * @brief 目标信息
 * @attention 无 None
 */
typedef struct tagNETDEVObjectInfo
{
    UINT32 udwFaceNum;                                    /* 人脸数量 */
    LPNETDEV_FACE_STRUCT_INFO_S pstFaceInfo;              /* 人脸信息 需动态申请内存 */
    UINT32 udwPersonNum;                                  /* 人员数量 */
    LPNETDEV_PERSON_STRUCT_INFO_S pstPersonInfo;          /* 人员信息 需动态申请内存 */
    UINT32 udwNonMotorVehNum;                             /* 非机动车数量 */
    LPNETDEV_NON_MOTOR_VEH_INFO_S pstNonMotorVehInfo;     /* 非机动车信息 需动态申请内存 */
    UINT32 udwVehicleNum;                                 /* 车辆数量 */
    LPNETDEV_VEH_INFO_S pstVehInfo;                       /* 车辆信息 需动态申请内存 */
    BYTE   byRes[128];                                    /* 保留字段 */
}NETDEV_OBJECT_INFO_S,*LPNETDEV_OBJECT_INFO_S;

/**
 * @struct tagNETDEVStructImageInfo
 * @brief 图像相关信息
 * @attention 无 None
 */
typedef struct tagNETDEVStructImageInfo
{
    UINT32 udwIndex;                                      /* 图像索引 */
    UINT32 udwType;                                       /* 图像类型 */
    UINT32 udwFormat;                                     /* 图像格式 详见 NETDEV_IMAGE_FORMAT_E*/
    UINT32 udwWidth;                                      /* 图像的宽度 */
    UINT32 udwHeight;                                     /* 图像的高度 */
    UINT32 udwCaptureTime;                                /* 图片采集时刻 */
    CHAR   szUrl[NETDEV_LEN_260];                         /* 图片URL */
    UINT32 udwSize;                                       /* 图像经过base64编码之后的长度 最大3M */
    CHAR*  pszData;                                       /* 图像的base64编码数据 */
    BYTE   byRes[128];                                    /* 保留字段 */
}NETDEV_STRUCT_IMAGE_INFO_S, *LPNETDEV_STRUCT_IMAGE_INFO_S;

/**
 * @struct tagNETDEVStructDataInfo
 * @brief 结构化数据信息
 * @attention 无 None
 */
typedef struct tagNETDEVStructDataInfo
{
    NETDEV_OBJECT_INFO_S stObjectInfo;                    /* 目标信息 */
    UINT32 udwImageNum;                                   /* 图像个数 */
    LPNETDEV_STRUCT_IMAGE_INFO_S pstImageInfo;            /* 图像相关信息 需动态申请内存 */
    BYTE   byRes[128];                                    /* 保留字段 */
}NETDEV_STRUCT_DATA_INFO_S,*LPNETDEV_STRUCT_DATA_INFO_S;

/**
 * @struct tagNETDEVNonMotorVehRecord
 * @brief 非机动车通行记录
 * @attention 无 None
 */
typedef struct tagNETDEVNonMotorVehRecord
{
    UINT32 udwRecordID;                                   /* 结构化非机动车记录ID */
    UINT32 udwPassingTime;                                /* 过车时间 UTC格式 单位秒 */
    CHAR   szChannelName[NETDEV_LEN_260];                 /* 相机名称 范围[1,63] */
    NETDEV_NON_MOTOR_VEH_INFO_S stNonMotorVehInfo;        /* 非机动车信息 */
    NETDEV_FILE_INFO_S stNoMotorVehImage;                 /* 非机动车抓拍图片 图片加密后的大小不超过500K */
    NETDEV_FILE_INFO_S stPanoImage;                       /* 全景图 仅携带图片URL和size 图片数据需要通过/LAPI/V1.0/System/Picture接口获取*/
    BYTE   byRes[256];                                    /* 保留字段 */
}NETDEV_NON_MOTOR_VEH_RECORD_S,*LPNETDEV_NON_MOTOR_VEH_RECORD_S;

/**
 * @struct tagNETDEVPersonPassRecord
 * @brief 人员通行记录详细信息
 * @attention 无 None
 */
typedef struct tagNETDEVPersonPassRecord
{
    UINT32 udwRecordID;                                   /* 结构化人员记录ID */
    UINT32 udwPassingTime;                                /* 过人时间 UTC格式 单位秒 */
    CHAR   szChannelName[NETDEV_LEN_260];                 /* 抓拍通道名称 范围[1,63] */
    NETDEV_FACE_ATTR_S   stFaceAttr;                      /* 人脸属性信息 */
    NETDEV_PERSON_ATTR_S stPersonAttr;                    /* 关联人员属性信息 */
    NETDEV_FILE_INFO_S   stFaceImage;                     /* 人脸抓拍图片 图片加密后的大小不超过500K */
    NETDEV_FILE_INFO_S   stPersonImage;                   /* 人体抓拍图片 图片加密后的大小不超过500K */
    NETDEV_FILE_INFO_S   stPanoImage;                     /* 全景图 仅携带图片URL和size 图片数据需要通过/LAPI/V1.0/System/Picture接口获取*/
    BYTE   byRes[256];                                    /* 保留字段 */
}NETDEV_PERSON_PASS_RECORD_S,*LPNETDEV_PERSON_PASS_RECORD_S;

/**
 * @struct tagNETDEVRectanglePoint
 * @brief 矩形坐标
 * @attention 无 None
 */
typedef struct tagNETDEVRectanglePoint
{
    NETDEV_POINT_S   stTopLeft;          /* 左上角的坐标点 */
    NETDEV_POINT_S   stBottomRight;      /* 右下角的坐标点 */
    BYTE             byRes[256];         /* 保留字段 */
}NETDEV_RECTANGLE_POINT_S, *LPNETDEV_RECTANGLE_POINT_S;

/**
 * @struct tagNETDEVManualLink
 * @brief 手动联动数据
 * @attention 无 None
 */
typedef struct tagNETDEVManualLink
{
    UINT32 udwType;                                       /* 联动类型 详见 NETDEV_LINKAGE_TYPE_E*/
    NETDEV_POINT_S stPoint;                               /* 点坐标 Type为0和2时生效 */
    NETDEV_RECTANGLE_POINT_S stRectangle;                 /* 矩形坐标 Type为1时生效 */
    BYTE   byRes[128];                                    /* 保留字段 */
}NETDEV_MANUAL_LINK_S,*LPNETDEV_MANUAL_LINK_S;

/**
 * @struct tagstNETDEVNICCapInfo
 * @brief 设备网卡能力集信息
 * @attention 
 */
typedef struct tagstNETDEVNICCapInfo
{
    UINT32   udwWorkModeNum;                                      /* 网卡支持的工作模式数量 NVR、VMS支持 */
    UINT32   audwWorkModeList[NETDEV_MAX_NIC_WORK_MODE_NUM];      /* 支持的工作模式列表,枚举参考网卡工作模式#NETDEV_NIC_WORK_MODE_E  */
    UINT32   udwNICNum;                                           /* 网卡数量 */
    UINT32   udwPortWorkModeNum;                                  /* 网口工作模式数量 IPC支持 */
    UINT32   audwPortWorkModeList[NETDEV_MAX_PORT_WORK_MODE_NUM]; /* 网口工作模式列表,枚举参考网口工作模式#NETDEV_PORT_WORK_MODE_E */

    BYTE    byRes[512];                                           /* 保留字段  Reserved field */
}NETDEV_NIC_CAP_INFO_S, *LPNETDEV_NIC_CAP_INFO_S;

/**
 * @brief 设备地址信息 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVDevAddrInfo
{
    CHAR    szUserName[NETDEV_LEN_64];          /* 用户名 User Name */
    CHAR    szPassword[NETDEV_LEN_64];          /* 密码 Password */
    CHAR    szIPv4Address[NETDEV_LEN_32];       /* IPv4的IP地址  IP address of IPv4 */
    CHAR    szIPv4GateWay[NETDEV_LEN_32];       /* IPv4的网关地址  Gateway of IPv4 */
    CHAR    szIPv4SubnetMask[NETDEV_LEN_32];    /* IPv4的子网掩码  Subnet mask of IPv4 */
    CHAR    szDevSerailNum[NETDEV_LEN_64];      /* 设备序列号  Device serial number */
    CHAR    szDevMac[NETDEV_LEN_64];            /* 设备MAC地址  Device MAC address */
    BYTE    byRes[512];                         /* 保留字段  Reserved */
}NETDEV_DEV_ADDR_INFO_S, *LPNETDEV_DEV_ADDR_INFO_S;

/**
 * @struct tagstEventRecordParam
 * @brief 事件录像参数
 * @attention 
 */
typedef struct tagstEventRecordParam
{
    UINT32  udwNum;                                                /* 通道个数 */
    UINT32* pudwChannels;                                         /* 通道号集合 */
    UINT32  udwRecordType;                                        /* 录像类型 详见 NETDEV_EVENT_RECORD_TYPE_E*/
    INT64   tBegin;                                               /* 查询时间录像的开始时间。UTC时间，单位s */
    INT64   tEnd;                                                 /* 查询时间录像的结束时间。UTC时间，单位s */
    UINT32  udwLimit;                                             /* 每一页数据的个数，用于对查询出来的时间录像分页 */
    UINT32  udwPage;                                              /* 页号，结合Limit，可以确定本次查询获取到的录像，是所有事件录像按Limit分页后，第Page页的数据 */
    BYTE    byRes[256];                                           /* 保留字段  */
}NETDEV_EVENT_RECORD_PARAM_S,*LPNETDEV_EVENT_RECORD_PARAM_S;

/**
 * @struct tagstEventRecordInfo
 * @brief 事件录像信息
 * @attention 
 */
typedef struct tagstEventRecordInfo
{
    UINT32 udwChannelID;                                          /* 本段事件录像所属通道的通道号 */
    UINT32 udwRecordType;                                         /* 录像类型 详见 NETDEV_EVENT_RECORD_TYPE_E*/
    UINT32 udwBegin;                                              /* 本段事件录像的开始时间，为UTC时间 */
    UINT32 udwEnd;                                                /* 本段事件录像的结束，为UTC时间 */
    BYTE    byRes[256];                                           /* 保留字段  */
}NETDEV_EVENT_RECORD_INFO_S,*LPNETDEV_EVENT_RECORD_INFO_S;

/**
 * @brief 功能增强配置信息 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVEnhancedConfigInfo
{
    BOOL    bEnabledStorage;        /* UNP/云设备存储开关使能状态，0:关闭，1:开启 */
    BYTE    byRes[512];                         /* 保留字段  Reserved */
}NETDEV_ENHANCED_CONFIG_INFO_S, *LPNETDEV_ENHANCED_CONFIG_INFO_S;

/**
 * @struct tagNETDEVGISMapInfo
 * @brief GIS地图信息
 * @attention 无 None
 */
typedef struct tagNETDEVGISMapInfo
{
    DOUBLE dlLatitude;                                       /* 中心经度 范围：[-180.00, +180.00] */
    DOUBLE dlLongitude;                                      /* 中心纬度 范围：[-90.00,+90.00] */
    UINT32 udwInitZoomLevel;                                  /* 初始缩放级别 范围：[3,999] */
    BYTE   byRes[128];                                       /* 保留字段 */
}NETDEV_GIS_MAP_INFO_S, *LPNETDEV_GIS_MAP_INFO_S;

/**
 * @struct tagNETDEVMapConfigInfo
 * @brief 地图配置信息
 * @attention 无 None
 */
typedef struct tagNETDEVMapConfigInfo
{
    UINT32 udwType;                                       /* 地图类型 详见 NETDEV_MAP_TYPE_E*/
    NETDEV_GIS_MAP_INFO_S stGisMapInfo;                   /* GIS地图配置信息，图片地图时该节点可选 */
    BYTE   byRes[128];                                    /* 保留字段 */
}NETDEV_MAP_CONFIG_INFO_S, *LPNETDEV_MAP_CONFIG_INFO_S;

/**
 * @struct tagNETDEVExcpAlarmCapInfo
 * @brief 设备异常报警能力集信息
 * @attention 
 */
typedef struct tagNETDEVExcpAlarmCapInfo
{
    UINT32   udwSupportTypeNum;                                    /* 支持的异常报警数量 */
    UINT32   audwSupportType[NETDEV_LEN_64];                       /* 支持的异常报警类型,枚举参考# NETDEV_EXCP_ALARM_CAP_TYPE_E  */

    BYTE    byRes[512];                                            /* 保留字段 */
}NETDEV_EXCP_ALARM_CAP_INFO_S, *LPNETDEV_EXCP_ALARM_CAP_INFO_S;

/**
* @struct tagNETDEVPositionInfo
* @brief 火点位置信息
* @attention 无 None
*/
typedef struct tagNETDEVPositionInfo
{
    UINT32 udwChannelId;    /* 通道ID */
    NETDEV_POINT_S stPoint; /* 火点中心位置在通道中的坐标信息,图像中火点位置坐标万分比表示,范围[0,9999) */

    BYTE    byRes[128];     /* 保留字段 */
}NETDEV_POSTION_INFO_S, *LPNETDEV_POSTION_INFO_S;

/**
* @struct tagNETDEVFirePointInfo
* @brief 火点基本信息
* @attention 无 None
*/
typedef struct tagNETDEVFirePointInfo
{
    UINT32 udwChannelNum;                                 /* 通道个数 */
    NETDEV_POSTION_INFO_S stPositionList[NETDEV_LEN_16];  /* 火点在不同通道下的位置列表。当ChannelNum不为0时必选 */

    BYTE    byRes[256];                                           /* 保留字段 */
}NETDEV_FIRE_POINT_INFO, *LPNETDEV_FIRE_POINT_INFO;

/**
* @struct tagNETDEVConflagrationAlarmInfo
* @brief 火警上报信息
* @attention 无 None
*/
typedef struct tagNETDEVConflagrationAlarmInfo
{
    CHAR   szReference[NETDEV_LEN_260];                           /* 订阅者描述信息 */
    UINT32 udwTimeStamp;                                          /* 告警时间 UTC时间 单位秒 */
    UINT32 udwAlarmSeq;                                           /* 告警序号 */
    NETDEV_GEOLACATION_INFO_S stPTPosition;                       /* 发现火点位置时的云台位置 */
    FLOAT fLensView;                                              /* 发现火点位置时的镜头视场角角度，精确到小数点后两位 */
    UINT32 udwNum;                                                /* 火点数量 */
    NETDEV_FIRE_POINT_INFO stFirePointInfoList[NETDEV_LEN_16];    /* 不同火点的位置信息列表，当Num不为0时必选 */
    BYTE   byRes[128];                                            /* 保留字段 */
}NETDEV_CONFLAGRATION_ALARM_INFO_S, *LPNETDEV_CONFLAGRATION_ALARM_INFO_S;

/**
 * @struct tagNETDEVMotionDetectionInfo
 * @brief 运动检测信息
 * @attention 
 */
typedef struct tagNETDEVMotionDetectionInfo
{
    BOOL    bIsSupportCfg;                           /* 是否支持可配,0：不支持 1：支持 */
    UINT32  udwRectangleAreaNum;                     /* 支持矩形检测区域数量,不支持矩形区域时可选,IPC支持 */
    UINT32  udwBlockWidth;                           /* 宏块宽度最大值 */
    UINT32  udwBlockHeight;                          /* 宏块高度最大值 */

    BYTE    byRes[256];                              /* 保留字段 */
}NETDEV_MOTION_DETECTION_INFO_S, *LPNETDEV_MOTION_DETECTION_INFO_S;

/**
 * @struct tagNETDEVTamperDetectionInfo
 * @brief 遮挡检测信息
 * @attention 
 */
typedef struct tagNETDEVTamperDetectionInfo
{
    BOOL    bIsSupportCfg;                           /* 接入设备是否支持可配置,0：不支持 1：支持 */
    UINT32  udwTamperRectangleAreaNum;               /* 遮挡检测可绘制区域个数，目前个数固定是1 */

    BYTE    byRes[256];                              /* 保留字段 */
}NETDEV_TAMPER_DETECTION_INFO_S, *LPNETDEV_TAMPER_DETECTION_INFO_S;

/**
 * @struct tagNETDEVHumanShapeDetectionInfo
 * @brief 人形检测信息
 * @attention 
 */
typedef struct tagNETDEVHumanShapeDetectionInfo
{
    BOOL    bIsSupportCfg;                           /* 接入设备是否支持可配置,0：不支持 1：支持 */
    UINT32  udwRectangleAreaNum;                     /* 人形检测可绘制区域个数，目前个数固定是1 */

    BYTE    byRes[256];                              /* 保留字段 */
}NETDEV_HUMAN_SHAPE_DETECTION_INFO_S, *LPNETDEV_HUMAN_SHAPE_DETECTION_INFO_S;

/**
 * @struct tagNETDEVAudioDetectionInfo
 * @brief 音频检测信息
 * @attention 
 */
typedef struct tagNETDEVAudioDetectionInfo
{
    BOOL    bIsSupportCfg;                           /* 是否支持可配,0：不支持 1：支持 */

    BYTE    byRes[256];                              /* 保留字段 */
}NETDEV_AUDIO_DETECTION_INFO_S, *LPNETDEV_AUDIO_DETECTION_INFO_S;

/**
* @struct tagNETDEVConflagDetectInfo
* @brief 火点检测信息
* @attention 无 None
*/
typedef struct tagNETDEVConflagDetectInfo
{
    BOOL   bIsSupportCfg;                                 /* 是否支持可配 0:不支持 1:支持 */
    BYTE   byRes[52];                                     /* 保留字段 */
}NETDEV_CONFLAG_DETECT_INFO_S, *LPNETDEV_CONFLAG_DETECT_INFO_S;

/**
 * @struct tagNETDEVChannelsAlarmCapInfo
 * @brief 设备通道告警能力信息
 * @attention 
 */
typedef struct tagNETDEVChannelsAlarmCapInfo
{
    NETDEV_MOTION_DETECTION_INFO_S         stMotionDetectionInfo;                /* 运动检测能力信息 */
    NETDEV_TAMPER_DETECTION_INFO_S         stTamperDetectionInfo;                /* 遮挡检测能力信息 */
    NETDEV_HUMAN_SHAPE_DETECTION_INFO_S    stHumanShapeDetectionInfo;            /* 人形检测能力信息 */
    NETDEV_AUDIO_DETECTION_INFO_S          stAudioDetectionInfo;                 /* 音频检测能力信息 */
    NETDEV_CONFLAG_DETECT_INFO_S           stConfiagDetectInfo;                  /* 火点检测能力信息 */
    BYTE    byRes[456];                                                          /* 保留字段 */
}NETDEV_CHN_ALARM_CAP_INFO_S, *LPNETDEV_CHN_ALARM_CAP_INFO_S;

/**
 * @struct tagNETDEVVertifyInfo
 * @brief 验证信息
 * @attention
 */
typedef struct tagNETDEVResetPwdVertifyInfo
{
    CHAR                          szEMail[NETDEV_LEN_256];   /* 邮箱 */
    CHAR                          szPhone[NETDEV_LEN_256];   /* 电话号码 */
    BYTE                          byRes[256];                /* 保留字段 */
}NETDEV_RESET_PWD_VERTIFY_INFO_S, *LPNETDEV_RESET_PWD_VERTIFY_INFO_S;

/**
 * @struct tagNETDEVStorageQuotaInfo
 * @brief 存储配额信息 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVStorageQuotaInfo
{
    INT32      dwStorageCapUnit;             /* 存储容量单位(默认为GB),参见#NETDEV_STORAGE_CAP_UNIT_E */
    INT32      dwRecUsedCap;                 /* 通道录像已用容量 */
    INT32      dwPicUsedCap;                 /* 通道抓图已用容量 */
    INT32      dwAIPicUsedCap;               /* 通道智能抓拍照片已用容量，IPC必选 */
    INT32      dwUsedCap;                    /* 通道存储空间已使用容量，IPC必选 */
    INT32      dwTotalCap;                   /* 通道存储空间总容量 */
    INT32      dwRecQuota;                   /* 通道录像配额容量 */
    INT32      dwPicQuota;                   /* 通道抓图配额容量 */
    INT32      dwAIPicQuota;                 /* 通道智能抓拍图片配额容量，IPC必选 */
    INT32      dwGroupID;                    /* 盘组ID号 */
    INT32      dwGroupTotalCap;              /* 所选牌组的总容量 */
    BYTE       byRes[256];                   /* 保留字段 */
}NETDEV_STORAGE_QUOTA_INFO_S, *LPNETDEV_STORAGE_QUOTA_INFO_S;

/**
 * @struct tagNETDEVPicStorageStrategyInfo
 * @brief 图片存储策略信息 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVPicStorageStrategyInfo
{
    INT32     dwStorageMode;        /* 存储模式，参见枚举#NETDEV_PIC_STORAGE_MODE_E */
    INT32     dwFullStrategy;       /* 慢策略参数，默认满覆盖，参见枚举#NETDEV_FULL_STRATEGY_TYPE_E */
    BYTE      byRes[256];           /* 保留字段 */
}NETDEV_PIC_STORAGE_STRATEGY_INFO_S, *LPNETDEV_PIC_STORAGE_STRATEGY_INFO_S;

/**
 * @struct tagNETDEVRecStorageStrategyInfo
 * @brief 视频存储策略信息 结构体定义
 * @attention 流类型只支持主码流、辅码流
 */
typedef struct tagNETDEVRecStorageStrategyInfo
{
    BOOL      bStoregeEnabled;      /* 存储使能,0:开启,1:关闭 */
    INT32     dwFullStrategy;       /* 慢策略参数，默认满覆盖，参见枚举#NETDEV_FULL_STRATEGY_TYPE_E */
    INT32     dwPlanStreamType;     /* 计划存储流类型，参见#NETDEV_LIVE_STREAM_INDEX_E */
    INT32     dwManualStreamType;   /* 手动存储流类型，参见#NETDEV_LIVE_STREAM_INDEX_E */
    INT32     dwEventStreamType;    /* 告警存储流类型，参见#NETDEV_LIVE_STREAM_INDEX_E */
    BYTE      byRes[256];           /* 保留字段 */
}NETDEV_REC_STORAGE_STRATEGY_INFO_S, *LPNETDEV_REC_STORAGE_STRATEGY_INFO_S;

/**
 * @struct tagNETDEVStorageStrategy
 * @brief 存储策略信息 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVStorageStrategy
{
    INT32                                     dwStorageRes;               /* 存储资源, IPC必选,参见#NETDEV_STORAGE_RES_TYPE_E */
    NETDEV_REC_STORAGE_STRATEGY_INFO_S        stRecStoreStrategyInfo;     /* 视频存储策略信息 */
    NETDEV_PIC_STORAGE_STRATEGY_INFO_S        stPicStoreStrategyInfo;     /* 普通抓拍图片存储策略信息 */
    NETDEV_PIC_STORAGE_STRATEGY_INFO_S        stAIPicStoreStrategyInfo;   /* 智能抓拍图片存储策略信息 */
    BYTE                                      byRes[512];                 /* 保留字段 */
}NETDEV_STORAGE_STRATEGY_S, *LPNETDEV_STORAGE_STRATEGY_S;

/** struct tagNETDEVBackFocusInfo
 * @brief 后焦调节参数信息
 * @attention
 */
typedef struct tagNETDEVBackFocusInfo
{
    UINT32                  udwCmd;                     /* 操作命令字 见# NETDEV_BACKFOCUS_CMD_E */
    UINT32                  udwPara1;                   /* 操作参数 见# NETDEV_BACKFOCUS_CMD_E */
    BYTE                    byRes[256];                 /* 保留字段 */
}NETDEV_BACKFOCUS_INFO_S, *LPNETDEV_BACKFOCUS_INFO_S;

////////////////////////////分割线/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/************************************************************************/
/*                          函数                                  */
/************************************************************************/
/**
* SDK 初始化  SDK initialization
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note 线程不安全 Thread not safe
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_Init(void);

/**
* SDK 清理  SDK cleaning
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_Cleanup(void);

/**
* 获取SDK的版本信息 Get SDK version information 
* @return SDK版本信息 SDK version information
* @note
* - 在两个高字节中高8位表示主版本,低八位表示次版本.两个低字节表示附加版本号如0x01080000：表示版本为1.8.0.0.
* - The two high bytes,The high-8-bit indicate the major version, and the low-8-bytes indicate the minor version.Two low bytes for additional version numbers For example, 0x01080000 means version 1.8.0.0
*/
NETDEV_API NEWINTERFACE INT32 STDCALL NETDEV_GetSDKVersion(void);

/**
* 获取错误码  Get error codes
* @return 错误码 Error codes
*/
NETDEV_API NEWINTERFACE INT32 STDCALL NETDEV_GetLastError();

/**
* 设置日志路径业务 Set log path
* @param [IN]   pszLogPath  日志路径(不包含文件名)  Log path (file name not included)
* @return TRUE表示成功,其他表示失败  TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetLogPath(IN CHAR *pszLogPath);

/**
* 设置日志文件大小和数量 Set log file size and number
* @param [IN] dwLogFileSize     单个日志文件大小(单位字节) The size of single log file
* @param [IN] dwLogFileNum      日志文件个数  Log file number
* @return TRUE表示成功,其他表示失败 TRUE means success, any other value indicates failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ConfigLogFile(IN INT32 dwLogFileSize,
                                                          IN INT32 dwLogFileNum);

/**
* 设置写入日志的标记 Set write log flag
* @param [IN]   bWriteLogFlag  写入日志的标记  TRUE:写入日志,FALSE：不写入日志
* @return VOID
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetWriteLogFlag(IN BOOL bWriteLogFlag);

/**
* 设置超时时间 Set timeout
* @param [IN]  pstRevTimeout         超时时间指针 Pointer to timeout
* @return TRUE表示成功,其他表示失败    TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetRevTimeOut(IN LPNETDEV_REV_TIMEOUT_S pstRevTimeout);

/**
* 设置保活参数 Set keep-alive parameters
* @param [IN]  dwWaitTime            间隔等待时间  Waiting time
* @param [IN]  dwTrytimes            尝试连接次数  Connecting attempts
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetConnectTime(IN INT32 dwWaitTime,
                                                           IN INT32 dwTrytimes);

/**
* 设置客户端唯一标识
* @param [IN] pszClientID                              客户端ID 
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetClientID(IN CHAR *pszClientID);


/**
* 设置最大解码路数
* @param [IN]  dwMaxdecNum        最大解码通道数
* @return TRUE表示成功，其他表示失败
* @note 
*    1、该接口调用失败，表示解码路数为128路
*    2、解码路数包括：实况路数、回放路数、录像下载路数的总和
*    3、该接口调用必须在SDK初始化之前
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetMaxDecChlNum(IN UINT32 dwMaxdecNum);

/**
* 设备发现回调函数 Device discovery callback function
* @param [IN] pstDevInfo                设备信息 Device info
* @param [IN] lpUserData                用户数据 User data
* @note
*/
typedef void(STDCALL *NETDEV_DISCOVERY_CALLBACK_PF)(IN LPNETDEV_DISCOVERY_DEVINFO_S pstDevInfo,
                                                    IN LPVOID lpUserData);

/**
* 注册设备发现回调函数 Registered device discovery callback function
* @param [IN] cbDiscoveryCallBack   回调函数 Callback function
* @param [IN] lpUserData            用户数据 User data
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetDiscoveryCallBack(IN NETDEV_DISCOVERY_CALLBACK_PF cbDiscoveryCallBack,
                                                                 IN LPVOID lpUserData);

/**
* 设备发现 先注册设备发现相关的回调,再调用此接口发现设备,发现的设备信息在回调中反映
* This interface is used for device discovery. Please first register callback functions related to device discovery and use this interface for device discovery. Discovered device info will be included in the callback function.
* @param [IN]   pszBeginIP                 起始IP地址
* @param [IN]   pszEndIP                   结束IP地址
* @return TRUE表示成功,其他表示失败
* @note 若pszBeginIP和pszEndIP都是"0.0.0.0",则搜索本网段设备
*/
NETDEV_API NEWINTERFACE BOOL  STDCALL NETDEV_Discovery(IN CHAR *pszBeginIP,
                                                       IN CHAR *pszEndIP);

/**
* 修改设备IP地址（无需登录）
* @param [IN]   pstDevAddrInfo         要修改的设备地址信息
* @return TRUE表示成功,其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL  STDCALL NETDEV_ModifyDeviceAddr(IN LPNETDEV_DEV_ADDR_INFO_S pstDevAddrInfo);

/**
* 用户登录  User login
* @param [IN]  pszDevIP         设备IP Device IP
* @param [IN]  wDevPort         设备服务器端口 Device server port
* @param [IN]  pszUserName      用户名 Username
* @param [IN]  pszPassword      密码 Password
* @param [OUT] pstDevInfo       设备信息结构体指针 Pointer to device information structure
* @return 返回的用户登录句柄,返回 0 表示失败,其他值表示返回的用户登录句柄值. Returned user login ID. 0 indicates failure, and other values indicate the user ID.
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_Login(IN char *pszDevIP,
                                                    IN INT16 wDevPort,
                                                    IN char *pszUserName,
                                                    IN char *pszPassword,
                                                    OUT LPNETDEV_DEVICE_INFO_S pstDevInfo);

/**
* 登陆速度优化 用户登录  User login
* @param  [INOUT]  pstLoginInfo         登录信息 Login Info
* @return 返回的用户登录句柄,返回 0 表示失败,其他值表示返回的用户登录句柄值. Returned user login ID. 0 indicates failure, and other values indicate the user ID.
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_LoginV2(INOUT LPNETDEV_LOGIN_INFO_S pstLoginInfo);

/**
* 设备登录
* @param [IN]  pstDevLoginInfo  设备登录信息
* @param [OUT] pstSELogInfo     安全登录信息，包含登录失败次数及下次登录时间
* @return 返回值为用户ID。
* @note 安全登录信息此字段仅适用于使用LAPI协议登录的设备
* -
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_Login_V30(IN LPNETDEV_DEVICE_LOGIN_INFO_S pstDevLoginInfo, 
                                                        OUT LPNETDEV_SELOG_INFO_S pstSELogInfo);

/**
* 用户注销  User logout
* @param [IN] lpUserID    用户登录句柄 User login ID
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_Logout(IN LPVOID lpUserID);

/**
* 接收告警消息的回调函数  Callback function to receive alarm information
* @param [IN] lpUserID              用户登录句柄 User login ID
* @param [IN] dwChannelID           通道号 Channel ID
* @param [IN] LPNETDEV_ALARM_INFO_S 告警信息 Alarm information
* @param [IN] lpBuf                 缓冲区指针 Pointer to buffer
* @param [IN] dwBufLen              告警信息对应结构体的长度 Length of structure for alarm information
* @param [IN] lpUserData            用户数据 User data
* @note
*/
typedef void(STDCALL *NETDEV_AlarmMessCallBack_PF)(IN LPVOID lpUserID,
                                                   IN INT32 dwChannelID,
                                                   IN NETDEV_ALARM_INFO_S stAlarmInfo,
                                                   IN LPVOID lpBuf,
                                                   IN INT32 dwBufLen,
                                                   IN LPVOID lpUserData);

/**
* 注册回调函数,接收报警消息等（同时回调登录ID,用以区分不同设备） Register callback function and receive alarm information, etc. (Call back login ID at the same time to distinguish different devices)
* @param [IN] lpUserID              用户登录句柄 User login ID
* @param [IN] cbAlarmMessCallBack   回调函数 Callback function
* @param [IN] lpUserData            用户数据 User data
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetAlarmCallBack(IN LPVOID lpUserID,
                                                             IN NETDEV_AlarmMessCallBack_PF cbAlarmMessCallBack,
                                                             IN LPVOID lpUserData);

/**
* 接收告警消息的回调函数  Callback function to receive alarm information
* @param [IN] lpUserID                   用户登录句柄 User login ID
* @param [IN] LPNETDEV_ALARM_INFO_V2_S   告警信息 Alarm information
* @param [IN] lpUserData                 用户数据 User data
* @note
*/
typedef void(STDCALL *NETDEV_AlarmMessCallBackV2_PF)(IN LPVOID lpUserID,
                                                     IN NETDEV_ALARM_INFO_EX_S stAlarmInfo,
                                                     IN LPVOID lpUserData);

/**
* 注册回调函数,接收报警消息等（同时回调登录ID,用以区分不同设备）
* @param [IN] lpUserID              用户登录句柄
* @param [IN] cbAlarmMessCallBack   回调函数
* @param [IN] pstSubscribeInfo      告警订阅信息
* @param [IN] lpUserData            用户数据
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetAlarmCallBackV2(IN LPVOID lpUserID, 
                                                               IN NETDEV_AlarmMessCallBackV2_PF cbAlarmMessCallBack,
                                                               IN LPNETDEV_ALARM_SUB_INFO_S pstSubscribeInfo, 
                                                               IN LPVOID lpUserData);

/**
* 接收告警消息的回调函数 Callback function to receive alarm information
* @param [IN] lpUserID              用户登录ID
* @param [IN] pstReportInfo         上报信息 Alarm information
* @param [IN] lpBuf                 缓冲区指针 Pointer to buffer
* @param [IN] dwBufLen              告警信息对应结构体的长度 Length of structure for alarm information
* @param [IN] dwBufLen              用户数据 User data
* @note
*/
typedef void(STDCALL *NETDEV_AlarmMessCallBack_PF_V30)(IN LPVOID lpUserID,
                                                       IN LPNETDEV_REPORT_INFO_S pstReportInfo,
                                                       IN LPVOID    lpBuf,
                                                       IN INT32     dwBufLen,
                                                       IN LPVOID    lpUserData);


/**
* 注册回调函数，接收报警消息等
* Register callback function and receive alarm information, etc.
* @param [IN] lpUserID              用户登录ID User login ID
* @param [IN] cbAlarmMessCallBack   回调函数 Callback function
* @param [IN] lpUserData            用户数据 User data
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetAlarmCallBack_V30(IN LPVOID lpUserID,
                                                                 IN NETDEV_AlarmMessCallBack_PF_V30 cbAlarmMessCallBack,
                                                                 IN LPVOID lpUserData);

/**
 * @struct tagstNETDEVExceptionOutputInfo
 * @brief 异常输出信息
 * @attention
 */
typedef struct tagstNETDEVExceptionOutputInfo
{
    INT32    dwEventCode;                                      /* 事件码（ND上报异常使用） */
    INT64    tPlayBackTime;                                    /* 回放绝对时间(ND上报异常使用) */
    CHAR     szFileName[NETDEV_LEN_256];                       /* 字符串参数 */
    BYTE     byRes[128];                                       /* 保留字段 */
}NETDEV_EXCEPTION_OUTPUT_INFO_S, *LPNETDEV_EXCEPTION_OUTPUT_INFO_S;

/**
* 接收异常.重连等消息的回调函数  Callback function to receive exception and reconnection messages
* @param [IN] lpUserID     用户登录句柄 User login ID
* @param [IN] dwType       异常或重连等消息的类型:NETDEV_EXCEPTION_TYPE_E Type of exception or reconnection message: NETDEV_EXCEPTION_TYPE_E
* @param [IN] lpExpHandle  出现异常的相应类型的句柄 Exception type handle
* @param [IN] lpUserData   用户数据 User data
* @param [OUT] pstExceptionOutputInfo   异常输出信息 Exception output information
* @note
*/
typedef void(STDCALL *NETDEV_ExceptionCallBack_PF)(IN LPVOID lpUserID,
                                                   IN INT32 dwType,
                                                   IN LPVOID lpExpHandle,
                                                   IN LPVOID lpUserData,
                                                   IN LPNETDEV_EXCEPTION_OUTPUT_INFO_S pstExceptionOutputInfo
                                                   );

/**
* 注册sdk接收异常.重连等消息的回调函数  Callback function to register SDK, receive exception and reconnection messages, etc.
* @param [IN] cbExceptionCallBack       接收异常消息的回调函数,回调当前异常的相关信息 Callback function to receive exception messages, used to call back information about current exceptions
* @param [IN] lpUserData                用户数据 User data
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetExceptionCallBack(IN NETDEV_ExceptionCallBack_PF cbExceptionCallBack,
                                                                 IN LPVOID lpUserData);

/**
* 订阅推送消息
* @param [IN] lpUserID          用户登录ID
* @param [IN] dwAlarmType   订阅告警的类型 参见NETDEV_SUBSCRIBE_ALARM_TYPE_E，多个类型使用或运算
* @return TRUE表示成功，其他表示失败
* @note   订阅前需要先调用NETDEV_SetAlarmCallBack接口注册回调函数
* -
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_Subscribe(IN LPVOID lpUserID,
                                                      IN INT32 dwAlarmType);

/**
* 取消订阅推送消息
* @param [IN] lpUserID          用户登录ID
* @return TRUE表示成功，其他表示失败
* @note
* -
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_Unsubscribe(IN LPVOID lpUserID);


/**
* 获取设备信息        GetDeviceInfos
* @param [IN] lpUserID          用户登录句柄 User login handle
* @param [OUT] pstDevInfo       设备信息结构体指针 Pointer to device information structure
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetDeviceInfo(IN LPVOID lpUserID ,
                                                          OUT LPNETDEV_DEVICE_INFO_S pstDevInfo);

/**
* 获取设备信息
* @param [IN] lpUserID                 用户登录ID
* @param [OUT] pstDeviceInfo         设备信息
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetDeviceBaseInfo(IN LPVOID lpUserID, 
                                                              OUT LPNETDEV_DEVICE_BASE_INFO_S pstDeviceInfo);

/**
* 查询设备详细信息
* @param [IN] lpUserID              用户登录ID
* @param [IN] dwDevID               设备ID
* @param [OUT]  pstDevDetailInfo    设备详细信息
* @return TRUE表示成功，其他表示失败
* @note
* -
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetDeviceInfo_V30(IN LPVOID lpUserID,
                                                              IN INT32 dwDevID,
                                                              OUT LPNETDEV_DEV_INFO_V30_S pstDevDetailInfo);

/**
* 获取设备运行信息
* @param [IN] lpUserID                 用户登录ID
* @param [OUT] pstDeviceInfo           设备运行信息
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetDeviceRunInfo(IN LPVOID lpUserID,
                                                             OUT LPNETDEV_DEVICE_RUN_INFO_S pstDeviceRunInfo);
/***********************************显控独立客户端Start**************************************************/

/**
* 设备发现
* @param [IN] lpUserID                  用户登录句柄
* @param [IN]   stDiscoverCondInfo                    设备发现条件信息 Discover Device Condition Info
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DiscoverDevice(IN LPVOID lpUserID,
                                                           IN LPNETDEV_DISCOVER_COND_INFO_S pstDiscoverCondInfo);

/**
* 获取设备发现信息列表
* @param [IN] lpUserID                  用户登录句柄
* @param [IN] pstFindCond               获取设备查找条件
* @return 若返回值为NULL则表示失败。其他值为查询任务号，作为NETDEV_FindNextDiscoverDeviceInfo、NETDEV_FindCloseDiscoverDeviceInfoList入参。
* @note 
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindDiscoverDeviceInfoList(IN LPVOID lpUserID,
                                                                         IN LPNETDEV_DEVICE_FIND_COND_S pstFindCond);

/**
* 获取一条设备发现信息
* @param [IN]  lpFindHandle                    查找句柄   Search handle
* @param [OUT] pstDiscoverDeviceInfo           保存设备信息的指针   Pointer to saved device info
* @return TRUE表示成功,其他表示失败
* @note 返回失败说明查询结束
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextDiscoverDeviceInfo(IN LPVOID lpFindHandle,
                                                                       OUT LPNETDEV_DISCOVER_DEV_INFO_S pstDiscoverDeviceInfo);

/*
* 关闭查找设备发现信息，释放资源
* @param [IN] lpFindHandle  查找句柄 File search handle
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseDiscoverDeviceInfoList(IN LPVOID lpFindHandle);

/**
* 获取视频通道信息列表
* @param [IN] lpUserID          用户登录ID
* @param [IN] pstFindCond           查询条件
* @return 查询句柄,返回0表示失败，其他值作为NETDEV_FindNextVideoChn、NETDEV_FindCloseVideoChnList等函数的参数。
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindVideoChnList(IN LPVOID lpUserID,
                                                               IN LPNETDEV_VIDEO_CHN_FIND_COND_S pstFindCond);

/**
* 逐个获取查找到的 设备通道 信息
* @param [IN]  lpFindHandle         查找句柄 
* @param [OUT] pstVideoChannelInfo  视频通道信息
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextVideoChn(IN LPVOID lpFindHandle, 
                                                             OUT LPNETDEV_VIDEO_CHN_INFO_S pstVideoChannelInfo);

/**
* 关闭查找 设备通道信息，释放资源
* @param [IN] lpFindHandle  文件查找句柄 
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseVideoChnList(IN LPVOID lpFindHandle);


/**
* 获取单个通道详细信息
* @param [IN] lpUserID              用户登录ID
* @param [INOUT] pstDevChnDetailInfo        设备通道信息
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetChnDetailInfo(IN LPVOID lpUserID, 
                                                             INOUT LPNETDEV_VIDEO_CHN_INFO_S pstDevChnDetailInfo);

/**
* 修改通道信息
* @param [IN] lpUserID              用户登录ID
* @param [INOUT] pstChnInfo         通道信息
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyChnInfo(IN LPVOID lpUserID, 
                                                          IN LPNETDEV_CHN_INFO_S pstChnInfo);

/**
* 获取指定组织信息
* @param [IN] lpUserID              用户登录ID
* @param [IN] pstOrgInfo            组织信息指针
* @return TRUE           表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetOrgInfo(IN LPVOID lpUserID,
                                                       INOUT LPNETDEV_ORG_INFO_S pstOrgInfo);


/**
* 批量添加设备
* @param [IN] lpUserID             用户登录ID
* @param [IN] pstAddDevInfo        待添加设备信息指针
* @param [OUT] pstAddResultInfo    添加设备响应信息指针
* @return TRUE           表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_BatchAddDevice(IN LPVOID lpUserID,
                                                           IN LPNETDEV_ADD_DEV_INFO_S pstAddDevInfo, 
                                                           OUT LPNETDEV_ADD_DEV_RESULT_INFO_S pstAddResultInfo);

/**
* 批量删除设备
* @param [IN] lpUserID             用户登录ID
* @param [IN] pstDelDevInfo        待删除设备信息指针
* @param [OUT] pstDelResultInfo    删除设备响应信息指针
* @return TRUE           表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_BatchDelDevice(IN LPVOID lpUserID,
                                                           IN LPNETDEV_DEL_DEV_INFO_S pstDelDevInfo, 
                                                           OUT LPNETDEV_DEL_DEV_RESULT_INFO_S pstDelResultInfo);

/**
* 修改接入设备信息
* @param [IN] lpUserID             用户登录ID
* @param [OUT] pstDeviceInfo    接入设备信息指针
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyDeviceInfo(IN LPVOID lpUserID,
                                                                IN LPNETDEV_MODIFY_DEV_INFO_S pstDeviceInfo);


/**
* 获取单个接入设备信息
* @param [IN] lpUserID             用户登录ID
* @param [INOUT] pstDeviceInfo    接入设备信息指针
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_GetDeviceInfo(IN LPVOID lpUserID,
                                                             INOUT LPNETDEV_DEV_BASIC_INFO_S pstDeviceInfo);

/**
* 删除单个接入设备
* @param [IN] lpUserID             用户登录ID
* @param [IN] dwDevID    设备ID
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_DeleteDeviceInfo(IN LPVOID lpUserID,
                                                                IN INT32 dwDevID);

/***********************************显控独立客户端End*******************************************************/

/**
* 添加视频输入通道
* @param [IN]   lpUserID                用户登录ID User login ID
* @param [IN]   pstChannelsBasicInfo    添加视频输入通道的基本信息  add video ChannelsBasicInfo
* @param [OUT]  pstChannelsInfos        通道信息    channel infos
* @return TRUE表示成功,其他表示失败
* @note无 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddVideoChannel(IN LPVOID lpUserID, 
                                                            IN LPNETDEV_CHANNEL_BASIC_INFO_S pstChannelBasicInfo,
                                                            OUT LPNETDEV_CHANNEL_LIST_S pstChannelInfo);

/**
* 修改视频输入通道
* @param [IN]   lpUserID                用户登录ID User login ID
* @param [IN]   dwChannelID             通道号  Channel ID
* @param [IN]   pstChannelsBasicInfo    视频输入通道的基本信息  video ChannelsBasicInfo
* @return TRUE表示成功,其他表示失败
* @note无 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyVideoChannel(IN LPVOID lpUserID, 
                                                               IN INT32 dwChannelID, 
                                                               IN LPNETDEV_CHANNEL_BASIC_INFO_S pstChannelsBasicInfo);

/**
* 删除视频输入通道
* @param [IN]   lpUserID                用户登录ID User login ID
* @param [IN]   pstChannelsInfos        通道信息Channel infos
* @return TRUE表示成功,其他表示失败
* @note无 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeleteVideoChannel(IN LPVOID lpUserID,
                                                               IN LPNETDEV_CHANNEL_LIST_S pstChannelInfo);

/**
* 获取视频输入通道
* @param [IN]   lpUserID                用户登录ID User login ID
* @param [OUT]  pstChannelsBasicInfo    视频输入通道的基本信息  add video ChannelsBasicInfo
* @return TRUE表示成功,其他表示失败
* @note无 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetVideoChannel(IN LPVOID lpUserID, 
                                                            IN INT32 dwChannelID,
                                                            OUT LPNETDEV_CHANNEL_BASIC_INFO_S pstChannelsBasicInfo);


/**
* 查询视频通道信息列表  Query channel info list
* @param [IN]    lpUserID           用户登录句柄 User login ID
* @param [INOUT] pdwChlCount        通道数 Number of channels
* @param [OUT]   pstVideoChlList    通道能力集列表 List of channel info list
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_QueryVideoChlDetailList(IN LPVOID lpUserID, 
                                                                    INOUT INT32 *pdwChlCount, 
                                                                    OUT LPNETDEV_VIDEO_CHL_DETAIL_INFO_S pstVideoChlList);

/**
* 查询视频通道信息列表  Query channel info list
* @param [IN]    lpUserID           用户登录句柄 User login ID
* @param [INOUT] pdwChlCount        通道数 Number of channels
* @param [OUT]   pstVideoChlList    通道能力集列表 List of channel info list
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_QueryVideoChlDetailListEx(IN LPVOID lpUserID,
                                                                      INOUT INT32 *pdwChlCount,
                                                                      OUT LPNETDEV_VIDEO_CHL_DETAIL_INFO_EX_S pstVideoChlList);

/**
* 查询视频通道信息  Query video channel info
* @param [IN]   lpUserID           用户登录句柄 User login ID
* @param [IN]   dwChannelID        通道号 Channel ID
* @param [OUT]  pstVideoChlInfo    视频通道信息 video channel info
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_QueryVideoChlInfo(IN LPVOID lpUserID,
                                                              IN INT32 dwChannelID,
                                                              OUT LPNETDEV_VIDEO_CHL_DETAIL_INFO_S pstVideoChlInfo);

/**
* 通过 设备类型 查询 设备列表
* @param [IN] lpUserID              用户登录ID
* @param [IN] dwDevType             设备类型 参见#NETDEV_DEVICE_MAIN_TYPE_E
* @return 查询句柄,返回0表示失败，其他值作为NETDEV_FindNextOrgInfo、NETDEV_FindCloseOrgInfo等函数的参数。
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindDevList(IN LPVOID lpUserID, 
                                                          IN INT32 dwDevType);

/**
* 逐个获取查找到的 设备信息
* @param [IN]  lpFindHandle                 查找句柄 
* @param [OUT] pstDevBasicInfo              保存 设备详细信息的指针
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextDevInfo(IN LPVOID lpFindHandle, 
                                                            OUT LPNETDEV_DEV_BASIC_INFO_S pstDevBasicInfo);

/**
* 关闭查找 设备信息，释放资源
* @param [IN] lpFindHandle  文件查找句柄 
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseDevInfo(IN LPVOID lpFindHandle);

/**
* 获取通道设备基本信息列表
* @param [IN]   lpUserID                用户登录ID User login ID
* @return 业务号,返回0表示失败,其他值作为NETDEV_FindNextChlDeviceInfo等函数的参数.
* @note 此函数返回值为通道设备基本信息列表业务号,若返回值为非0,则查询通道设备基本信息列表成功：
*         一.将上述业务号作为NETDEV_FindNextDeviceChlInfo函数的入参lpFindHandle,多次调用NETDEV_FindNextDeviceChlInfo函数,以逐个获取详细通道设备基本信息.
*         二.查询结束后,必须以上述业务号作为NETDEV_FindCloseDeviceChlList函数的入参lpFindHandle,调用NETDEV_FindCloseDeviceChlList函数,以释放资源,关闭查找.
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindDevChlBasicInfoList(IN LPVOID lpUserID);

/**
* 逐个获取通道设备基本信息
* @param [IN]   lpFindHandle                查询Handle
* @param [OUT]  pstDeviceInfo               设备信息结构体指针
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextDevChlBasicInfo(IN LPVOID lpFindHandle,
                                                                    OUT LPNETDEV_DEVICE_CHL_INFO_S pstDeviceInfo);

/**
* 关闭获取通道设备基本信息
* @param [IN]   lpFindHandle                查询Handle
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseDevChlBasicInfo(IN LPVOID lpFindHandle);

/**
* 通过设备ID或通道类型 查询通道信息列表
* @param [IN] lpUserID          用户登录ID
* @param [IN] dwDevID           设备ID
* @param [IN] dwChnType         通道类型，参见# NETDEV_CHN_TYPE_E
* @return 查询句柄,返回0表示失败，其他值作为NETDEV_FindNextDevChn、NETDEV_FindCloseDevChn等函数的参数。
* @note     1、只根据通道类型查询时，将设备ID设置为0.
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindDevChnList(IN LPVOID lpUserID,
                                                             IN INT32 dwDevID,
                                                             IN INT32 dwChnType);

/**
* 逐个获取查找到的 设备通道 信息
* @param [IN]  lpFindHandle         查找句柄 
* @param [OUT] lpOutBuffer          接收数据的缓冲指针
* @param [IN] dwOutBufferSize       接收数据的缓冲长度(以字节为单位)，不能为0
* @param [OUT] pdwBytesReturned     实际收到的数据长度指针，不能为NUL
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextDevChn(IN LPVOID lpFindHandle, 
                                                           OUT LPVOID lpOutBuffer, 
                                                           IN INT32  dwOutBufferSize,
                                                           OUT INT32  *pdwBytesReturned);

/**
* 关闭查找 设备通道信息，释放资源
* @param [IN] lpFindHandle  文件查找句柄 
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseDevChn(IN LPVOID lpFindHandle);

/**
* 获取通道设备基本信息
* @param [IN]   lpUserID                用户登录ID User login ID
* @param [IN]   dwChannelID             通道ID 
* @param [OUT]  pstDeviceChlInfo        设备基本信息请参见结构体#NETDEV_DEVICE_CHL_INFO_S
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetDevChlBasicInfo(IN LPVOID lpUserID, 
                                                               IN INT32 dwChannelID,
                                                               OUT LPNETDEV_DEVICE_CHL_INFO_S pstDeviceChlInfo);

/**
* 获取通道类型
* @param [IN] lpUserID              用户登录ID
* @param [IN] dwChnID               通道ID
* @param [OUT] pdwChnType           设备通道类型 参见# NETDEV_CHN_TYPE_E
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetChnType(IN LPVOID lpUserID,
                                                       IN INT32 dwChnID,
                                                       OUT INT32 *pdwChnType);

/**
* 主动获取设备告警信息  Get alarm information from the device
* @param [IN]  lpUserID        用户登录句柄 User login ID
* @param [IN]  dwPullWaitTime  告警等待时间,单位s Alarm wait time (s)
* @param [INOUT] pdwListCnt     告警最大数量,入参数时表示告警信息列表大小,出参时表示实际告警数量Maximum number of alarms. When working as an input parameter, it indicates the length of alarm information list; when working as an output parameter, it indicates the actual number of alarms.
* @param [OUT]   pstPullAlarmList   告警信息列表,此内存需预先分配 List of alarm information. The memory should be allocated in advance.
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* note: 函数调用会阻塞login,logout, 不建议长时间等待 Calling the function will block login and logout. It is not recommended to wait for a long time.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PullAlarm(IN LPVOID lpUserID, 
                                                      IN INT32 dwPullWaitTime, 
                                                      INOUT INT32 *pdwListCnt, 
                                                      OUT LPNETDEV_PULLALARM_INFO_S pstPullAlarmList);

/**
* 非预览下抓拍  Snapshot without preview
* @param [IN]  lpUserID             用户登录句柄 User login ID
* @param [IN]  dwChannelID          通道号 Channel ID
* @param [IN]  dwStreamType;        码流类型,参见枚举#NETDEV_LIVE_STREAM_INDEX_E  Stream type, see enumeration #NETDEV_LIVE_STREAM_INDEX_E 
* @param [IN]  pszFileName          保存图像的文件路径（包括文件名） File path to save images (including file name)
* @param [IN]  dwCaptureMode        保存图像格式,参见#NETDEV_PICTURE_FORMAT_E   Image saving format, see #NETDEV_PICTURE_FORMAT_E
* @return  TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
        仅支持JPG格式.
        Only JPG format is supported.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_CaptureNoPreview(IN LPVOID lpUserID,
                                                             IN INT32 dwChannelID,
                                                             IN INT32 dwStreamType,
                                                             IN CHAR *pszFileName,
                                                             IN INT32 dwCaptureMode);

/**
* 非预览下抓拍  Snapshot without preview
* @param [IN]  lpUserID             用户登录句柄 User login ID
* @param [IN]  dwChannelID          通道号 Channel ID
* @param [IN]  dwStreamType;        码流类型,参见枚举#NETDEV_LIVE_STREAM_INDEX_E  Stream type, see enumeration #NETDEV_LIVE_STREAM_INDEX_E 
* @param [IN]  dwCaptureMode        保存图像格式,参见#NETDEV_PICTURE_FORMAT_E   Image saving format, see #NETDEV_PICTURE_FORMAT_E
* @param [IN]  dwPicBufferSize      接收图片数据的Buffer大小
* @param [OUT]  pszPicBuffer        接收图片数据的Buffer
* @param [OUT]  pdwPicRealSize      图片数据的实际大小
* @return  TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
        仅支持JPG格式. Only JPG format is supported.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_CaptureNoPreviewV2(IN LPVOID lpUserID,
                                                               IN INT32 dwChannelID,
                                                               IN INT32 dwStreamType,
                                                               IN INT32 dwCaptureMode, 
                                                               IN INT32 dwPicBufferSize, 
                                                               OUT CHAR *pszPicBuffer, 
                                                               OUT INT32 *pdwPicRealSize);

/**
* 动态产生一个关键帧 Dynamically create an I frame 
* @param [IN] lpUserID       用户登录句柄  User login ID
* @param [IN] dwChannelID    通道号  Channel ID
* @param [IN] dwStreamType   参考枚举NETDEV_LIVE_STREAM_INDEX_E  See enumeration NETDEV_LIVE_STREAM_INDEX_E
* @return NETDEV_E_SUCCEED   表示成功,其他表示失败  NETDEV_E_SUCCEED means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_MakeKeyFrame(IN LPVOID lpUserID,
                                                         IN INT32 dwChannelID,
                                                         IN INT32 dwStreamType);

/**
* 查询指定月份的录像分布信息 Query video distribution information by month 
* @param [IN]   lpUserID            用户登录句柄 User login ID
* @param [IN]   dwChannelID         通道号  Channel ID
* @param [IN]   pstMonthInfo        月份信息  Month information
* @param [OUT]   pstMonthStatus     月录像分布状态  Video status in the month
* @return TRUE表示成功,其他表示失败 TRUE means success, any other value indicates failure.
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_QuickSearch(IN LPVOID lpUserID, 
                                                        IN INT32 dwChannelID, 
                                                        IN LPNETDEV_MONTH_INFO_S pstMonthInfo,
                                                        OUT LPNETDEV_MONTH_STATUS_S pstMonthStatus);

/**
* 查询多个通道指定月份的录像分布信息   Query video distribution information by month with multichannel
* @param [IN]   lpUserID            用户登录句柄 User login ID
* @param [IN]   pstChannels         多个通道信息  Multichannel information
* @param [IN]   pstMonthInfo        月份信息  Month information
* @param [OUT]  pstMonthStatus     月录像分布状态  Video status in the month
* @return TRUE表示成功,其他表示失败 TRUE means success, any other value indicates failure.
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_QuickSearchMultiChl(IN LPVOID lpUserID, 
                                                                IN LPNETDEV_CHANNELS_S pstChannels, 
                                                                IN LPNETDEV_MONTH_INFO_S pstMonthInfo,
                                                                OUT LPNETDEV_MONTH_STATUS_S pstMonthStatus);

/**
* 获取实况码流URL Obtain Live view stream url
* @param [IN]  lpUserID             用户登录ID User login ID
* @param [IN]  dwChannelID          通道号 Channel number
* @param [IN]  dwStreamType         码流类型 参见#NETDEV_LIVE_STREAM_INDEX_E   Stream type see enumeration#NETDEV_LIVE_STREAM_INDEX_E
* @param [OUT] pszStreamUrl         码流URL Stream URL,内存长度要求大于等于NETDEV_LEN_260 The length must exceed NETDEV_LEN_260
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetStreamUrl(IN LPVOID lpUserID, 
                                                         IN INT32 dwChannelID,
                                                         IN INT32 dwStreamType,
                                                         OUT CHAR *pszStreamUrl);

/**
* 获取回放URL Obtain replay url
* @param [IN]  lpUserID             用户登录ID User login ID
* @param [IN]  dwChannelID          通道号 Channel number
* @param [IN]  dwStreamType         码流类型 参见#NETDEV_LIVE_STREAM_INDEX_E   Stream type see enumeration#NETDEV_LIVE_STREAM_INDEX_E
* @param [OUT] pszReplayUrl  码流URL,内存长度要求大于等于NETDEV_LEN_260 The length must exceed NETDEV_LEN_260
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetReplayUrl(IN LPVOID lpUserID, 
                                                         IN INT32 dwChannelID,
                                                         IN INT32 dwStreamType, 
                                                         OUT CHAR *pszReplayUrl);

/**
* 根据文件类型.时间查找设备录像文件  Query recording files according to file type and time
* @param [IN]  lpUserID     用户登录句柄 User login ID
* @param [IN]  pstFindCond    录像查询条件 Search condition
* @return 录像查询业务号,返回0表示失败,其他值作为NETDEV_FindClose等函数的参数.
Recording search service number. 0 means failure. Other values are used as the handle parameters of functions like NETDEV_FindClose.
* @note 此函数返回值为录像查询业务号,若返回值为非0,则查询录像文件成功：
*         一.将上述业务号作为NETDEV_FindNextFile函数的入参lpFindHandle,多次调用NETDEV_FindNextFile函数,以逐个获取详细录像文件信息.
*         二.查询结束后,必须以上述业务号作为NETDEV_FindClose函数的入参lpFindHandle,调用NETDEV_FindClose函数,以释放资源,关闭查找.
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindFile(IN LPVOID lpUserID,
                                                       IN LPNETDEV_FILECOND_S pstFindCond);

/**
* 逐个获取查找到的文件信息  Obtain the information of found files one by one.
* @param [IN]  lpFindHandle     文件查找句柄 File search handle
* @param [OUT] pstFindData       保存文件信息的指针 Pointer to save file information
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextFile(IN LPVOID lpFindHandle,
                                                         OUT LPNETDEV_FINDDATA_S pstFindData);

/**
* 关闭文件查找,释放资源  Close file search and release resources
* @param [IN] lpFindHandle  文件查找句柄 File search handle
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindClose(IN LPVOID lpFindHandle);

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef NETDEV_WITH_MEDIA
/************************************************************************/
/*                  包含媒体模块                                   */
/************************************************************************/

/**
* 拼帧前媒体流数据回调函数的指针类型  Type of pointer to media stream data callback function before being framed 
* @param [IN] lpPlayHandle      当前的实况播放句柄 Current live playing handle
* @param [IN] pucBuffer         存放拼帧前媒体流数据缓冲区指针 Pointer to buffer that stores stream data that is not framed
* @param [IN] dwBufSize         缓冲区大小 Buffer size
* @param [IN] dwMediaDataType   媒体数据类型,参见媒体类型枚举定义#NETDEV_MEDIA_DATA_FORMAT_E Media data type, see definitions of enumeration #NETDEV_MEDIA_DATA_TYPE_E
* @param [IN] lpUserParam       用户设置参数,即用户在调用#NDPlayer_SetSourceMediaDataCB函数时指定的用户参数 User-set parameters, specified by users when they call the #NDPlayer_SetSourceMediaDataCB function
* @return 无. None.
* @note  用户应及时处理输出的媒体流数据,确保函数尽快返回,否则会影响播放器内的媒体流处理. Users should handle output stream data in a timely manner so that functions can be returned quickly. Otherwise, stream processing in the player will be affected.
*/
typedef void (STDCALL *NETDEV_SOURCE_DATA_CALLBACK_PF)(IN LPVOID        lpPlayHandle,
                                                       IN const BYTE    *pucBuffer,
                                                       IN INT32         dwBufSize,
                                                       IN INT32         dwMediaDataType,
                                                       IN LPVOID        lpUserParam);

/**
* 注册码流回调函数:原始码流  Callback function to register streams (original stream)
* @param [IN]  lpPlayHandle               实时预览句柄 Live preview handle
* @param [IN]  cbSourceDataCallBack       码流数据回调函数 Callback function for stream data
* @param [IN]  bContinue                  是否继续进行后面的拼帧.解码和显示操作 Whether to continue to following framing, decoding and displaying operations.
* @param [IN]  lpUser                     用户数据 User data
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE  BOOL STDCALL NETDEV_SetPlayDataCallBack(IN LPVOID lpPlayHandle,
                                                                 IN NETDEV_SOURCE_DATA_CALLBACK_PF cbPlayDataCallBack,
                                                                 IN INT32 bContinue,
                                                                 IN LPVOID lpUser);

/**
* 拼帧后视频流数据回调函数的指针类型  Type of pointer to callback function for framed stream data 
* @param [IN] lpPlayHandle          当前的实况播放句柄 Current live playing handle
* @param [IN] pstParseVideoData     存放拼帧后视频流数据信息缓冲区指针 Pointer to buffer that stores framed video stream data
* @param [IN] lUserParam            用户设置参数,即用户在调用#NDPlayer_SetParseVideoDataCB函数时指定的用户参数 User-set parameters, specified by users when they call the #NDPlayer_SetParseVideoDataCB function
* @return 无. None.
* @note
* -     用户应及时处理输出的数据,确保函数尽快返回,否则会影响播放器内的媒体流处理. Users should handle output stream data in a timely manner so that functions can be returned quickly. Otherwise, stream processing in the player will be affected.
*/
typedef void (STDCALL *NETDEV_PARSE_VIDEO_DATA_CALLBACK_PF)(IN LPVOID lpPlayHandle,
                                                            IN const NETDEV_PARSE_VIDEO_DATA_S *pstParseVideoData,
                                                            IN LPVOID lpUserParam);

/**
* 注册实况码流回调函数:拼帧后码流数据  Callback function to register live stream (framed stream data)
* @param [IN]  lpPlayHandle              预览\回放句柄 Preview\playback handle
* @param [IN]  cbParsePlayDataCallBack   数据回调函数 Data callback function
* @param [IN]  bContinue                 是否继续进行后面的解码和显示操作 Whether to continue to following decoding and displaying operations.
* @param [IN]  lpUserData                用户数据 User data
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
* - 若关闭回调函数,将第二个参数置为NULL.
* - To shut the callback function, set the second parameter as NULL.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetPlayParseCB(IN LPVOID lpPlayHandle, 
                                                           IN NETDEV_PARSE_VIDEO_DATA_CALLBACK_PF cbParsePlayDataCallBack,
                                                           IN INT32 bContinue, 
                                                           IN LPVOID lpUserData);

/**
* 注册实时码流回调函数：解码后视频媒体流数据  Callback function to register live stream (decoded media stream data)
* @param [IN]  lpPlayHandle                 预览\回放句柄 Preview\playback handle
* @param [IN]  cbPlayDecodeVideoCALLBACK    数据回调函数 Data callback function
* @param [IN]  bContinue                    是否继续进行后面的显示操作 Whether to continue to following displaying operations.
* @param [IN]  lpUserData                   用户数据 User data
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
* - 若关闭回调函数,将第二个参数置为NULL.
* - To shut the callback function, set the second parameter as NULL.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetPlayDecodeVideoCB(IN LPVOID  lpPlayHandle,
                                                                 IN NETDEV_DECODE_VIDEO_DATA_CALLBACK_PF cbPlayDecodeVideoCALLBACK,
                                                                 IN INT32 bContinue,
                                                                 IN LPVOID lpUserData);

/**
* 拼帧后音频流数据回调函数的指针类型  Type of pointer to callback function for framed stream data 
* @param [IN] lpPlayHandle   当前的实况播放句柄 Current live playing handle
* @param [IN] pstWaveData    存放解码后音频流数据信息缓冲区指针 Pointer to buffer that stores decoded audio stream data
* @param [IN] lpUserParam    用户设置参数,即用户在调用#NDPlayer_SetDecodeAudioDataCB函数时指定的用户参数 User-set parameters, specified by users when they call the #NDPlayer_SetDecodeAudioDataCB function
* @return 无. None.
* @note
* -     用户应及时处理输出的音频流数据,确保函数尽快返回,否则会影响播放器内的媒体流处理.
* -     Users should handle output stream data in a timely manner so that functions can be returned quickly. Otherwise, stream processing in the player will be affected.
*/
typedef void (STDCALL* NETDEV_PARSE_AUDIO_DATA_CALLBACK_PF)(IN LPVOID lpPlayHandle,
                                                            IN const NETDEV_PARSE_AUDIO_DATA_S *pstParseAudioData,
                                                            IN LPVOID lpUserParam);

/**
* 注册码流回调函数：拼帧后音频媒体流数据 Callback function to register audio stream (framed stream data)
* @param [IN]  lpPlayHandle                预览\回放句柄 Preview\playback handle
* @param [IN]  cbPlayParseAudioCallBack    数据回调函数 Data callback function
* @param [IN]  bContinue                   是否继续进行播放操作 Whether to continue to playing operations.
* @param [IN]  lpUserData                  用户数据 User data
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
* - 若关闭回调函数,将第二个参数置为NULL.
* - To shut the callback function, set the second parameter as NULL.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetPlayParseAudioCB(IN LPVOID lpPlayHandle, 
                                                                IN NETDEV_PARSE_AUDIO_DATA_CALLBACK_PF cbPlayParseAudioCallBack,
                                                                IN INT32 bContinue, 
                                                                IN LPVOID lpUserData);

/**
* 解码后音频流数据回调函数的指针类型  Type of pointer to callback function for decoded audio stream data 
* @param [IN] lpPlayHandle   当前的实况播放句柄 Current live playing handle
* @param [IN] pstWaveData    存放解码后音频流数据信息缓冲区指针 Pointer to buffer that stores decoded audio stream data
* @param [IN] lpUserParam    用户设置参数,即用户在调用#NDPlayer_SetDecodeAudioDataCB函数时指定的用户参数 User-set parameters, specified by users when they call the #NDPlayer_SetDecodeAudioDataCB function
* @return 无. None.
* @note
* -     用户应及时处理输出的音频流数据,确保函数尽快返回,否则会影响播放器内的媒体流处理.
* -     Users should handle output stream data in a timely manner so that functions can be returned quickly. Otherwise, stream processing in the player will be affected.
*/
typedef void (STDCALL* NETDEV_DECODE_AUDIO_DATA_CALLBACK_PF)(IN LPVOID lpPlayHandle,
                                                             IN const NETDEV_WAVE_DATA_S *pstWaveData,
                                                             IN LPVOID lpUserParam);

/**
* 注册码流回调函数：解码后音频媒体流数据 Callback function to register audio stream (decoded media stream data)
* @param [IN]  lpPlayHandle                 预览\回放句柄 Preview\playback handle
* @param [IN]  cbPlayDecodeAudioCallBack    数据回调函数 Data callback function
* @param [IN]  bContinue                    是否继续进行播放操作 Whether to continue to playing operations.
* @param [IN]  lpUserData                   用户数据 User data
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
* - 若关闭回调函数,将第二个参数置为NULL.
* - To shut the callback function, set the second parameter as NULL.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetPlayDecodeAudioCB(IN LPVOID lpPlayHandle, 
                                                                 IN NETDEV_DECODE_AUDIO_DATA_CALLBACK_PF cbPlayDecodeAudioCallBack,
                                                                 IN INT32 bContinue,
                                                                 IN LPVOID lpUserData);

/**
* 显示数据回调函数的指针类型 Type of pointer to display data callback function
* @param [IN] lpHandle       当前的实况播放句柄 Current live playing handle
* @param [IN] hdc            显示表面的hdc,用户可以用这个hdc 作图 Display superficial hdc which can be used for drawing graphics.
* @param [IN] lpUserParam    用户设置参数,即用户在调用#NETDEV_SetPlayDisplayCB函数时指定的用户参数 User-set parameters, specified by users when they call the #NETDEV_SetPlayDisplayCB
* @return 无.
* @note
* -     用户应及时处理输出的音频流数据,确保函数尽快返回,否则会影响播放器内的媒体流处理.
* -     Users should handle output stream data in a timely manner so that functions can be returned quickly. Otherwise, stream processing in the player will be affected.
*/
typedef void (STDCALL* NETDEV_DISPLAY_CALLBACK_PF)(IN LPVOID lpHandle,
                                                   IN LPVOID hdc,
                                                   IN LPVOID lpUserParam);

/**
* 设置显示后数据回调  Modify displayed data callback
* @param [IN]  lpPlayHandle             预览\回放句柄 Preview\playback handle
* @param [IN]  cbPlayDisplayCallBack    数据回调函数 Data callback function
* @param [IN]  lpUserData               用户数据 User data
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
* - 若关闭回调函数,将第二个参数置为NULL.
* - To shut the callback function, set the second parameter as NULL.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetPlayDisplayCB(IN LPVOID lpPlayHandle,
                                                             IN NETDEV_DISPLAY_CALLBACK_PF cbPlayDisplayCallBack,
                                                             IN LPVOID lpUserData);


/**
* 启动实时预览  Start live preview
* @param [IN]  lpUserID             用户登录句柄 User login ID
* @param [IN]  pstPreviewInfo       预览参数,参考枚举：NETDEV_PROTOCAL_E,NETDEV_LIVE_STREAM_INDEX_E. Preview parameter, see enumeration: NETDEV_PROTOCAL_E, NETDEV_LIVE_STREAM_INDEX_E.
* @param [IN]  cbRealDataCallBack   码流数据回调函数指针 Pointer to callback function of stream data
* @param [IN]  lpUserData           用户数据 User data
* @return 返回的用户登录句柄,返回 0 表示失败,其他值表示返回的用户登录句柄值. Returned user login ID. 0 indicates failure, and other values indicate the user ID.
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_RealPlay(IN LPVOID lpUserID,
                                                       IN LPNETDEV_PREVIEWINFO_S pstPreviewInfo,
                                                       IN NETDEV_SOURCE_DATA_CALLBACK_PF cbPlayDataCallBack,
                                                       IN LPVOID lpUserData);


/**
* 按照url启动实时预览
* @param [IN]  lpUserID             用户登录ID
* @param [IN]  pszUrl...............码流URL
* @param [IN]  pstPreviewInfo       预览参数,参考枚举：NETDEV_PROTOCAL_E,NETDEV_LIVE_STREAM_INDEX_E.
* @param [IN]  cbRealDataCallBack   码流数据回调函数指针
* @param [IN]  lpUserData           用户数据
* @return 返回的用户登录ID,返回 0 表示失败,其他值表示返回的用户ID值.
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FastRealPlayByUrl(IN LPVOID lpUserID, 
                                                                IN CHAR *pszUrl,
                                                                IN LPNETDEV_PREVIEWINFO_S pstPreviewInfo,
                                                                IN NETDEV_SOURCE_DATA_CALLBACK_PF cbPlayDataCallBack,
                                                                IN LPVOID lpUserData);

/**
* 按照Url启动实时预览
* Start live preview
* @param [IN]  lpUserID             用户登录ID User login ID
* @param [IN]  pszUrl               码流URL
* @param [IN]  pszUserName          用户名
* @param [IN]  pszPassword          密  码
* @param [IN]  pstPreviewInfo       预览参数，参考枚举：NETDEV_PROTOCAL_E，NETDEV_LIVE_STREAM_INDEX_E。 Preview parameter, see enumeration: NETDEV_PROTOCAL_E, NETDEV_LIVE_STREAM_INDEX_E.
* @param [IN]  cbPlayDataCallBack   码流数据回调函数指针 Pointer to callback function of stream data
* @param [IN]  lpUserData           用户数据 User data
* @return 返回 0 表示失败，其他值表示返回的预览句柄。作为NETDEV_StopRealPlay等函数的句柄参数  Returned user login ID. 0 indicates failure, and other values indicate the user ID.
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FastRealPlayByUrl_V30(IN LPVOID lpUserID,
                                                                    IN CHAR* pszUrl,
                                                                    IN CHAR*pszUserName,
                                                                    IN CHAR*pszPassword,
                                                                    IN LPNETDEV_PREVIEWINFO_S pstPreviewInfo,
                                                                    IN NETDEV_SOURCE_DATA_CALLBACK_PF cbPlayDataCallBack,
                                                                    IN LPVOID lpUserData
                                                                    );

/**
* 通过URL拉取云端设备视频流
* @param [IN]  pszUrl...............码流URL
* @param [IN]  cbRealDataCallBack   码流数据回调函数指针
* @param [IN]  lpUserData           用户数据
* @return 返回的用户登录ID,返回 0 表示失败,其他值表示返回的用户ID值.
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_GetCloudLiveByUrl(IN CHAR *pszUrl,
                                                                IN NETDEV_SOURCE_DATA_CALLBACK_PF cbPlayDataCallBack,
                                                                IN LPVOID lpUserData);

/**
* 停止实时预览  Stop live preview
* @param [IN]  lpPlayHandle     预览句柄 Preview handle
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note 对应关闭NETDEV_RealPlay开启的实况 Stop the live view started by NETDEV_RealPlay
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StopRealPlay(IN LPVOID lpPlayHandle);

/**
* 本地录像  Local recording
* @param [IN]  lpPlayHandle         预览句柄 Preview handle
* @param [IN]  pszSaveFileName      保存的文件名 Name of saved file
* @param [IN]  dwFormat             Format of saved file, see #NETDEV_MEDIA_FILE_FORMAT_E 
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SaveRealData(IN LPVOID lpPlayHandle, 
                                                         IN CHAR *pszSaveFileName,
                                                         IN INT32   dwFormat);

/**
* 停止本地录像 Stop local recording
* @param [IN]  lpPlayHandle     预览句柄 Preview handle
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StopSaveRealData(IN LPVOID lpPlayHandle);


/**
* 获取窗口码率  Get window bit rate
* @param [IN]  lpPlayHandle     预览\回放句柄 Preview\playback handle
* @param [OUT] pdwBitRate       获取的码率指针 Pointer to obtained bit rate
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetBitRate(IN LPVOID lpPlayHandle,
                                                       OUT INT32 *pdwBitRate);

/*
* 获取窗口帧率  Get window frame rate
* @param [IN]  lpPlayHandle     预览\回放句柄 Preview\playback handle
* @param [OUT] pdwFrameRate     获取的帧率指针 Pointer to obtained frame rate
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetFrameRate(IN LPVOID lpPlayHandle,
                                                         OUT INT32 *pdwFrameRate);

/**
* 获取窗口编码格式  Get window encoding format
* @param [IN]  lpPlayHandle         预览\回放句柄 Preview\playback handle
* @param [OUT] pdwVideoEncFmt       获取的视频编码格式指针,参见NETDEV_VIDEO_CODE_TYPE_E  Pointer to obtained encoding format, see NETDEV_VIDEO_CODE_TYPE_E
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetVideoEncodeFmt(IN LPVOID lpPlayHandle,
                                                              OUT INT32 *pdwVideoEncFmt);


/**
* 获取视频分辨率  Get video resolution
* @param [IN]  lpPlayHandle     预览\回放句柄 Preview\playback handle
* @param [OUT] pdwWidth         获取的分辨率-宽度指针 Pointer to obtained resolution – width
* @param [OUT] pdwHeight        获取的分辨率-高度指针 Pointer to obtained resolution – height
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetResolution(IN LPVOID lpPlayHandle,
                                                          OUT INT32 *pdwWidth,
                                                          OUT INT32 *pdwHeight);

/**
* 获取窗口丢包率  Get window packet loss rate
* @param [IN]  lpPlayHandle     预览\回放句柄 Preview\playback handle
* @param [OUT] pulRecvPktNum    接收的数据包数量指针 Pointer to number of received packets
* @param [OUT] pulLostPktNum    丢失的数据包数量指针 Pointer to number of lost packets
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetLostPacketRate(IN LPVOID lpPlayHandle,
                                                              OUT INT32 *pulRecvPktNum,
                                                              OUT INT32 *pulLostPktNum);

/**
* 重置窗口丢包率  Reset window packet loss rate
* @param [IN]  lpPlayHandle   预览\回放句柄 Preview\playback handle
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ResetLostPacketRate(IN LPVOID lpPlayHandle);

/**
* 实况抓拍  Live view snapshot
* @param [IN]  lpPlayHandle     预览\回放句柄 Preview\playback handle
* @param [IN]  pszFileName      保存图像的文件路径（包括文件名） File path to save images (including file name)
* @param [IN]  dwCaptureMode    保存图像格式,参见#NETDEV_PICTURE_FORMAT_E   Image saving format, see #NETDEV_PICTURE_FORMAT_E
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note 文件名中可以不携带抓拍格式的后缀名 File format suffix is not required in the file name
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_CapturePicture(IN LPVOID lpPlayHandle, 
                                                           IN char *pszFileName, 
                                                           IN INT32 dwCaptureMode);

/**
* 设置视频图像显示比例  Modify image display ratio
* @param [IN]  lpPlayHandle   预览\回放句柄 Preview\playback handle
* @param [IN]  enRenderScale  视频图像的显示比例 Image display ratio
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetRenderScale(IN LPVOID lpPlayHandle,
                                                           IN NETDEV_RENDER_SCALE_E enRenderScale);

/**
* 影像参数获取,只获取当前画面参数  Get the current image info
* @param [IN]  lpPlayHandle   预览\回放句柄 Preview\playback handle
* @param [IN]  pstImageInfo   图像信息列表 Image information list
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetVideoEffect(IN LPVOID lpPlayHandle, 
                                                           OUT LPNETDEV_VIDEO_EFFECT_S pstImageInfo);

/**
* 影像调节,只改变当前画面  Adjust the current image
* @param [IN]  lpPlayHandle   预览\回放句柄 Preview\playback handle
* @param [IN]  pstImageInfo   图像信息列表 Image information list
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetVideoEffect(IN LPVOID lpPlayHandle, 
                                                           IN LPNETDEV_VIDEO_EFFECT_S pstImageInfo);

/**
* 设置数字放大  Set Digital zoom
* @param [IN] lpPlayHandle   预览\回放句柄 Preview\playback handle
* @param [IN] hWnd           窗口句柄  window handle 
* @param [IN] pstRect        矩形区域 Rectangle Area
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note pstRect为空时,显示全部画面,即退出数字放大 All images will be displayed with digital zoom disabled when pstRect is null
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetDigitalZoom(IN LPVOID lpPlayHandle, 
                                                           IN LPVOID hWnd,
                                                           IN LPNETDEV_RECT_S pstRect);

/**
* 设置流畅性优先 Set pictuer fluency
* @param [IN] lpPlayHandle         预览\回放句柄 Preview\playback handle
* @param [IN] dwFluency           图像播放流畅性优先类型,参见枚举#NETDEV_PICTURE_FLUENCY_E
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetPictureFluency(IN LPVOID lpPlayHandle,
                                                              IN INT32 dwFluency);


/**
* 开启语音对讲 Start two-way audio
* @param [IN]  lpUserID                 用户登录句柄  User ID
* @param [IN]  dwChannelID              通道号  Channel ID
* @param [IN]  cbRealDataCallBack       码流数据回调函数指针  Pointer to callback function of the stream data 
* @param [IN]  lpUserData               用户数据   User data
* @return 返回的用户登录句柄,返回 0 表示失败,其他值表示返回的用户登录句柄值 Returned user ID. 0 means failure, and any other value is a user ID.
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_StartVoiceCom(IN LPVOID lpUserID,
                                                            IN INT32 dwChannelID,
                                                            IN NETDEV_DECODE_AUDIO_DATA_CALLBACK_PF cbPlayDataCallBack,
                                                            IN LPVOID lpUserData);

/**
* 关闭语音对讲 Stop two-way audio
* @param [IN]  lpPlayHandle   对讲句柄 Two-way audio handle
* @return TRUE表示成功,其他表示失败 TRUE means success, any other value indicates failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StopVoiceCom(IN LPVOID lpPlayHandle);

/**
* 开启麦克风 Turn on microphone
* @param [IN]  lpPlayHandle   预览句柄 Preview handle
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_OpenMic(IN LPVOID lpPlayHandle);

/**
* 关闭麦克风 Turn off microphone
* @param [IN]  lpPlayHandle   预览句柄 Preview handle
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_CloseMic(IN LPVOID lpPlayHandle);

/**
* 调节麦克风音量  Adjust sound volume of microphone
* @param [IN]  lpPlayHandle     预览句柄 Preview handle 
* @param [IN]  dwVolume             音量 Sound volume
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_MicVolumeControl(IN LPVOID lpPlayHandle,
                                                             IN INT32 dwVolume);

/**
* 获取麦克风音量 Get mic volume
* @param [IN]  lpPlayHandle     预览句柄 Preview handle
* @param [IN]  pdwVolume        音量 Volume
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetMicVolume(IN LPVOID lpPlayHandle, 
                                                         OUT INT32* pdwVolume);

/**
* 获取静音状态 Get mute status
* @param [IN]  lpPlayHandle     预览句柄 Preview handle
* @param [OUT]  pbMute           静音状态 Mute status
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetMuteStatus(IN LPVOID lpPlayHandle, 
                                                          OUT BOOL* pbMute);

/**
* 设置静音状态 Set mute status
* @param [IN]  lpPlayHandle     预览句柄 Preview handle
* @param [IN]  bMute            静音状态 Mute status
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetMuteStatus(IN LPVOID lpPlayHandle, 
                                                          IN BOOL bMute);


/**
* 开启声音  Enable sound
* @param [IN]  lpPlayHandle   预览句柄 Preview handle
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_OpenSound(IN LPVOID lpPlayHandle);

/**
* 调节扬声器音量 Control sound volume
* @param [IN]  lpPlayHandle   预览句柄 Preview handle
* @param [IN]  dwVolume       音量 Volume
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SoundVolumeControl(IN LPVOID lpPlayHandle, 
                                                               IN INT32 dwVolume);

/**
* 获取扬声器音量 Get sound volume
* @param [IN]  lpPlayHandle     预览句柄 Preview handle
* @param [IN]  pdwVolume        音量 Volume
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetSoundVolume(IN LPVOID lpPlayHandle, 
                                                           OUT INT32* pdwVolume);

/**
* 关闭声音 Mute
* @param [IN]  lpPlayHandle   预览句柄 Preview handle
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_CloseSound(IN LPVOID lpPlayHandle);

/**
* 开启输入语音数据服务
* @param [IN]  lpUserID                 用户ID
* @param [IN]  dwChannelID              通道号
* @param [IN]  cbRealDataCallBack       码流数据回调函数指针
* @param [IN]  lpUserData               用户数据
* @return 返回的语音对讲句柄,返回 0 表示失败
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_StartInputVoiceSrv(IN LPVOID lpUserID,
                                                                 IN INT32 dwChannelID);

/**
* 关闭输入语音数据服务
* @param [IN]  lpVoiceComHandle   对讲句柄
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StopInputVoiceSrv(IN LPVOID lpVoiceComHandle);

/**
* 输入语音数据
* @param [IN]  lpVoiceComHandle         对讲句柄
* @param [IN] lpDataBuf                 语音数据地址
* @param [IN] dwDataLen                 语音数据长度
* @param [IN] pstVoiceParam             语音参数
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_InputVoiceData(IN LPVOID lpVoiceComHandle,
                                                           IN LPVOID lpDataBuf,
                                                           IN INT32 dwDataLen,
                                                           IN LPNETDEV_AUDIO_SAMPLE_PARAM_S pstVoiceParam);

/**
* 用于语音对讲解析后的语音数据回调函数的指针类型.
* @param [IN] lpVoiceComHandle      对讲句柄
* @param [IN] lpWaveData            存放解析后语音数据信息缓冲区指针
* @param [IN] lpUserParam           用户设置参数
* @param [IN] dwReserved            音频数据大小
* @return 无.
* @note
* -     用户应及时处理输出的数据,确保函数尽快返回,否则会影响播放器内的媒体流处理.
*/
typedef VOID (STDCALL *NETDEV_PARSE_VOICE_DATA_CALLBACK_PF)(IN LPVOID lpVoiceComHandle,
                                                            IN const LPNETDEV_WAVE_DATA_S lpWaveData,
                                                            IN LPVOID lpUserParam,
                                                            IN INT32 dwReserved);

/**
* 设置解析后语音数据回调函数
* @param [IN]  lpPlayHandle                 预览\回放句柄 Preview\playback handle
* @param [IN]  cbPlayDecodeVideoCALLBACK    数据回调函数 Data callback function
* @param [IN]  bContinue                    是否继续 Continue or not
* @param [IN]  lpUserData                   用户数据 User data
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
* - 若关闭回调函数,将第二个参数置为NULL.
* - To shut the callback function, set the second parameter as NULL.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetParseVoiceDataCB(IN LPVOID  lpPlayHandle,
                                                                IN NETDEV_PARSE_VOICE_DATA_CALLBACK_PF cbDecodeVideoCB,
                                                                IN INT32 bContinue,
                                                                IN LPVOID lpUserParam);

/**
* 按名称回放录像文件  Play back recording files by name
* @param [IN] lpUserID          用户登录句柄 User login ID
* @param [IN] pstPlayBackInfo   录像回放结构体指针,参考 LPNETDEV_PLAYBACKINFO_S Pointer to recording playback structure, see LPNETDEV_PLAYBACKINFO_S
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_PlayBackByName(IN LPVOID lpUserID,
                                                             IN LPNETDEV_PLAYBACKINFO_S pstPlayBackInfo);

/**
* 按时间回放录像文件  Play back recording by time. 
* @param [IN] lpUserID          用户登录句柄 User login ID
* @param [IN] pstPlayBackCond   按时间录像回放结构体指针  参考 LPNETDEV_PLAYBACKCOND_S Pointer to playback-by-time structure, see LPNETDEV_PLAYBACKCOND_S
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_PlayBackByTime(IN LPVOID lpUserID,
                                                             IN LPNETDEV_PLAYBACKCOND_S pstPlayBackInfo);


/**
* 使用URL启动回放
* @param [IN]  lpUserID             用户登录句柄
* @param [IN]  pszUrl               码流URL
* @param [IN]  pstPlayBackCond      录像回放结构体指针,参考 LPNETDEV_PLAYBACKCOND_S
* @return 返回0表示失败,其他值作为NETDEV_StopPlayBack等函数的句柄参数
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_PlayBackByUrl(IN LPVOID lpUserID, 
                                                            IN CHAR *pszUrl, 
                                                            IN LPNETDEV_PLAYBACKCOND_S pstPlayBackCond
                                                            );

/**
* 按照url快速回放录像 Play back recording by url. 
* @param [IN] lpUserID          用户登录句柄 User login ID
* @param [IN]  pszUrl...........码流URL
* @param [IN] pstPlayBackParam   按url录像回放结构体指针  参考 LPNETDEV_PLAYBACKCOND_S Pointer to playback-by-time structure, see LPNETDEV_PLAYBACKCOND_S
* @return 返回的用户登录ID,返回 0 表示失败,其他值表示返回的用户ID值.
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FastPlayBackByUrl(IN LPVOID lpUserID,
                                                                IN CHAR *pszUrl,
                                                                IN LPNETDEV_PLAYBACKCOND_S pstPlayBackParam);

/**
* 停止回放业务  Stop playback service
* @param [IN] lpPlayHandle  回放句柄 Playback handle
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StopPlayBack(IN LPVOID lpPlayHandle);

/**
* 按文件名下载录像文件 Download recordings by file name
* @param [IN]  lpUserID             用户登录句柄 User login ID
* @param [IN]  pstPlayBackInfo      录像回放结构体指针,参考 LPNETDEV_PLAYBACKINFO_S Pointer to recording playback structure, see LPNETDEV_PLAYBACKINFO_S
* @param [IN]  *pszSaveFileName     下载后保存到PC机的文件路径,需为绝对路径（包括文件名） Downloaded file save path on PC, must be an absolute path (including file name)
* @param [IN]  dwFormat             录像文件保存格式 Recording file saving format
* @return 下载句柄, 返回0表示失败,其他值作为NETDEV_StopGetFile等函数的参数. Download handle. 0 means failure. Other values are used as the handle parameters of functions like NETDEV_StopGetFile.
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_GetFileByName(IN LPVOID  lpUserID,
                                                            IN LPNETDEV_PLAYBACKINFO_S pstPlayBackInfo,
                                                            IN CHAR *pszSaveFileName,
                                                            IN INT32 dwFormat);

/**
* 按时间下载录像文件 Download recordings by time
* @param [IN]  lpUserID                用户登录句柄 User login ID
* @param [IN]  pstPlayBackCond   按时间录像回放结构体指针,参考 LPNETDEV_PLAYBACKCOND_S Pointer to playback-by-time structure, see LPNETDEV_PLAYBACKCOND_S
* @param [IN]  *pszSaveFileName        下载后保存到PC机的文件路径,需为绝对路径（包括文件名） Downloaded file save path on PC, must be an absolute path (including file name)
* @param [IN]  dwFormat                录像文件保存格式 Recording file saving format
* @return 下载句柄, 返回0表示失败,其他值作为NETDEV_StopGetFile等函数的参数. Download handle. 0 means failure. Other values are used as the handle parameters of functions like NETDEV_StopGetFile.
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_GetFileByTime(IN LPVOID lpUserID, 
                                                            IN LPNETDEV_PLAYBACKCOND_S pstPlayBackCond, 
                                                            IN CHAR *pszSaveFileName,
                                                            IN INT32 dwFormat);

/**
* 停止下载录像文件 Stop downloading recording files
* @param [IN]  lpPlayHandle  回放句柄 Playback handle
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StopGetFile(IN LPVOID lpPlayHandle);


/**
* 控制录像回放的状态  Control recording playback status.
* @param [IN]  lpPlayHandle     回放或下载句柄 Playback or download handle
* @param [IN]  dwControlCode    控制录像回放状态命令 参考枚举：NETDEV_VOD_PLAY_CTRL_E Command for controlling recording playback status, see NETDEV_VOD_PLAY_CTRL_E
* @param [INOUT]  lpBuffer     指向输入/输出参数的指针, 播放速度参考枚举：NETDEV_VOD_PLAY_STATUS_E,播放时间参数类型为：INT64 Pointer to input/output parameters. For playing speed, see NETDEV_VOD_PLAY_STATUS_E. The type of playing time: INT64.
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note 开始.暂停.恢复播放时,lpBuffer置为NULL When playing, pause or resume videos, set IpBuffer as NULL.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PlayBackControl(IN LPVOID lpPlayHandle, 
                                                            IN INT32 dwControlCode, 
                                                            INOUT LPVOID lpBuffer);

/**
* 设置特定时间点单帧回放
* @param [IN]  lpPlayHandle    回放句柄
* @param [IN]  IN INT64 dwPlayTime 特定时间点
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetOneFramePlayWithTime(IN LPVOID lpPlayHandle, IN INT64 dwPlayTime);


/**
* 获取语音广播组通道的状态
* @param [IN] lpPlayHandle           语音广播句柄
* @param [OUT] pstGroupInfo          通道状态列表
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetVoiceBroadcastChlStatus(IN LPVOID lpPlayHandle,
                                                                       OUT LPNETDEV_VOICE_BROADCAST_GROUP_INFO_S pstGroupInfo);

/**
* 新建语音广播组
* @parma [IN] lpUserID              用户登录ID
* @param [IN] pstChnList            通道列表
* @return 返回语音广播句柄，NULL表示失败
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_CreateVoiceBroadcastGroup(IN LPVOID lpUserID,
                                                                        IN LPNETDEV_OPERATE_LIST_S pstChnList);


/**
* 修改语音广播组
* @param [IN] lpPlayHandle          语音广播句柄
* @param [IN] pstModifyInfo         修改语音广播组信息
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyVoiceBroadcastGroup(IN LPVOID lpPlayHandle,
                                                                      IN LPNETDEV_MODIFY_VOICE_BROADCAST_INFO_S pstModifyInfo);

/**
* 开启语音广播 Start voice broadcast
* @param [IN]  lpUserID         用户登录句柄 User login ID
* @param [IN]  dwChannelID      通道号  Channel ID
* @return 返回的用户登录句柄,返回 0 表示失败,其他值表示返回的用户登录句柄值 Returned user ID. 0 means failure, and any other value is a user ID.
* @note 不仅实现启动语音广播功能,并且启用一路语音对讲功能 Voice broadcast and two-way audio for one channel are available.
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_StartVoiceBroadcast(IN LPVOID lpUserID, 
                                                                  IN INT32 dwChannelID);

/**
* 关闭语音广播 Stop voice broadcast
* @param [IN]  lpPlayHandle   语音广播 voice broadcast handle
* @return TRUE表示成功,其他表示失败 TRUE means success, any other value indicates failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StopVoiceBroadcast(IN LPVOID lpPlayHandle);

/**
* 开启/关闭某个广播通道声音
* @param [IN] lpPlayHandle          语音广播句柄
* @param [IN] pstCtrlInfo           控制信息
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyVoiceBroadcastStatus(IN LPVOID lpPlayHandle,
                                                                       IN LPNETDEV_VOICE_BROADCAST_CTRL_INFO_S pstCtrlInfo);


/**
* 打开本地文件
* @param [IN] pszFilename           播放文件名
* @return 返回0表示失败,其他值作为NETDEV_PlayMediaFile.NETDEV_StopPlayMediaFile等函数的句柄参数
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_OpenMediaFile(IN CHAR *pszFilename);

/**
* 播放本地文件
* @param [IN] lpPlayHandle       文件句柄,调用NETDEV_OpenMediaFile的返回值
* @param [IN] dwPlayWnd          播放窗口句柄
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StartPlayMediaFile(IN LPVOID lpPlayHandle,
                                                               IN LPVOID lpPlayWnd);

/**
* 停止播放本地文件业务
* @param [IN] lpPlayHandle  回放句柄
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StopPlayMediaFile(IN LPVOID lpPlayHandle);

/**
* 获取媒体文件时间总长度
* @param [IN] lpPlayHandle  回放句柄
* @param [IN] pdwTotalTime  媒体文件时间总长度（s）
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetMediaFileTime(IN LPVOID lpPlayHandle,
                                                             OUT INT32* pdwTotalTime);


/**
* 元数据处理
* @param [IN] lpPlayHandle              播放句柄
* @param [IN] bEnableIVA                是否添加元数据
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetIVAEnable(IN LPVOID lpPlayHandle,
                                                         IN BOOL bEnableIVA);

/**
* 设置元数据绘图显示类型参数
* @param [IN] dwShowParam              元数据显示类型参数，参见# NETDEV_IVA_SHOW_RULE_E
* @return TRUE表示成功,其他表示失败
* @note
* -    1.该接口函数仅支持Windows.
* -    2.请将规则进行组合,比如显示规则线框和触发规则目标框,下发的ulShowParam = NETDEV_IVA_SHOW_RULE|NETDEV_IVA_SHOW_RESULT_TOUTH_RULE；以此类推
* -    3.已最后一次设置的显示类型为准,之前设置的显示操作取消
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetIVAShowParam(IN INT32 dwShowParam);


/**
* 判断是否为鱼眼码流
* @param [IN] lpPlayHandle              播放句柄
* @param [OUT] pbFishEyeStream          是否为鱼眼码流
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_IsFishEyeStream(IN LPVOID lpPlayHandle,
                                                            OUT BOOL *pbFishEyeStream);

/**
* 获取鱼眼矫正参数
* @param [IN] lpPlayHandle                  播放句柄
* @param [OUT] pstCenterPoint               鱼眼图像圆的圆心
* @param [OUT] pudwRadius                   鱼眼图像圆的半径
* @param [OUT] lpParm                       预留鱼眼镜头参数
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetFishEyeParam(IN LPVOID lpPlayHandle,
                                                            OUT LPNETDEV_POINT_S pstCenterPoint, 
                                                            OUT UINT32 *pudwRadius,
                                                            OUT LPVOID lpParm);

/**
* 设置5ePTZ显示模式
* @param [IN] lpPlayHandle                  播放句柄
* @param [IN] udwPtzMode                    5ePTZ显示模式  参考# NETDEV_PTZ_DISPLAY_MODE
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetPtzDisplayMode(IN LPVOID lpPlayHandle,
                                                              IN UINT32 udwPtzMode);

/**
* 设置模式和安装位置
* @param [IN] lpPlayHandle                  播放句柄
* @param [IN] dwPtzMode                     鱼眼PTZ模式,参考# NETDEV_FISHEYE_PTZ_MODE_E
* @param [IN] dwInstallMode                 安装位置,参考# NETDEV_INSTALL_MODE_E
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetPtzAndFixMode(IN LPVOID lpPlayHandle,
                                                             IN INT32 dwPtzMode, 
                                                             IN INT32 dwInstallMode);

/**
* 获取模式和安装位置
* @param [IN] lpPlayHandle                   播放句柄
* @param [OUT] pdwPtzMode                    鱼眼PTZ模式,参考# NETDEV_FISHEYE_PTZ_MODE_E
* @param [OUT] pdwInstallMode                安装位置,参考# NETDEV_INSTALL_MODE_E
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetPtzAndFixMode(IN LPVOID lpPlayHandle,
                                                             OUT INT32 *pdwPtzMode,
                                                             OUT INT32 *pdwInstallMode);

/**
* 鼠标操作
* @param [IN] lpPlayHandle          播放句柄
* @param [IN] dwOperateMode         鼠标操作方式,参见#NETDEV_MOUSE_MOVE_MODE_E
* @param [IN] udwFlag               与实际标志位,暂时无意义
* @param [IN] wDelta                鼠标滚轮偏移度(可选)
* @param [IN] pstPoint              位移坐标
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetMouseMoveMode(IN LPVOID lpPlayHandle,
                                                             IN INT32 dwOperateMode, 
                                                             IN UINT32 udwFlag, 
                                                             IN INT16 wDelta,
                                                             IN LPNETDEV_POINT_S pstPoint);

/**
* 设置录像文件大小。
* @param [IN]   lpPlayHandle                    用户播放句柄
* @param [IN]   ulFileSize                      录像文件大小（单位MB，范围从10MB到1024MB）
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetRecordSize(IN LPVOID lpPlayHandle,
                                                          IN UINT32 ulFileSize);

/**
* 用于智能元数据回调函数的指针类型
* @param [IN] lpPlayHandle   播放句柄
* @param [IN] pstRuleHead    存放规则信息头
* @param [IN] lpRuleData     存放规则信息缓冲区指针，NETDEV_IVA_REPORT_RULE_INFO_V2_S类型，具体个数参考存放规则信息头
* @param [IN] udwlRuleLen    规则信息缓冲区长度
* @param [IN] pstResultHead  存放结果信息头
* @param [IN] lpResultData   存放结果信息缓冲区指针，NETDEV_IVA_REPORT_RESULT_INFO_V2_EX_S类型，具体个数参考存放结果信息头
* @param [IN] udwResultLen   结果信息缓冲区长度
* @param [IN] lpUserParam    用户设置参数，即用户在调用# NETDEV_SetDecodeAudioMediaDataCB 函数时指定的用户参数
* @param [IN] dwReserved     预留字段
* @return 无。
* @note
* -     1) 用户应及时处理输出的数据，确保函数尽快返回，否则会影响播放器内的媒体流处理。
*/
typedef VOID (STDCALL *NETDEV_IVA_DATA_CALLBACK_PF)(IN LPVOID lpPlayHandle,
                                                    IN LPNETDEV_IVA_REPORT_RULE_HEAD_V2_S pstRuleHead,
                                                    IN const LPVOID lpRuleData,
                                                    IN UINT32 udwlRuleLen,
                                                    IN LPNETDEV_IVA_REPORT_RESULT_HEAD_V2_S pstResultHead,
                                                    IN const LPVOID lpResultData,
                                                    IN UINT32 udwResultLen,
                                                    IN LPVOID lpUserParam,
                                                    IN INT32 dwReserved);

/**
* 设置智能元数据回调函数
* @param [IN] lpPlayHandle              播放句柄
* @param [IN] pfnIVADataCBFun           画图回调函数的指针
* @param [IN] lpUserParam               用户设置参数
* @return:
* -         TRUE         成功
* -         FALSE        失败，请通过 NETDEV_GetLastError 获取错误的详细信息
* @note 回调函数要尽快返回，如果要停止回调，可以把回调函数指针设为NULL
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetPlayIvaDataCB(IN LPVOID lpPlayHandle,
                                                             IN NETDEV_IVA_DATA_CALLBACK_PF pfnIVADataCBFun,
                                                             IN LPVOID lpUserParam);

/**
* 人脸矫正接口 
* @param [IN]  IN const CHAR *pcFilePath            传入的原始Jpeg图片路径
* @param [IN]  IN const CHAR *pcFacePath            矫正后图片路径
* @param [OUT] OUT CHAR *pcModelPath                获取矫正算法模型文件路径
* @return TRUE表示成功,其他表示失败   TRUE means success, any other value indicates failure.
* @note  
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_CorrectFacePic(IN const CHAR *pcFilePath, 
                                                           IN const CHAR *pcFacePath,
                                                           OUT CHAR *pcModelPath);

/*                   媒体模块结束行                               */
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#endif



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef NETDEV_WITH_CLOUD
/************************************************************************/
/*                  包含云服务模块                                */
/************************************************************************/
/**
* 设置T2U最大负载
* @param [IN]   dwT2UPayload         T2U最大负载,MTU设置范围:101-1500 ，默认值是1500。
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetT2UPayLoad(IN INT32 dwT2UPayload);

/**
* 用户登录云端账户 User login to cloud account
* @param [IN]  pszCloudSrvUrl       云端服务器URL  Cloud server URL 
* @param [IN]  pszUserName          云端账户名 Cloud account name
* @param [IN]  pszPassWord          云端账户密码  Cloud account password 
* @return 返回的用户登陆ID,-1表示失败,其他值表示返回的用户登录句柄值  Returned user ID. 1 means failure, any other value is a user ID.
* @note 
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_LoginCloud(IN CHAR *pszCloudSrvUrl,
                                                         IN CHAR *pszUserName,
                                                         IN CHAR *pszPassWord);

/**
* 用户登录云端预置账户 User login to cloud account
* @param [IN]  pszCloudSrvUrl       云端服务器URL  Cloud server URL 
* @param [IN]  pszUserName          云端账户名 Cloud account name
* @param [IN]  pszPassWord          云端账户密码  Cloud account password 
* @param [IN]  bPresetAccountFlag   预置账号标记 
* @return 返回的用户登录句柄,返回 0 表示失败,其他值表示返回的用户登录句柄值. Returned user login ID. 0 indicates failure, and other values indicate the user ID.
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_LoginCloudEx(IN CHAR *pszCloudSrvUrl,
                                                           IN CHAR *pszUserName,
                                                           IN CHAR *pszPassWord,
                                                           IN BOOL bPresetAccountFlag);


/* 终端信息上报
* @param [IN]   lpUserID                     用户登录句柄 User login ID
* @param [IN]   pstMobileInfo                终端信息 Mobile Info
* @param [IN]   pstCloudLimitInfo            限制（阈值）信息 Limit Info
* @return TRUE表示成功,其他表示失败   TRUE means success, any other value indicates failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ReportMobileInfo(IN  LPVOID lpUserID, 
                                                             IN  LPNETDEV_CLOUD_MOBILE_INFO_S pstMobileInfo,
                                                             OUT LPNETDEV_CLOUD_LIMIT_INFO_S  pstCloudLimitInfo);

/**
* 无账号信息登录（设备绑定）
* @param [IN]   lpUserID                     用户登录句柄 User login ID
* @param [IN]   pstNoAccountInfo             无账户信息 No Account Info
* @return TRUE表示成功,其他表示失败   TRUE means success, any other value indicates failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_NoAccountBinding(IN LPVOID lpUserID, 
                                                             IN LPNETDEV_CLOUD_NOACCOUNT_INFO_S pstNoAccountInfo);

/**
* 无账号信息解除绑定
* @param [IN]   lpUserID                     用户登录句柄 User login ID
* @param [IN]   pstNoAccountInfo             无账户信息 No Account Info
* @return TRUE表示成功,其他表示失败   TRUE means success, any other value indicates failure.
* @note pstNoAccountInfo->szDeviceName is Not Required Using for Cancel Binding
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_NoAccountCancel(IN LPVOID lpUserID, 
                                                            IN LPNETDEV_CLOUD_NOACCOUNT_INFO_S pstNoAccountInfo);

/**
* 查询云端账户设备列表   Query device list under a cloud account
* @param [IN]  lpUserID            用户登录句柄 User login ID
* @return 查询业务号,返回0表示失败,其他值作为NETDEV_FindNextCloudDevInfo.NETDEV_FindCloseDevList等函数的参数.
Service ID. 0 means failure, any other value will be used as parameter of functions including NETDEV_FindNextCloudDevInfo and NETDEV_FindCloseDevList.
* @note 此函数返回值为云端设备列表查询业务号,若返回值为非0,则查询云端设备列表成功：
*         一.将上述业务号作为NETDEV_FindNextCloudDevInfo函数的入参lpFindHandle,多次调用NETDEV_FindNextCloudDevInfo函数,以逐个获取已查询到的云端设备信息.
*         二.查询结束后,必须以上述业务号作为NETDEV_FindCloseCloudDevList函数的入参lpFindHandle,调用NETDEV_FindCloseCloudDevList函数,以释放资源,关闭查找.
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindCloudDevListEx(IN LPVOID lpUserID);

/**
* 逐个获取查找到的设备信息   Obtain info about detected devices one by one
* @param [IN]  lpFindHandle         查找句柄   Search handle
* @param [OUT] pstDevInfo           保存设备信息的指针   Pointer to saved device info
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextCloudDevInfoEx(IN LPVOID lpFindHandle,
                                                                   OUT LPNETDEV_CLOUD_DEV_BASIC_INFO_S pstDevInfo
                                                                   );

/**
* 关闭查找,释放资源 Stop search and release resource 
* @param [IN] lpFindHandle  查找句柄 File search handle
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseCloudDevListEx(IN LPVOID lpFindHandle);

/**
* 查询云端账户设备列表   Query device list under a cloud account
* @param [IN]  lpUserID             用户登录句柄 User login ID
* @param [IN]  pstPageFindCond      查询条件 Search condition
* @return 查询业务号,返回0表示失败,其他值作为NETDEV_FindNextCloudDevInfoV3.NETDEV_FindCloseCloudDevListEx等函数的参数.
Service ID. 0 means failure, any other value will be used as parameter of functions including NETDEV_FindNextCloudDevInfoV3 and NETDEV_FindCloseCloudDevListEx.
* @note 此函数返回值为云端设备列表查询业务号,若返回值为非0,则查询云端设备列表成功：
*         一.将上述业务号作为NETDEV_FindNextCloudDevInfoEx函数的入参lpFindHandle,多次调用NETDEV_FindNextCloudDevInfoV3函数,以逐个获取已查询到的云端设备信息.
*         二.查询结束后,必须以上述业务号作为NETDEV_FindNextCloudDevInfoV3函数的入参lpFindHandle,调用NETDEV_FindCloseCloudDevListEx函数,以释放资源,关闭查找.
*         三.因
*/ 
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindCloudDevList_V30(IN LPVOID lpUserID,
                                                                   IN LPNETDEV_PAGE_FIND_COND_S pstPageFindCond);

/**
* 逐个获取查找到的设备信息   Obtain info about detected devices one by one
* @param [IN]  lpFindHandle         查找句柄   Search handle
* @param [OUT] pstDevInfo           保存设备信息的指针   Pointer to saved device info
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextCloudDevInfo_V30(IN LPVOID lpFindHandle,
                                                                     OUT LPNETDEV_CLOUD_DEV_BASIC_INFO_S pstDevInfo);

/**
* 逐个获取查找到的设备信息   Obtain info about detected devices one by one
* @param [IN]  lpFindHandle         查找句柄   Search handle
* @param [OUT] pstDevInfo           保存设备信息的指针   Pointer to saved device info
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseCloudDevInfo_V30(IN LPVOID lpFindHandle);

/**
* 根据注册码获取云端设备信息 Obtain cloud device info by register code
* @param [IN]  lpUserID             用户登录句柄 User login ID
* @param [IN]  pszRegisterCode      注册码 Register code
* @param [IN]  pstDevInfo           云端设备信息  Cloud device info
* @return TRUE表示成功,其他表示失败   TRUE means success, any other value indicates failure.
* @note  
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetCloudDevByRegCode_V30(IN LPVOID lpUserID,
                                                                     IN CHAR *pszRegisterCode,
                                                                     OUT LPNETDEV_CLOUD_DEV_BASIC_INFO_S pstDevInfo);

/**
* 根据设备名称获取云端设备信息  Obtain cloud device info by device name
* @param [IN]  lpUserID             用户登录句柄 User login ID
* @param [IN]  pszDevName           设备名 Device name
* @param [IN]  pstDevInfo           云端设备信息  Cloud device info
* @return TRUE表示成功,其他表示失败   TRUE means success, any other value indicates failure.
* @note  
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetCloudDevByName_V30(IN LPVOID lpUserID,
                                                                  IN CHAR *pszDevName,
                                                                  OUT LPNETDEV_CLOUD_DEV_BASIC_INFO_S pstDevInfo);

/**
* 向云端账户中添加云端设备.
* @param [IN]  lpUserID             用户登录ID User login ID
* @param [IN]  pszDevRegisterCode    设备注册码
* @param [IN]  pszDevName           设备名称
* @param [OUT] pstDevBase           云端设备基本信息
* @return TRUE表示成功,其他表示失败
* @note  
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddCloudDevice(IN LPVOID lpUserID,
                                                           IN CHAR *pszDevRegisterCode,
                                                           IN CHAR *pszDevName,
                                                           OUT LPNETDEV_CLOUD_DEV_BASE_INFO_S pstDevBase);

/**
* 修改云端账户中设备名称.
* @param [IN]  lpUserID             用户登录ID User login ID
* @param [IN]  pszDevName           设备名称
* @return TRUE表示成功,其他表示失败
* @note  
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyCloudDevName(IN LPVOID lpUserID,
                                                               IN CHAR *pszDevUserName,
                                                               IN CHAR *pszDevName);

/**
* 修改云端账户中共享设备的设备名称..
* @param [IN]  lpUserID             用户登录ID User login ID
* @param [IN]  pszDevUserName       云端设备ID
* @param [IN]  pszDevName           设备名称
* @return TRUE表示成功,其他表示失败
* @note  
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyCloudShareDevName(IN LPVOID lpUserID,
                                                                    IN CHAR *pszDevUserName,
                                                                    IN CHAR *pszDevName);

/**
* 删除云端账户下单个设备.
* @param [IN]  lpUserID             用户登录ID User login ID
* @param [IN]  pszDevUserName       云端设备ID
* @return TRUE表示成功,其他表示失败
* @note  
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeleteCloudDevice(IN LPVOID lpUserID,
                                                              IN CHAR *pszDevUserName);

/**
* 批量删除云端账户设备.
* @param [IN]     lpUserID             用户登录ID User login ID
* @param [INOUT]  pstBatchDevList      批量云端设备列表
* @return TRUE表示成功,其他表示失败
* @note  
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeleteBatchCloudDevice(IN LPVOID lpUserID,
                                                                   INOUT LPNETDEV_BATCH_CLOUD_DEV_LIST_S pstBatchDevList);


/** 暂未实现，待新登录接口实现后开发
* 云端设备动态密码登录   Cloud device login with dynamic password
* @param [IN]  lpUserID             云端账户登录ID Cloud account login ID
* @param [IN]  pstCloudInfo         云端设备登录信息  Cloud device login info
* @param [OUT]  pstSELogInfo        设备安全登录信息   Device Security Logon Information
* @return 返回的用户登陆ID,0表示失败,其他值表示返回的用户登录句柄值  Returned user ID. 1 means failure, any other value is a user ID.
* @note 
    1.pCloudInfo 中szDevicePassword字段不需填写.The szDevicePassword field in pCloudInfo needs not to be filled in.
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_LoginCloudDevice_V30(IN LPVOID lpUserID, 
                                                                   IN LPNETDEV_CLOUD_DEV_LOGIN_INFO_S pstCloudInfo);

/**
* 查询云端账户共享记录.
* @param [IN]  lpUserID             用户登录ID User login ID
* @return TRUE表示成功,其他表示失败
* @note  查询业务号,返回0表示失败,其他值作为NETDEV_FindNextCloudDevShareRecordInfo.NETDEV_FindCloseCloudDevShareRecordList等函数的参数.
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindShareRecordList(IN LPVOID lpUserID);

/**
* 逐个查询云端账户共享记录.
* @param [IN]  lpFindHandle             记录查找句柄
* @param [OUT] pstShareRecord           云端设备共享记录信息
* @return TRUE表示成功,其他表示失败
* @note  
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextShareRecordInfo(IN LPVOID lpFindHandle,
                                                                    OUT LPNETDEV_CLOUD_DEV_SHARE_RECORD_S pstShareRecord);

/**
* 关闭共享记录查找.
* @param [IN]  lpFindHandle             记录查找句柄
* @return TRUE表示成功,其他表示失败
* @note  
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseShareRecordList(IN LPVOID lpFindHandle);

/**
* 查询云端账户设备共享信息   Query device list under a cloud account
* @param [IN]  lpUserID            用户登录句柄 User login ID
* @return 查询业务号,返回0表示失败,其他值作为NETDEV_FindNextCloudDevInfo.NETDEV_FindCloseDevList等函数的参数.
Service ID. 0 means failure, any other value will be used as parameter of functions including NETDEV_FindNextCloudDevInfo and NETDEV_FindCloseDevList.
* @note 此函数返回值为云端设备列表查询业务号,若返回值为非0,则查询云端设备列表成功：
*         一.将上述业务号作为NETDEV_FindNextCloudDevShareInfo函数的入参lpFindHandle,多次调用NETDEV_FindNextCloudDevShareInfo函数,以逐个获取已查询到的云端设备信息.
*         二.查询结束后,必须以上述业务号作为NETDEV_FindCloseCloudDevShareInfoList函数的入参lpFindHandle,调用NETDEV_FindCloseCloudDevShareInfoList函数,以释放资源,关闭查找.
*/

NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindCloudDevShareList(IN LPVOID lpUserID);

/**
* 逐个获取查找到的查询云端设备共享信息   Obtain info about detected devices one by one
* @param [IN]  lpFindHandle         查找句柄   Search handle
* @param [OUT] pstDevShare           保存设备信息的指针   Pointer to saved device info
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextCloudDevShareInfo(IN LPVOID lpFindHandle,
                                                                      OUT LPNETDEV_CLOUD_DEV_SHARE_INFO_S pstDevShare);

/**
* 关闭查找,释放资源 Stop search and release resource 
* @param [IN] lpFindHandle  查找句柄 File search handle
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseCloudDevShareList(IN LPVOID lpFindHandle);

/**
* 根据设备名称获取云端设备共享信息
* @param [IN]  lpUserID             用户登录句柄 User login ID
* @param [IN]  pszDevUserName       云端设备ID
* @param [IN]  pstDevShare           云端设备信息
* @return
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetShareDevInfoByName(IN LPVOID lpUserID, 
                                                                  IN CHAR *pszDevUserName, 
                                                                  OUT LPNETDEV_CLOUD_DEV_SHARE_INFO_S pstDevShare);

/**
* 开启云端设备共享.
* @param [IN]     lpUserID             用户登录ID User login ID
* @param [INOUT]  pstDevShareCfg       云端设备共享配置
* @return TRUE表示成功,其他表示失败
* @note  
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StartCloudDevShare(IN LPVOID lpUserID,
                                                               INOUT LPNETDEV_CLOUD_DEV_SHARE_CFG_S pstDevShareCfg);

/**
* 关闭云端设备共享.
* @param [IN]  lpUserID             用户登录ID User login ID
* @param [IN]  pszDevUserName       云端设备ID
* @param [IN]  bIsStopedByOwner     是否由设备所有者关闭共享
* @param [IN]  pszTarget            共享对象（当bIsStopedByOwner等于FALSE时可传入空字符串）
* @return TRUE表示成功,其他表示失败
* @note  
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StopCloudDevShare(IN LPVOID lpUserID,
                                                              IN CHAR *pszDevUserName,
                                                              IN BOOL bIsStopedByOwner,
                                                              IN CHAR *pszTarget);

/**
* 批量关闭云端设备共享.
* @param [IN]  lpUserID             用户登录ID User login ID
* @param [IN]  pstBatchDevShareList 批量关闭云端共享设备信息列表
* @return TRUE表示成功,其他表示失败
* @note  
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StopBatchCloudDevShare(IN LPVOID lpUserID,
                                                                   INOUT LPNETDEV_BATCH_DEV_SHARE_LIST_S pstBatchDevShareList);

/**
* 根据设备名称获取云账号下单个设备共享记录信息 Get shared record information under cloud account based on device name
* @param [IN]  lpUserID             用户登录句柄 User login ID
* @param [IN]  pszDevUserName       设备名 Device name
* @param [OUT] pstDevInfo           云端共享设备信息 Cloud sharing device information
* @return                           查询业务号,返回0表示失败,其他值作为NETDEV_FindNextCloudDevShareRecoredInfo.NETDEV_FindCloseCloudDevShareRecoredList等函数的参数.
                                    Service ID. 0 means failure, any other value will be used as parameter of functions including NETDEV_FindNextCloudDevShareRecoredInfo and NETDEV_FindCloseCloudDevShareRecoredList.
* @note                             此函数返回值为云账号下获取单个设备所有共享记录业务号,若返回值为非0,则获取云账号下单个设备共享记录列表成功：
*                                   一.将上述业务号作为NETDEV_FindNextCloudDevShareRecoredInfo函数的入参lpFindHandle,多次调用NETDEV_FindNextCloudDevShareRecoredInfo函数,以逐个获取已查询到的共享记录信息.
*                                   二.查询结束后,必须以上述业务号作为NETDEV_FindCloseCloudDevShareRecoredList函数的入参lpFindHandle,调用NETDEV_FindCloseCloudDevShareRecoredList函数,以释放资源,关闭查找.
*
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindCloudDevShareRecordList(IN LPVOID lpUserID,
                                                                          IN CHAR *pszDevUserName,
                                                                          OUT LPNETDEV_DEV_INFO_S pstDevInfo);

/**
* 根据云账号动态密码获取云账号下共享记录列表                     Get shared record information list under cloud account based by cloud count dynamic
* @param [IN]  pszCloudSrvUrl       云端服务器URL                Cloud server URL 
* @param [IN]  pszUserName          云账号                       Cloud count 
* @param [IN]  pszPasswd            云账号动态密码               Cloud count dynamic password
* @param [IN]  pszDevUserName       设备名                       Device name
* @param [OUT] pstDevInfo           云端共享设备信息             Cloud sharing device information
* @return                           查询业务号,返回0表示失败,其他值作为NETDEV_FindNextCloudDevShareRecoredInfo.NETDEV_FindCloseCloudDevShareRecoredList等函数的参数.
                                    Service ID. 0 means failure, any other value will be used as parameter of functions including NETDEV_FindNextCloudDevShareRecoredInfo and NETDEV_FindCloseCloudDevShareRecoredList.
* @note                             此函数返回值为云账号下获取单个设备所有共享记录业务号,若返回值为非0,则获取云账号下单个设备共享记录列表成功：
*                                   一.将上述业务号作为NETDEV_FindNextCloudDevShareRecoredInfo函数的入参lpFindHandle,多次调用NETDEV_FindNextCloudDevShareRecoredInfo函数,以逐个获取已查询到的共享记录信息.
*                                   二.查询结束后,必须以上述业务号作为NETDEV_FindCloseCloudDevShareRecoredList函数的入参lpFindHandle,调用NETDEV_FindCloseCloudDevShareRecoredList函数,以释放资源,关闭查找.
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindCloudDevShareRecordListByDynamic(IN CHAR *pszCloudSrvUrl,
                                                                                   IN CHAR *pszUserName, 
                                                                                   IN CHAR *pszPasswd,
                                                                                   IN CHAR *pszDevUserName,
                                                                                   OUT LPNETDEV_DEV_INFO_S pstDevInfo);


/**
* 逐个获取查找到的云账号下单个设备共享记录信息                                             Obtain information about share record one by one
* @param [IN]  lpFindHandle                        查找句柄                                Search handle
* @param [OUT] pstShareLimitInfo                   保存单个设备共享记录信息的指针          Pointer to saved signle share record information
* @return                                          TRUE表示成功,其他表示失败               TRUE means success, and any other value means failure.
* @note                                            返回失败说明查询结束                    A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextCloudDevShareRecordInfo(IN LPVOID lpFindHandle,
                                                                            OUT LPNETDEV_SHARE_LIMIT_INFO_S pstShareLimitInfo);

/**
* 关闭查找,释放资源                                                      Stop search and release resource 
* @param [IN] lpFindHandle            查找句柄                           File search handle
* @return                             TRUE表示成功,其他表示失败          TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseCloudDevShareRecordList(IN LPVOID lpFindHandle);

/**
* 设置设备通道共享 Setup device and channel sharing
* @param [IN]  lpUserID 用户登录句柄 User login ID
* @param [IN]  pstDevChannelShareInfo   设备、通道共享信息 Device and channel share information
* @param [OUT]  pstResponse 设备、通道共享响应信息 Device and channel share response
* @return
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetDevChannelShare(IN LPVOID lpUserID,
                                                               IN LPNETDEV_CHANNEL_SHARE_INFO_S pstDevChannelShareInfo,
                                                               OUT LPNETDEV_RESPONSE_S pstResponse);

/**
* 通过云账号动态密码设置设备通道共享 Setup device and channel sharing by cloud count dynamic password
* @param [IN]  pszCloudSrvUrl 云端服务器URL Cloud server URL
* @param [IN]  pstDevChannelShareInfo   设备、通道共享信息 Device and channel share information
* @param [OUT]  pstResponse 设备、通道共享响应信息 Device and channel share response
* @return
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetDevChannelShareByDynamic(IN CHAR *pszCloudSrvUrl,
                                                                        IN LPNETDEV_CHANNEL_SHARE_INFO_S pstDevChannelShareInfo,
                                                                        OUT LPNETDEV_RESPONSE_S pstResponse);

/**
* 删除设备通道共享 Delete device and channel sharing
* @param [IN]  lpUserID 用户登录句柄 User login ID
* @param [IN]  pstDevChannelShareInfo   设备、通道共享信息 Device and channel share information
* @return
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeleteDevChannelShare(IN LPVOID lpUserID,
                                                                  IN LPNETDEV_DELETE_SHARE_CHANNEL_INFO_S pstDevChannelShareInfo);

/**
* 添加云端组织
* @param [IN] lpUserID                  云端账户登录ID
* @param [IN] dwParentOrgID             父组织ID
* @param [IN] pszOrgName                要添加的组织名
* @param [OUT] pdwOrgID                 生成的新组织ID
* @return TRUE表示成功，其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddCloudOrg(IN LPVOID lpUserID,
                                                        IN INT32 dwParentOrgID,
                                                        IN CHAR* pszOrgName,
                                                        OUT INT32 *pdwOrgID);

/**
* 修改云端组织名称
* @param [IN] lpUserID                  云端账户登录ID
* @param [IN] dwOrgID                   组织ID
* @param [IN] pszOrgName                要修改的组织名称
* @return TRUE表示成功，其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyCloudOrg(IN LPVOID lpUserID,
                                                           IN INT32 dwOrgID,
                                                           IN CHAR* pszOrgName);

/**
* 删除云端组织
* @param [IN] lpUserID              云端账户登录ID
* @param [IN] dwOrgID               待删除组织ID
* @param [IN] dwDeleteMode          删除模式，参加枚举
* @return TRUE表示成功，其他表示失败
* @note 根据组织ID删除组织，删除模式说明：
*        模式1，删除该组织下的所有子组织，如果这些组织下有设备，统一划归到根节点root下；
*        模式2，如果该组织下有其它子组织或者有设备，就不允许删除（需要先删除子组织或先调用设备划归，把设备划归到别处）
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeleteCloudOrg(IN LPVOID lpUserID,
                                                           IN INT32 dwOrgID,
                                                           IN INT32 dwDeleteMode);

/**
<<<<<<< .mine
* 查询云端账户组织列表.
=======
* 通过云账号动态密码删除设备、通道共享                               Delete device and channel sharing by cloud count dynamic password
* @param [IN]  pszCloudSrvUrl           云端服务器URL                Cloud server URL
* @param [IN]  pstDevChannelShareInfo   设备、通道共享信息           Device and channel share information
* @return
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeleteDevChannelShareByDynamic(IN CHAR *pszCloudSrvUrl,
                                                                           IN LPNETDEV_DELETE_SHARE_CHANNEL_INFO_S pstDevChannelShareInfo);

/**
* 查询云端账户组织列表.\n
* @param [IN]  lpUserID             云端账户登录ID
* @param [OUT] pstOrgList           设备信息结构体指针
* @return TRUE表示成功,其他表示失败
* @note  
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindCloudOrgList(IN LPVOID lpUserID);

/**
* 逐个获取查找到的查询云端设备共享信息   Obtain info about detected devices one by one
* @param [IN]  lpFindHandle         查找句柄   Search handle
* @param [OUT] pstDevShare           保存设备信息的指针   Pointer to saved device info
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextCloudOrgInfo(IN LPVOID lpFindHandle,
                                                                 OUT LPNETDEV_CLOUD_ORG_INFO_S pstOrgInfo);

/**
* 关闭查找,释放资源 Stop search and release resource 
* @param [IN] lpFindHandle  查找句柄 File search handle
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseCloudOrgList(IN LPVOID lpFindHandle);

/**
* 添加设备到组织
* @param [IN] lpUserID                  云端账户登录ID
* @param [IN] pstCloudDevBindInfo        组织云端设备绑定信息
* @param [IN] dwOrgID                   组织ID
* @return TRUE表示成功，其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddDevice2Org(IN LPVOID lpUserID,
                                                          IN LPNETDEV_CLOUD_DEV_BASE_INFO_S pstCloudDevBindInfo,
                                                          IN INT32 dwOrgID);

/**
* 获取云端设备通道信息列表
* @param [IN] lpUserID                      云端账户登录ID
* @param [IN] pszDeviceSN                   云端设备序列号
* @return 查询句柄,返回0表示失败，其他值作为NETDEV_FindNextCloudDevChlList、NETDEV_FindCloseCloudDevChlList等函数的参数。
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindCloudDevChlList(IN LPVOID lpUserID,
                                                                  IN CHAR* pszDeviceSN);

/**
* 逐个获取查找到的云端设备通道信息
* @param [IN]  lpFindHandle             查找句柄 
* @param [OUT] pstCloudDevChlInfo       保存云端设备通道信息的指针
* @return TRUE表示成功，其他表示失败 
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextCloudDevChlInfo(IN LPVOID lpFindHandle,
                                                                    OUT LPNETDEV_CLOUD_DEV_CHL_INFO_S pstCloudDevChlInfo);

/**
* 关闭查找云端设备通道信息，释放资源
* @param [IN] lpFindHandle                              查找句柄 
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseCloudDevChlList(IN LPVOID lpFindHandle);

/**
* 获取云账户设备统计信息
* @param [IN]  lpUserID                         云端账户登录ID
* @param [OUT] pstCloudDevPopulInfo             云端设备统计信息
* @return TRUE表示成功,其他表示失败
* @note  
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetCloudDevPopulation(IN LPVOID lpUserID,
                                                                  OUT LPNETDEV_CLOUD_DEV_POPUL_INFO_S pstCloudDevPopulInfo);


/**
* 获取云设备远程URL
* @parm [IN]    LPVOID lpUserID 云账号登录句柄
* @parm [IN]    CHAR* pszDevUserName, 云设备用户名
* @parm [INOUT]    INT32* pdwUrlLen,     pszJumpUrl长度
* @parm [OUT]   CHAR*  pszRemoteUrl，云设备URL,由使用者分配内存
* @return 返回TRUE表示成功，其它表示失败
* note 如果pszRemoteUrl的内存分配不够，将调用失败，pdwUrlLen会返回实际需要的字节数
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetCloudDevRemoteUrl(IN LPVOID lpUserID,
                                                                 IN CHAR* pszDevUserName,
                                                                 INOUT INT32* pdwUrlLen,
                                                                 OUT CHAR* pszRemoteUrl);

/**
* 获取NAT类型
* @param [IN]  pszDomain                    域名
* @param [IN]  pdwNatType                   NAT类型  参考#NETDEV_NAT_TYPE_E
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetNATType(IN CHAR* pszDomain, 
                                                       OUT INT32 *pdwNatType);

/**
* 获取云端设备登陆信息(云端登录成功后调用)
* @param [IN]   lpUserID                       用户登录ID User login ID
* @param OUT pstCloudDevNatInfo                云设备登陆信息
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetCloudDevLoginInfo(IN LPVOID lpUserID, 
                                                                 OUT LPNETDEV_CLOUD_NAT_LOGIN_INFO_S pstCloudDevNatInfo);

/**
* 获取云端登录设备URL(云端登录成功后调用)
* @param [IN]   lpUserID              用户登录ID User login ID
* @param [IN]   dwSize                字符串长度
* @param [OUT]  pszUrl                云端登录成功后URL
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetCloudDevUrl(IN LPVOID lpUserID, IN INT32 dwSize, OUT CHAR* pszUrl);



/*                   云服务模块结束行                              */
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#endif




////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef NETDEV_WITH_PTZ
/************************************************************************/
/*                  包含云台模块                                 */
/************************************************************************/
/**
* 云台控制操作(不启动实况预览)  PTZ control operation (preview not required)
* @param [IN]  lpUserID             用户登录句柄 User login ID
* @param [IN]  dwChannelID          通道号 Channel ID
* @param [IN]  dwPTZCommand         云台控制命令,参见#NETDEV_PTZ_E
PTZ control commands, see #NETDEV_PTZ_E
* @param [IN]  dwSpeed              云台控制的速度,用户按不同解码器的速度控制值设置.取值范围[1,9] Speed of PTZ control, which is configured according to the speed control value of different decoders. Value ranges from 1 to 9.
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZControl_Other(IN LPVOID lpUserID, IN INT32 dwChannelID, IN INT32 dwPTZCommand, IN INT32 dwSpeed);

/**
* 获取云台预置位列表
* @param [IN]  lpUserID             用户登录ID User login ID
* @param [IN]  dwChannelID          通道号 Channel number
* @param [IN]  pstPresetList        预置位列表
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetPTZPresetList(IN LPVOID lpUserID, IN INT32  dwChannelID, OUT LPNETDEV_PTZ_ALLPRESETS_S pstPresetList);

/**
* 云台预置位操作(不需要启动预览)  PTZ preset operation (preview not required)
* @param [IN]  lpUserID             用户登录句柄 User login ID
* @param [IN]  dwChannelID          通道号 Channel ID
* @param [IN]  dwPTZPresetCmd       操作云台预置位命令,参考枚举NETDEV_PTZ_PRESETCMD_E PTZ preset operation commands, see NETDEV_PTZ_PRESETCMD_E
* @param [IN]  pszPresetName        预置位的名称 Preset name
* @param [IN]  dwPresetID           预置位的序号（从1开始）,最多支持255个预置位. Preset number (starting from 1). Up to 255 presets are supported.
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZPreset_Other(IN LPVOID lpUserID, IN INT32 dwChannelID, IN INT32 dwPTZPresetCmd, IN CHAR *pszPresetName, IN INT32 dwPresetID);

/**
* 获取云台预置位巡航路径  Get PTZ preset patrol route
* @param [IN]   lpUserID            用户登录句柄 User login ID
* @param [IN]   dwChannelID         通道号 Channel ID
* @param [OUT]  pstCruiseList        巡航路径列表 Patrol route list
* @return  TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZGetCruise(IN LPVOID lpUserID, IN INT32 dwChannelID, OUT LPNETDEV_CRUISE_LIST_S pstCruiseList);

/**
* 云台预置位巡航操作(不需要启动预览)  PTZ preset patrol operation (preview not required)
* @param [IN]  lpUserID             用户登录句柄 User login ID
* @param [IN]  dwChannelID          通道号 Channel ID
* @param [IN]  dwPTZCruiseCmd       操作云台巡航命令,参考#NETDEV_PTZ_CRUISECMD_E  PTZ patrol operation commands, see #NETDEV_PTZ_CRUISECMD_E
* @param [IN]  pstCruiseInfo         云台巡航路径信息,参考#LPNETDEV_CRUISE_INFO_S  PTZ patrol route information, see #LPNETDEV_CRUISE_INFO_S
* @return  TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
* - 1.巡航路径,最多支持16条路径（序号从1开始） Patrol route. Up to 16 routes are supported (starting from 1).
* - 2.巡航点,最多支持32个点（序号从1开始） Patrol point. Up to 32 points are supported (starting from 1).
* - 3.预置位(最大255).时间(最大255).速度(最大40)  Preset (max 255), time (max 255) and speed (max 40).
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZCruise_Other(IN LPVOID lpUserID, IN INT32 dwChannelID, IN INT32 dwPTZCruiseCmd, IN LPNETDEV_CRUISE_INFO_S pstCruiseInfo);


/**
* 获取云台轨迹巡航路径  Get PTZ patrol route
* @param [IN]   lpUserID            用户登录句柄 User login ID
* @param [IN]   dwChannelID         通道号 Channel ID
* @param [OUT]  pstTrackCruiseInfo        巡航路径列表,参考#LPNETDEV_PTZ_TRACK_INFO_S  Patrol route list, see #LPNETDEV_PTZ_TRACK_INFO_S
* @return  TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZGetTrackCruise(IN LPVOID lpUserID, IN INT32 dwChannelID, OUT LPNETDEV_PTZ_TRACK_INFO_S pstTrackCruiseInfo);


/**
* 获取云台轨迹巡航路径
* Get PTZ patrol route
* @param [IN]   lpUserID                  用户登录ID User login ID
* @param [IN]   dwChannelID               通道号 Channel number
* @param [OUT]  pstTrackCruiseList        巡航路径列表,参考#LPNETDEV_PTZ_TRACK_LIST_V30_S
Patrol route list, see #LPNETDEV_PTZ_TRACK_LIST_V30_S
* @return  TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZGetTrackCruise_V30(IN LPVOID lpUserID, IN INT32 dwChannelID, OUT LPNETDEV_PTZ_TRACK_LIST_V30_S pstTrackCruiseList);

/**
* 云台轨迹巡航操作(不需要启动预览)   PTZ route patrol operation (preview not required)
* @param [IN]  lpUserID             用户登录句柄 User login ID
* @param [IN]  dwChannelID          通道号 Channel ID
* @param [IN]  dwPTZCruiseCmd       操作云台轨迹巡航命令,参考#NETDEV_PTZ_TRACKCMD_E  PTZ route patrol operation commands, see #NETDEV_PTZ_TRACKCMD_E
* @param [INOUT]  pszTrackCruiseName         轨迹巡航名称,建议长度#NETDEV_LEN_64  Route patrol name, suggested length #NETDEV_LEN_64
* @return  TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
* - 1.巡航轨迹路径,最多支持1条路径  Only one patrol route allowed.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZTrackCruise(IN LPVOID lpUserID, IN INT32 dwChannelID, IN INT32 dwPTZTrackCruiseCmd, INOUT CHAR *pszTrackCruiseName);

/**
* 云台轨迹巡航操作(不需要启动预览)
* PTZ route patrol operation (preview not required) 
* @param [IN]  lpUserID                  用户登录ID User login ID
* @param [IN]  dwChannelID               通道号 Channel number
* @param [IN]  dwPTZTrackCruiseCmd       操作云台轨迹巡航命令,参考#NETDEV_PTZ_TRACKCMD_E
* @param [IN]  pstTrackCruiseInfo        云台轨迹巡航路径信息
PTZ route patrol operation commands, see #NETDEV_PTZ_TRACKCMD_E
Route patrol name, suggested length #NETDEV_LEN_64
* @return  TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
* - 1、巡航轨迹路径，最多支持1条路径
* - 1 Only one patrol route allowed.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZTrackCruise_V30(IN LPVOID lpUserID, IN INT32 dwChannelID, IN INT32 dwPTZTrackCruiseCmd, IN LPNETDEV_PTZ_TRACK_INFO_V30_S pstTrackCruiseInfo);


/**
* 拉框放大.缩小(不需要启动预览)   Drag to zoom in and out(preview not required)
* @param lpUserID                   用户登录句柄 User login ID
* @param [IN]  dwChannelID          通道号 Channel ID
* @param [IN]  pstPtzOperateArea    拉框放大结构体信息 Drag-to-zoom structure information
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note 在我司NVR下,需通过私有协议连接我司IPC才支持该接口  In our NVR, this interface is supported only when our camera is connected through private protocol.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZSelZoomIn_Other(IN LPVOID lpUserID, IN INT32 dwChannelID, IN LPNETDEV_PTZ_OPERATEAREA_S pstPtzOperateArea);


/**
* 云台3D定位(不需要启动预览)
* @param [IN] lpUserID               用户登录ID User login ID
* @param [IN] dwChannelID            通道号
* @param [IN] pstZoomAreaInfo        拉框缩放结构体
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZ3DPosition_Other(IN LPVOID lpUserID, IN INT32 dwChannelID, IN LPNETDEV_PTZ_ZOOM_AREA_INFO_S pstZoomAreaInfo);


/**
* 云台拉框放大(不需要启动预览)
* @param [IN] lpUserID                用户登录ID
* @param [IN] dwChannelID             通道ID
* @param [IN] pstZoomAreaInfo         拉框缩放结构体
* @return TRUE表示成功，其他表示失败 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZAreaZoomIn_Other(IN LPVOID lpUserID, IN INT32 dwChannelID, IN LPNETDEV_PTZ_ZOOM_AREA_INFO_S pstZoomAreaInfo);

/**
* 云台拉框缩小(不需要启动预览)
* @param [IN] lpUserID                    用户登录ID
* @param [IN] dwChannelID                 通道ID
* @param [IN] pstZoomAreaInfo             拉框缩放结构体
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZAreaZoomOut_Other(IN LPVOID lpUserID, IN INT32 dwChannelID, IN LPNETDEV_PTZ_ZOOM_AREA_INFO_S pstZoomAreaInfo);

/**
* 获取指定通道的巡航状态
* @param [IN] lpUserID                   用户登录ID
* @param [IN] dwChannelID                通道ID
* @param [OUT] pstTrackStatus            巡航状态信息结构体,参考#LPNETDEV_PTZ_TRACK_STATUS_INFO
* @return  TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZGetTrackStatus(IN LPVOID lpUserID, IN INT32 dwChannelID, OUT LPNETDEV_PTZ_TRACK_STATUS_INFO_S pstTrackStatus);


/**
* 云台看守位操作(不需要启动预览)  PTZ Home position (preview not required)
* @param [IN]  lpUserID                   用户登录句柄 User login ID
* @param [IN]  dwChannelID                通道号 Channel ID
* @param [IN]  dwPTZHomePositionCmd       操作云台看守位命令,参考#NETDEV_PTZ_HOMEPOSITIONCMD_E PTZ home position control commond
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZHomePosition_Other(IN LPVOID lpUserID, IN INT32 dwChannelID, IN INT32 dwPTZHomePositionCmd);


/**
* 云台绝对坐标转动 PTZ absolute move
* @param [IN]  lpUserID         用户登录句柄 User login ID
* @param [IN]  dwChannelID      通道号 Channel ID
* @param [IN]  pstAbsoluteMove  云台绝对坐标转动结构体信息 PTZ absolute move info
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZAbsoluteMove(IN LPVOID lpUserID, IN INT32 dwChannelID, IN LPNETDEV_PTZ_ABSOLUTE_MOVE_S pstAbsoluteMove);

/**
* 获取云台状态 
* @param [IN]  lpUserID     用户登录句柄 User login ID
* @param [IN]  dwChannelID  通道号 Channel ID
* @param [IN]  pstPTZStaus  云台状态
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZGetStatus(IN LPVOID lpUserID, IN INT32 dwChannelID, IN LPNETDEV_PTZ_STATUS_S pstPTZStaus);


/**
* 获取、设置指定通道的云台守望信息(不需要启动预览)
* @param [IN] lpUserID                    用户登录ID
* @param [IN] dwChannelID                 通道ID
* @param [IN] dwPTZGuardCmd               操作云台守望命令，参考#NETDEV_PTZ_GUARDCMD_E
* @param [OUT] pstPTZGuardInfo            拉框缩放结构体
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZGetGuard_Other(IN LPVOID lpUserID, IN INT32 dwChannelID, IN INT32 dwPTZGuardCmd, OUT LPNETDEV_PTZ_GUARD_INFO_S pstPTZGuardInfo);

/**
* 获取指定视频输入通道的云台镜头当前视角值
* @param [IN] lpUserID                    用户登录ID
* @param [IN] dwChannelID                 通道ID             
* @param [OUT] pstLensAngleInfo           云台镜头当前视场角
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZGetLensAngle(IN LPVOID lpUserID, IN INT32 dwChannelID, OUT LPNETDEV_PTZ_LENSANGLE_S pstLensAngleInfo);

/*                   以下为云台模块需要开始实况的业务             */
#ifdef NETDEV_WITH_MEDIA

/**
* 云台预置位操作(需先启动预览)  PTZ preset operation (preview required)
* @param [IN]  lpPlayHandle         实时预览句柄 Live preview handle
* @param [IN]  dwPTZPresetCmd       操作云台预置位命令,参考枚举NETDEV_PTZ_PRESETCMD_E  PTZ preset operation commands, see NETDEV_PTZ_PRESETCMD_E
* @param [IN]  pszPresetName        预置位的名称 Preset name
* @param [IN]  dwPresetID           预置位的序号（从1开始）,最多支持255个预置位 Preset number (starting from 1). Up to 255 presets are supported.
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZPreset(IN LPVOID lpPlayHandle, IN INT32  dwPTZPresetCmd, IN CHAR   *pszPresetName, IN INT32  dwPresetID);

/**
* 云台控制操作(需先启动实况预览)  PTZ control operation (preview required)
* @param [IN]  lpPlayHandle         实时预览句柄 Live preview handle
* @param [IN]  dwPTZCommand         云台控制命令,参见#NETDEV_PTZ_E PTZ control commands, see #NETDEV_PTZ_E
* @param [IN]  dwSpeed              云台控制的速度,用户按不同解码器的速度控制值设置.取值范围[1,9] Speed of PTZ control, which is configured according to the speed control value of different decoders. Value ranges from 1 to 9.
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZControl(IN LPVOID lpPlayHandle, IN INT32 dwPTZCommand, IN INT32 dwSpeed);

/**
* 云台预置位巡航操作(需先启动预览)  PTZ preset patrol operation (preview required)
* @param [IN]  lpPlayHandle         实时预览句柄 Live preview handle
* @param [IN]  dwPTZCruiseCmd       操作云台巡航命令,参考枚举：NETDEV_PTZ_CRUISECMD_E  PTZ patrol operation commands, see NETDEV_PTZ_CRUISECMD_E
* @param [IN]  pstCruiseInfo         云台巡航路径信息,参考#LPNETDEV_CRUISE_INFO_S  PTZ patrol route information, see #LPNETDEV_CRUISE_INFO_S
* @return  TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
* - 1.巡航路径ID不可修改. Patrol route ID cannot be modified.
* - 2.新增巡航路径时,默认按顺序新增.  New routes are added one after another.
* - 3.删除.开始.停止巡航路径时,pstCruiseInfo中只需要填写巡航路径ID即可.  When deleting, starting or stopping patrol, enter patrol route ID in pstCruiseInfo.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZCruise(IN LPVOID lpPlayHandle, IN INT32 dwPTZCruiseCmd, IN LPNETDEV_CRUISE_INFO_S pstCruiseInfo);

/**
* 拉框放大.缩小(需先启动预览)   Drag to zoom in and out (preview required)
* @param [IN]  lpPlayHandle         实时预览句柄 Live preview handle
* @param [IN]  pstPtzOperateArea    拉框放大结构体信息 Drag-to-zoom structure information
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note 在我司NVR下,需通过私有协议连接我司IPC才支持该接口  In our NVR, this interface is supported only when our camera is connected through private protocol.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZSelZoomIn(IN LPVOID lpPlayHandle, IN LPNETDEV_PTZ_OPERATEAREA_S pstPtzOperateArea);

/**
* 云台3D定位
* @param [IN] lpPlayHandle          实时预览句柄
* @param [IN] pstZoomAreaInfo       拉框放大结构体提
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZ3DPosition(IN LPVOID lpPlayHandle, IN LPNETDEV_PTZ_ZOOM_AREA_INFO_S pstZoomAreaInfo);

/**
* 云台拉框放大
* @param [IN] lpPlayHandle             实时预览句柄
* @param [IN] pstZoomAreaInfo          拉框缩放结构体
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZAreaZoomIn(IN LPVOID lpPlayHandle, IN LPNETDEV_PTZ_ZOOM_AREA_INFO_S pstZoomAreaInfo);


/**
* 云台拉框缩小
* @param [IN] lpPlayHandle              实时预览句柄
* @param [IN] pstZoomAreaInfo           拉框缩放结构体
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZAreaZoomOut(IN LPVOID lpPlayHandle, IN LPNETDEV_PTZ_ZOOM_AREA_INFO_S pstZoomAreaInfo);

/**
* 云台看守位操作(需要启动预览)  PTZ Home position (preview required)
* @param [IN]  lpRealHandle             实时预览句柄 Live preview handle
* @param [IN]  dwPTZHomePositionCmd     操作云台看守位命令,参考枚举NETDEV_PTZ_HOMEPOSITIONCMD_E PTZ home position control commond
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZHomePosition(IN LPVOID lpRealHandle, IN INT32 dwPTZHomePositionCmd);


/**
* 云台标定 PTZ Calibrate
* @param [IN]  lpUserID                   用户登录句柄 User login ID
* @param [IN]  dwChannelID                通道号 Channel ID
* @param [IN]  pstOrientationInfo            云台方位信息 PTZ Orientation info
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PTZCalibrate(IN LPVOID lpUserID,
                                                         IN INT32 dwChannelID,
                                                         IN LPNETDEV_PTZ_ORIENTATION_INFO_S pstOrientationInfo
                                                         );

/**
* 获取云台的经纬度信息
* @param [IN]  lpUserID                   用户登录句柄 User login ID
* @param [IN]  dwChannelID                通道号 Channel ID
* @param [OUT] pstPTPositionInfo          云台位置信息 PT Position info
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetPTZAbsolutePTInfo(IN LPVOID lpUserID,
                                                                 IN INT32 dwChannelID,
                                                                 OUT LPNETDEV_PTZ_PT_POSITION_INFO_S pstPTPositionInfo);

/**
* 设置云台的经纬度信息
* @param [IN]  lpUserID                   用户登录句柄 User login ID
* @param [IN]  dwChannelID                通道号 Channel ID
* @param [IN] pstPTPositionInfo           云台位置信息 PT Position info
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetPTZAbsolutePTInfo(IN LPVOID lpUserID,
                                                                 IN INT32 dwChannelID,
                                                                 IN LPNETDEV_PTZ_PT_POSITION_INFO_S pstPTPositionInfo);

/**
* 获取云台当前变倍倍数
* @param [IN]  lpUserID                   用户登录句柄 User login ID
* @param [IN]  dwChannelID                通道号 Channel ID
* @param [OUT] pfZoomRatio                云台变倍倍数[1.00, max] Zoom ratio
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note  
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetPTZAbsoluteZoomInfo(IN LPVOID lpUserID,
                                                                   IN INT32 dwChannelID,
                                                                   OUT FLOAT *pfZoomRatio);

/**
* 设置云台当前变倍倍数
* @param [IN]  lpUserID                   用户登录句柄 User login ID
* @param [IN]  dwChannelID                通道号 Channel ID
* @param [IN]  fZoomRatio                 云台变倍倍数[1.00, max] Zoom ratio
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note  
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetPTZAbsoluteZoomInfo(IN LPVOID lpUserID,
                                                                   IN INT32 dwChannelID,
                                                                   IN FLOAT fZoomRatio);

#endif


/*                   云台模块结束行                              */
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#endif













////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef NETDEV_WITH_CONFIG
/************************************************************************/
/*                  包含配置业务模块                              */
/************************************************************************/
/**
* 获取设备能力集 Obtain device capability
* @param [IN]   lpUserID                用户登录句柄 User login ID
* @param [IN]  dwChannelID              通道号 Channel ID
* @param [IN]   dwCommand               设备能力类型指令 NETDEV_CAPABILITY_COMMOND_E
* @param [OUT]  lpOutBuffer             接收数据的缓冲指针 Pointer to buffer that receives data
* @param [OUT]  dwOutBufferSize         接收数据的缓冲长度(以字节为单位)，不能为0 Length (in byte) of buffer that receives data, cannot be 0.
* @param [OUT]  pdwBytesReturned        实际收到的数据长度指针，不能为NULL  Pointer to length of received data, cannot be NULL.
* @return TRUE表示成功，其他表示失败      TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetDeviceCapability(IN LPVOID lpUserID,
                                                                IN INT32 dwChannelID,
                                                                IN INT32 dwCommand,
                                                                OUT LPVOID lpOutBuffer,
                                                                OUT INT32  dwOutBufferSize,
                                                                OUT INT32  *pdwBytesReturned);

/**
* 获取设备的配置信息  Get configuration information of device
* @param [IN]   lpUserID                用户登录句柄 User login ID
* @param [IN]   dwChannelID             通道号 Channel ID
* @param [IN]   dwCommand               设备配置命令,参见# NETDEV_CONFIG_COMMAND_E  Device configuration commands, see #NETDEV_CONFIG_COMMAND_E
* @param [INOUT]  lpOutBuffer           接收数据的缓冲指针 Pointer to buffer that receives data
* @param [OUT]  dwOutBufferSize         接收数据的缓冲长度(以字节为单位),不能为0 Length (in byte) of buffer that receives data, cannot be 0.
* @param [OUT]  pdwBytesReturned        实际收到的数据长度指针,不能为NULL  Pointer to length of received data, cannot be NULL.
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
* - 1.巡航路径ID不可修改.  Route ID cannot be modified.
* - 2.新增巡航路径时,默认按顺序新增.  New routes are added one after another.
* - 3.删除.开始.停止巡航路径时,pstCruiseInfo中只需要填写巡航路径ID即可.  When deleting, starting or stoping a patrol route, enter route ID in pstCruiseInfo.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetDevConfig(IN LPVOID  lpUserID,
                                                         IN INT32   dwChannelID,
                                                         IN INT32   dwCommand,
                                                         INOUT LPVOID lpOutBuffer,
                                                         OUT INT32  dwOutBufferSize,
                                                         OUT INT32  *pdwBytesReturned);

/**
* 设置设备的配置信息  Modify device configuration information
* @param [IN]   lpUserID            用户登录句柄 User login ID
* @param [IN]   dwChannelID         通道号 Channel ID
* @param [IN]   dwCommand           设备配置命令,参见#NETDEV_CONFIG_COMMAND_E  Device configuration commands, see #NETDEV_CONFIG_COMMAND_E
* @param [IN]   lpInBuffer          输入数据的缓冲指针 Pointer to buffer of input data
* @param [IN]   dwInBufferSize      输入数据的缓冲长度(以字节为单位) Length of input data buffer (byte)
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetDevConfig(IN LPVOID  lpUserID,
                                                         IN INT32   dwChannelID,
                                                         IN INT32   dwCommand,
                                                         IN LPVOID  lpInBuffer,
                                                         IN INT32   dwInBufferSize);


/**
* 重启设备
* Restart device
* @param [IN]  lpUserID     用户登录句柄 User login ID
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_Reboot(IN LPVOID lpUserID);


/**
* 恢复出厂设置  Restore to factory default settings
* @param [IN]  lpUserID     用户登录句柄 User login ID
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note 保留网络配置和用户配置,其他参数恢复到出厂设置. Restore all parameters to factory settings, except network settings and user settings.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_RestoreConfig(IN LPVOID lpUserID);

/**
* 开启/关闭Telnet
* @param [IN]   lpUserID                    用户登录ID User login ID
* @param [IN]   bEnable                     telnet状态
* @return TRUE表示成功，其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_EnableTelnet(IN LPVOID lpUserID,
                                                         IN BOOL bEnable);

/**
* 修改设备名称 Set device name
* @param [IN] lpUserID         用户登录句柄 User login ID
* @param [IN] pszDeviceName    设备名称  Device name
* @return TRUE表示成功,其他表示失败  TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyDeviceName(IN LPVOID lpUserID,
                                                             IN CHAR *pszDeviceName);


/**
* 获取映射端口 Get UPnP net state info
* @param [IN]   lpUserID     用户登录句柄 User login ID
* @param [IN]   pstNatState  网络端口号状态信息 UPnP nat state info
* @return TRUE表示成功,其他表示失败  TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetUpnpNatState(IN LPVOID lpUserID,
                                                            OUT LPNETDEV_UPNP_NAT_STATE_S pstNatState);

/**
* 设置映射端口 Set UPnP net state info
* @param [IN]   lpUserID                  用户登录句柄 User login ID
* @param [IN]   pstNatState               网络端口号状态信息 UPnP nat state info
* @return TRUE表示成功,其他表示失败  TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetUpnpNatState(IN LPVOID lpUserID,
                                                            IN LPNETDEV_UPNP_NAT_STATE_S pstNatState);

/**
* 获取设备系统时间配置 Get device System time configuration
* @param [IN]  pstSystemTimeInfo    时间配置结构体指针  Pointer to time configuration structure
* @return TRUE表示成功,其他表示失败  TRUE means success, and any other value means failure.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetSystemTimeCfg(IN LPVOID lpUserID,
                                                             OUT LPNETDEV_TIME_CFG_S pstSystemTimeInfo);

/**
* 设置设备系统时间配置 Set device system time configuration
* @param [IN]  pstSystemTimeInfo    时间配置结构体指针  Pointer to time configuration structure
* @return TRUE表示成功,其他表示失败  TRUE means success, and any other value means failure.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetSystemTimeCfg(IN LPVOID lpUserID,
                                                             IN LPNETDEV_TIME_CFG_S pstSystemTimeInfo);

/**
* 获取手动录像状态
* @param [IN]  lpUserID       设备句柄
* @param [IN]  pstManualRecordCfg    手动录像参数信息
* @param [OUT]  & udwRecodeStatus    手动录像状态   参见枚举NETDEV_MANUAL_RECORD_STATUS_E
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetManualRecordStatus(IN LPVOID lpUserID,
                                                                  IN LPNETDEV_MANUAL_RECORD_CFG_S pstManualRecordCfg,
                                                                  OUT UINT32 *pudwRecodeStatus);


/**
* 开启手动录像 Start manual record
* @param [IN]   lpUserID                用户登录句柄 User login ID
* @param [IN]   pstManualRecordCfg      手动录像参数信息 Manual record config
* @return TRUE表示成功,其他表示失败 TRUE means success, any other value indicates failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StartManualRecord(IN LPVOID lpUserID,
                                                              IN LPNETDEV_MANUAL_RECORD_CFG_S pstManualRecordCfg);

/**
* 停止手动录像 Stop manual record
* @param [IN]   lpUserID                用户登录句柄 User login ID
* @param [IN]   pstManualRecordCfg      手动录像参数信息 Manual record config
* @return TRUE表示成功,其他表示失败 TRUE means success, any other value indicates failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StopManualRecord(IN LPVOID lpUserID,
                                                             IN LPNETDEV_MANUAL_RECORD_CFG_S pstManualRecordCfg);

/**
* 查询指定通道录像的天数                    Get daynums of Specify Channel
* @param [IN]   lpUserID                    用户登录句柄 User login ID
* @param [IN]   dwChannelID                 通道号  Channel ID
* @param [OUT]   dwDayNums                  录像天数  Video daynums
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetVideoDayNums(IN LPVOID lpUserID, 
                                                            IN INT32 dwChannelID,
                                                            OUT UINT32 *dwDayNums);

/**
* 根据日志类型、时间查找日志信息 Search NVR log by log type and time
* @param [IN]  lpUserID              用户登录 ID User login ID
* @param [IN]  pstLogFindCond        日志查询条件 Log search condition
* @return 日志查询业务号,返回NETDEV_E_FAILED表示失败，其他值作为NETDEV_CloseFindLog等函数的参数。
Log search service number. NETDEV_E_FAILED means failure, and any other value is used as the parameter of functions like NETDEV_CloseFindLog.
* @note 支持VMS、NVR，操作主、子类型字段不同
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindLogInfoList(IN LPVOID lpUserID,
                                                              IN LPNETDEV_FIND_LOG_COND_S pstLogFindCond);

/**
* 逐个获取查找到的日志信息 Obtain logone by one
* @param [IN]  lFindHandle           日志查找句柄 Log search handle
* @param [OUT] pstFindData           保存日志信息的指针 Pointer to saved log info
* @return NETDEV_E_SUCCEED表示成功，其他表示失败 NETDEV_E_SUCCEED means success, and any other value means failure
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextLogInfo(IN LPVOID lpFindHandle,
                                                            OUT LPNETDEV_LOG_INFO_S pstLogInfo);

/**
* 关闭日志查找，释放资源 Close log search and release resource
* @param [IN]  lFindHandle           文件查找句柄 File search handle
* @return NETDEV_E_SUCCEED表示成功，其他表示失败 NETDEV_E_SUCCEED means success, and any other value means failure
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseLogInfo(IN LPVOID lpFindHandle);

/**
* 根据时间查询设备告警
* @param [IN]  lpUserID             用户登录ID
* @param [IN]  pstAlarmFindCond     告警查询条件
* @return 告警查询业务号,返回NETDEV_E_FAILED表示失败，其他值作为NETDEV_CloseFindAlarm等函数的参数。
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindAlarmInfoList(IN LPVOID lpUserID, 
                                                                IN LPNETDEV_FIND_ALARM_COND_S pstAlarmFindCond);

/**
* 逐个获取查找到的告警信息
* @param [IN]  lFindHandle    日志查找句柄
* @param [OUT] pstAlarmInfo   保存告警信息
* @return NETDEV_E_SUCCEED表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextAlarmInfo(IN LPVOID lpFindHandle,
                                                              OUT LPNETDEV_FIND_ALARM_INFO_S pstAlarmInfo);

/**
* 关闭告警查询，释放资源
* @param [IN]  lFindHandle  文件查找句柄
* @return NETDEV_E_SUCCEED表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseAlarmInfo(IN LPVOID lpFindHandle);

/**
* 获取告警日志列表
* @param [IN] lpUserID                  用户登录ID
* @param [IN] pstFindCond               查询条件
* @param [OUT] pdwTotalRealRow          告警日志记录实际总条数
* @return 查询句柄,返回0表示失败，其他值作为NETDEV_FindNextAlarmLog、NETDEV_FindCloseAlarmLog等函数的参数。
* @note 1、支持分页查询
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindAlarmLogList(IN LPVOID lpUserID, 
                                                               IN LPNETDEV_ALARM_LOG_COND_LIST_S pstFindCond,
                                                               OUT INT32* pdwTotalRealRow);

/**
* 逐个获取查找到的告警日志
* @param [IN]  lpFindHandle                 查找句柄 
* @param [OUT] pstAlarmLogInfo              保存告警日志信息的指针 
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextAlarmLog(IN LPVOID lpFindHandle,
                                                             OUT LPNETDEV_ALARM_LOG_INFO_S pstAlarmLogInfo);

/**
* 关闭查找 告警日志，释放资源
* @param [IN] lpFindHandle  文件查找句柄 
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseAlarmLog(IN LPVOID lpFindHandle);

/**
* 获取所有用户全部信息
* @param [IN]   lpUserID                    用户登录ID User login ID
* @param [OUT]   pstUserDetailList             用户信息 请参见结构体#LPNETDEV_USER_DETAIL_LIST_S
* @return TRUE表示成功,其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetUserDetailList(IN LPVOID lpUserID,
                                                              OUT LPNETDEV_USER_DETAIL_LIST_S pstUserDetailList);

/**
* 获取指定用户全部信息
* @param [IN]   lpUserID                    用户登录ID User login ID
* @param [INOUT]   pstUserDetailInfo             用户信息 请参见结构体#NETDEV_USER_DETAIL_INFO_S
* @return TRUE表示成功,其他表示失败
* @note   pstUserDetailInfo中的szUsername为入参
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetUserDetailInfo(IN LPVOID lpUserID,
                                                              INOUT LPNETDEV_USER_DETAIL_INFO_S pstUserDetailInfo);

/**
* 创建用户信息
* @param [IN]   lpUserID                用户登录ID User login ID
* @param [IN]   pstUserDetailInfo             用户信息请参见结构体#NETDEV_USER_DETAIL_INFO_S
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_CreateUser(IN LPVOID lpUserID,
                                                       IN LPNETDEV_USER_DETAIL_INFO_S pstUserDetailInfo);

/**
* 修改用户信息
* @param [IN]   lpUserID                用户登录ID User login ID
* @param [IN]   pstUserInfo             用户信息请参见结构体#NETDEV_USER_INFO_S
* @return TRUE表示成功,其他表示失败
* @note
    1、仅管理员用户支持修改权限，管理员用户修改其他用户信息不需要携带旧密码
    2、操作员及普通用户只能修改自己的密码
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyUser(IN LPVOID lpUserID,
                                                       IN LPNETDEV_USER_MODIFY_DETAIL_INFO_S pstUserInfo);

/**
* 删除用户信息
* @param [IN]   lpUserID                用户登录ID User login ID
* @param [IN]   pszUserName             用户名
* @return TRUE表示成功,其他表示失败
* @note 无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeleteUser(IN LPVOID lpUserID,
                                                       IN CHAR *pszUserName);

/**
* 修改指定用户密码
* @param [IN]   lpUserID                用户登录ID 
* @param [IN]   IN LPNETDEV_MODIFY_PASSWORD_INFO_S pstModifyPasswordInfo 用户密码
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyPassword(IN LPVOID lpUserID,
                                                           IN LPNETDEV_MODIFY_PASSWORD_INFO_S pstModifyPasswordInfo);

/**
* 获取设备当前密码
* @param [IN]   lpUserID                用户登录ID User login ID
* @param [OUT]  pszPassword             密码 内存长度要求大于等于NETDEV_LEN_64
* @return TRUE表示成功,其他表示失败
* @note 无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetDevPassword(IN LPVOID lpUserID,
                                                           OUT CHAR *pszPassword);


/**
* 修改当前用户密码
* @param [IN] lpUserID          用户登录ID
* @param [IN] pszNewPasswd      新密码
* @return TRUE表示成功，其他表示失败
* @note
* -
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ChangePassword(IN LPVOID lpUserID,
                                                           IN CHAR* pszNewPasswd);

/**
* 获取当前用户权限
* @param [IN] lpUserID              用户登录ID
* @param [OUT] pstRoleRightList     用户权限信息列表
* @return TRUE表示成功，其他表示失败
* @note
* -
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetCurrentUserRightList(IN LPVOID lpUserID, 
                                                                 OUT LPNETDEV_RIGHT_LIST_S pstRoleRightList);

/**
* 设置设备云功能
* @param [IN]   lpUserID                    用户登录ID
* @param [IN]   bEnableCloud                Cloud使能
* @return TRUE表示成功，其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_EnableCloudState(IN LPVOID lpUserID,
                                                             IN BOOL bEnableCloud);


/**
* 获取Cloud信息
* @param [IN]  lpUserID               用户登录ID
* @param [OUT]  pstCloudInfo        Cloud信息
* @return TRUE表示成功,其他表示失败
* @note
* -
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetNetWorkCloudInfo(IN LPVOID lpUserID,
                                                                OUT LPNETDEV_NETWORK_CLOUD_INFO_S pstCloudInfo);

/**
* 设置Cloud状态
* @param [IN]  lpUserID               用户登录ID
* @param [IN]  pstCloudInfo          Cloud信息 输入使能字段
* @return TRUE表示成功,其他表示失败
* @note
* -
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetNetWorkCloudInfo(IN LPVOID lpUserID, 
                                                                IN LPNETDEV_NETWORK_CLOUD_INFO_S pstCloudInfo);

/**
* 获取视频分发服务器信息
* @param [IN]  lpUserID         用户登录
* @param [OUT]  pstCDNSrvInfo   CDN服务器信息
* @return TRUE表示成功,其他表示失败
* @note
* -
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetCDNSrvInfo(IN LPVOID lpUserID, 
                                                          OUT LPNETDEV_CDN_SRV_INFO_S pstCDNSrvInfo);

/**
* 获取视频分发服务器配置信息
* @param [IN]   lpUserID    用户登录
* @param [OUT]  pstCDNRule  CDN配置信息
* @return TRUE表示成功,其他表示失败
* @note
* -
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetCDNRule(IN LPVOID lpUserID, 
                                                       OUT LPNETDEV_CDN_RULE_S pstCDNRule);

/**
* 查询视频分发通道列表信息
* @param [IN]  lpUserID             用户登录ID
* @param [IN]  pstAlarmFindCond     告警查询条件
* @return 告警查询业务号,返回NETDEV_E_FAILED表示失败，其他值作为NETDEV_CloseFindAlarm等函数的参数。
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindCDNChlList(IN LPVOID lpUserID);

/**
* 逐个获取查找到的分发通道信息
* @param [IN]  lFindHandle      日志查找句柄
* @param [OUT] pstCDNChlInfo    保存分发通道信息
* @return NETDEV_E_SUCCEED表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextCDNChlInfo(IN LPVOID lpFindHandle,
                                                               OUT LPNETDEV_CDN_CHL_INFO_S pstCDNChlInfo);

/**
* 关闭分发通道信息查询，释放资源
* @param [IN]  lFindHandle  文件查找句柄
* @return NETDEV_E_SUCCEED表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseCDNChlInfo(IN LPVOID lpFindHandle);


/**
* 导出配置文件业务
* @param [IN]   lpUserID                  用户登录ID User login ID
* @param [IN]   pszConfigPath             配置文件路径（包含文件名称,后缀名为tgz）
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetConfigFile(IN LPVOID lpUserID,
                                                          IN CHAR* pszConfigPath);

/**
* 导入配置文件业务
* @param [IN]   lpUserID                  用户登录ID User login ID
* @param [IN]   pszConfigPath             配置文件路径（包含文件名称,命名格式：设备型号_IP地址_config.tgz, 如：HIC5621E-L-U_192.168.3.112_config.tgz）
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetConfigFile(IN LPVOID lpUserID,
                                                          IN CHAR* pszConfigPath);


/**
* 设置指定视频输入通道下码流加扰使能状态\n
* @param [IN]   lpUserID             用户登录ID User login ID
* @param [IN]   udwChannelID         通道ID
* @param [IN]   pbStatus             码流加扰使能状态
* @return TRUE表示成功,其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetVideoChlScrambleStatus(IN LPVOID lpUserID,
                                                                      IN UINT32 udwChannelID,
                                                                      IN BOOL bStatus
                                                                      );

/**
* 获取指定视频输入通道下码流加扰使能状态\n
* @param [IN]   lpUserID              用户登录ID User login ID
* @param [IN]   udwChannelID          通道ID
* @param [OUT]   pbStatus             码流加扰使能状态
* @return TRUE表示成功,其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetVideoChlScrambleStatus(IN LPVOID lpUserID,
                                                                      IN UINT32 udwChannelID,
                                                                      OUT BOOL *pbStatus
                                                                      );

/*                   配置模块结束行                              */
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#endif











////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef NETDEV_WITH_BASIC
/************************************************************************/
/*                  包含基础管理业务模块                         */
/************************************************************************/

/**
* 获取告警联动抓图URL
* @param [IN]  lpUserID                     用户登录
* @param [IN]  pstAlarmSnapShotCond         告警抓图获取条件
* @return  查询句柄,返回NULL表示失败，其他值作为NETDEV_GetNextAlarmSnapShotURL、NETDEV_CloseGetAlarmSnapShotURL等函数的参数。
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindAlarmSnapShotURL(IN LPVOID lpUserID,
                                                                   IN LPNETDEV_ALARM_SNAPSHOT_COND_S pstAlarmSnapShotCond);

/**
* 获取下一张图片信息
* @param [IN]  lpFindHandle                     查询句柄
* @param [OUT]  pstAlarmPicInfo         告警抓图图片信息
* @return  TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextAlarmSnapShotURL(IN LPVOID lpFindHandle,
                                                                     OUT LPNETDEV_ALARM_SNAPSHOT_PIC_S pstAlarmPicInfo);

/**
* 关闭告警联动抓图FindHandle
* @param [IN]  lpFindHandle                     查询句柄
* @return  TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseAlarmSnapShotURL(IN LPVOID lpFindHandle);

/**
* 保存告警抓图
* @param [IN]  lpUserID                     用户登录
* @param [IN]  pstPicFileInfo           告警图片信息
* @return  TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SaveSnapShotFile(IN LPVOID lpUserID,
                                                             IN LPNETDEV_PIC_FILE_INFO_S pstPicFileInfo);

/**
* 查询组织信息列表
* @param [IN] lpUserID          用户登录ID
* @param [IN] pstFindCond       查找组织信息列表条件
* @return 查询句柄,返回0表示失败，其他值作为NETDEV_FindNextOrgInfo、NETDEV_FindCloseOrgInfo等函数的参数。
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindOrgInfoList(IN LPVOID lpUserID, 
                                                              IN LPNETDEV_ORG_FIND_COND_S pstFindCond);

/**
* 逐个获取查找到的组织信息
* @param [IN]  lpFindHandle                 查找句柄 
* @param [OUT] pstOrgInfo                   保存组织信息的指针
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextOrgInfo(IN LPVOID lpFindHandle, 
                                                            OUT LPNETDEV_ORG_INFO_S pstOrgInfo);

/**
* 关闭查找 组织信息，释放资源
* @param [IN] lpFindHandle  文件查找句柄 
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseOrgInfo(IN LPVOID lpFindHandle);

/**
* 添加组织
* @param [IN] lpUserID              用户登录ID
* @param [IN] pstOrgInfo            组织信息指针
* @param [OUT] dwOrgID             组织ID
* @return TRUE           表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddOrgInfo(IN LPVOID lpUserID, 
                                                       IN LPNETDEV_ORG_INFO_S pstOrgInfo, 
                                                       OUT INT32 *dwOrgID);
/**
* 修改组织
* @param [IN] lpUserID              用户登录ID
* @param [IN] dwOrgID              组织ID
* @param [IN] pstOrgInfo            组织信息指针
* @return TRUE           表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyOrgInfo(IN LPVOID lpUserID,
                                                          IN LPNETDEV_ORG_INFO_S pstOrgInfo);

/**
* 批量删除组织
* @param [IN] lpUserID             用户登录ID
* @param [IN] pstOrgDelInfo       待删除组织信息指针
* @param [OUT] pstOrgDelResultInfo  删除组织响应信息指针
* @return TRUE           表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_BatchDeleteOrgInfo(IN LPVOID lpUserID,
                                                               IN LPNETDEV_DEL_ORG_INFO_S pstOrgDelInfo, 
                                                               OUT LPNETDEV_ORG_BATCH_DEL_INFO_S pstOrgDelResultInfo);

/**
* 通过组织ID查询通道信息列表
* @param [IN] lpUserID          用户登录ID
* @param [IN] dwOrgID           组织ID
* @param [IN] dwChnType         通道类型，参见#NETDEV_CHN_TYPE_E
* @return 查询句柄,返回0表示失败，其他值作为NETDEV_FindNextOrgChn、NETDEV_FindCloseOrgChn等函数的参数。
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindOrgChnList(IN LPVOID lpUserID, 
                                                             IN INT32 dwOrgID,
                                                             IN INT32 dwChnType
                                                             );

/**
* 逐个获取查找到的 组织通道 信息
* @param [IN]  lpFindHandle                 查找句柄 
* @param [OUT] pstOrgChnInfo                保存 组织通道 信息的指针
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextOrgChn(IN LPVOID lpFindHandle, 
                                                           OUT LPNETDEV_ORG_CHN_INFO_S pstOrgChnInfo);

/**
* 关闭查找 组织通道信息，释放资源
* @param [IN] lpFindHandle  文件查找句柄 
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseOrgChn(IN LPVOID lpFindHandle);

/**
* 根据组织ID获取通道
* @param [IN] lpUserID             用户登录ID
* @param [IN] dwOrgID              组织ID
* @param [OUT] pstOrgChnShortInfo  组织下通道信息指针
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 该接口需要调用两次
*       第一次获取通道数量 并返回NETDEV_E_NEED_MORE_MEMORY错误码
*       第二次根据数量进行动态内存分配后，再次调用获取通道ID
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetOrgChnInfo(IN LPVOID lpUserID, 
                                                          IN INT32 dwOrgID,
                                                          OUT LPNETDEV_ORG_CHN_SHORT_INFO_S pstOrgChnShortInfo);
/**
* 根据组织ID修改通道
* @param [IN] lpUserID              用户登录ID
* @param [IN] pstOrgChnShortInfo      组织下通道信息指针
* @return TRUE              表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyOrgChnInfo(IN LPVOID lpUserID,
                                                             IN LPNETDEV_ORG_CHN_SHORT_INFO_S pstOrgChnShortInfo);

/**
* 本地升级设备自身
* @param [IN]   lpUserID                用户登录ID User login ID
* @param [IN]   dwUpgradeType           升级类型
* @param [INOUT]  pszTaskNo             设备返回的任务号,建议长度#NETDEV_LEN_64
* @return TRUE表示成功,其他表示失败
* @note 临时接口，仅供升级IPC使用,解决IPC本地升级线程启动时间需要约10s问题
* @note 调用此接口后需等待10s左右再调用 NETDEV_UploadFirmware
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_UpgradeDevice(IN LPVOID lpUserID,
                                                          IN INT32 dwUpgradeType,
                                                          INOUT CHAR *pszTaskNo);

/**
* 本地升级设备自身上传升级包
* @param [IN]   lpUserID                用户登录ID User login ID
* @param [IN]   pszPath                 本地升级包路径
* @param [IN]  pszTaskNo                任务号
* @return TRUE表示成功,其他表示失败
* @note 临时接口，仅供IPC本地升级使用
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_UploadDeviceFirmware(IN LPVOID lpUserID,
                                                                 IN CHAR *pszPath,
                                                                 IN CHAR *pszTaskNo);

/**
* 设备通道升级
* @param [IN]   lpUserID                用户登录ID User login ID
* @param [IN]   pstUpgradeInfo          需升级设备信息指针
* @param [INOUT]  pszTaskNo            设备返回的任务号,建议长度#NETDEV_LEN_64
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_UpgradeDeviceChl(IN LPVOID lpUserID,
                                                             IN LPNETDEV_UPGRADE_DEVICE_S pstUpgradeInfo,
                                                             INOUT CHAR *pszTaskNo);

/**
* 通过通道号获取通道升级状态
* @param [IN]   lpUserID                用户登录ID User login ID
* @param [IN]   dwChannelID             通道ID 
* @param [OUT]  pstUpgradeStatus        升级状态
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetUpgradeStatus(IN LPVOID lpUserID,
                                                             IN INT32 dwChannelID,
                                                             OUT LPNETDEV_UPGRADE_STATUS_S pstUpgradeStatus);


/*                   基础管理模块结束行                           */
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#endif












////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef NETDEV_WITH_VMS
/************************************************************************/
/*                  包含一体机业务模块                            */
/************************************************************************/

/**
* 根据通道类型和通道ID获取通道详细信息
* @param [IN] lpUserID              用户登录ID
* @param [IN] dwChnID               通道ID
* @param [IN] dwChnType             通道类型,参见# NETDEV_CHN_TYPE_E
* @param [INOUT] lpOutBuffer        接收数据的缓冲指针
* @param [IN] dwOutBufferSize       接收数据的缓冲长度(以字节为单位)，不能为0
* @param [OUT] pdwBytesReturned     实际收到的数据长度指针，不能为NULL
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetChnDetailByChnType(IN LPVOID lpUserID, 
                                                                  IN INT32 dwChnID,
                                                                  IN INT32 dwChnType,
                                                                  INOUT LPVOID lpOutBuffer, 
                                                                  IN INT32  dwOutBufferSize,
                                                                  OUT INT32  *pdwBytesReturned);

/**
* 根据通道类型和通道ID设置报警输出通道的信息
* @param [IN] lpUserID              用户登录ID
* @param [IN] dwChnID               通道ID
* @param [IN] dwChnType             通道类型,参见# NETDEV_CHN_TYPE_E
* @param [IN] lpOutBuffer          接收数据的缓冲指针
* @param [IN] dwOutBufferSize       接收数据的缓冲长度(以字节为单位)，不能为0
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetChnDetailByChnType(IN LPVOID lpUserID, 
                                                                  IN INT32 dwChnID,
                                                                  IN INT32 dwChnType,
                                                                  IN LPVOID lpOutBuffer, 
                                                                  IN INT32  dwOutBufferSize);

/**
* 查看门禁授权组列表
* @param [IN] lpUserID                                      用户登录ID
* @param [IN] pstFindCond                                   查询条件
* @param [OUT] pstResultInfo                                实际查询结果
* @return 查询句柄，返回NULL表示失败，其他作为NETDEV_FindNextACSPermissionGroupInfo,NETDEV_FindCloseACSPermissionGroupInfo等函数的参数
* @note 查询之后需要调用NETDEV_FindNextACSPermissionGroupInfo和NETDEV_FindCloseACSPermissionGroupInfo将数据获取完，否则会造成内存泄露
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindACSPermissionGroupList( IN  LPVOID lpUserID, 
                                                                         IN  LPNETDEV_PERSON_QUERY_INFO_S pstQueryCond, 
                                                                         OUT LPNETDEV_BATCH_OPERATE_BASIC_S pstResultInfo);
/**
* 获取下一条记录
* @param [IN] lpFindHandle                              门禁授权组列表信息列表句柄
* @param [OUT] pstACSPermissionInfo                     门禁授权组列表信息
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextACSPermissionGroupInfo( IN  LPVOID lpFindHandle,
                                                                           OUT LPNETDEV_ACS_PERMISSION_INFO_S pstACSPermissionInfo);

/**
* 关闭查询记录资源
* @param [IN] lpFindHandle                                  门禁授权组列表句柄
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseACSPermissionGroupList(IN LPVOID lpFindHandle);

/**
* 添加人员授权组信息
* @param [IN] lpUserID                 用户登录ID
* @param [IN] pstPermissionGroupInfo        授权组信息
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddACSPersonPermissionGroup( IN LPVOID lpUserID, 
                                                                        IN LPNETDEV_ACS_PERMISSION_INFO_S pstPermissionGroupInfo,
                                                                        OUT UINT32 *pUdwGroupID);
/**
* 修改人员授权组信息
* @param [IN] lpUserID                 用户登录ID
* @param [IN] pstPermissionInfo        授权组信息
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyACSPersonPermissionGroup( IN LPVOID lpUserID, 
                                                                           IN LPNETDEV_ACS_PERMISSION_INFO_S pstPermissionInfo);
/**
* 删除人员授权组信息
* @param [IN] lpUserID                 用户登录ID
* @param [IN] pstPermissionIDList      权限ID数组
* @param [INOUT] 
* @param [OUT] 
* @return 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeleteACSPersonPermissionGroup( IN LPVOID lpUserID, 
                                                                           IN LPNETDEV_OPERATE_LIST_S pstPermissionIDList,
                                                                           OUT LPNETDEV_BATCH_OPERATOR_LIST_S pstResutList);

/**
* 获取单个授权组信息
* @param [IN] lpUserID                                              用户登录ID
* @param [IN] udwPermissionGroupID                                  授权组id
* @param [INOUT] pstAcsPerssionInfo                                   权限组信息
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetSinglePermGroupInfo(IN LPVOID lpUserID,
                                                                   IN UINT32 udwPermissionGroupID,
                                                                   INOUT LPNETDEV_ACS_PERMISSION_INFO_S pstAcsPerssionInfo);

/**
* 访客签离
* @param [IN] lpUserID              用户登录ID
* @param [IN] udwPersonID           人员编号 
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ACSPersonSignout(IN LPVOID lpUserID, 
                                                             IN UINT32 udwPersonID);

/**
* 获取指定人员授权信息
* @param [IN] lpUserID                       用户登录ID
* @param [IN] udwPersonID                    人员ID
* @param [INOUT] pstPermissionInfo           人员授权信息
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetACSPersonPermission(IN LPVOID lpUserID,
                                                                   IN UINT32 udwPersonID,
                                                                   OUT LPNETDEV_ACS_DOOR_PERMISSION_INFO_S pstPermissionInfo);

/**
* 设置指定人员授权信息
* @param [IN] lpUserID                       用户登录ID
* @param [IN] pstPermissionInfo              人员授权信息
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetACSPersonPermission(IN LPVOID lpUserID, 
                                                                   IN UINT32 udwPersonID, 
                                                                   IN LPNETDEV_ACS_DOOR_PERMISSION_INFO_S pstPermissionInfo);

/**
* 查询出入记录
* @param [IN] lpUserID                                      用户登录ID
* @param [IN] pstFindCond                                   出入记录查询条件
* @param [OUT] pstResultInfo                                出入记录实际总条数
* @return 查询句柄，返回NULL表示失败，其他作为NETDEV_FindNextACSAttendanceLog,NETDEV_FindCloseACSAttendanceLogList等函数的参数
* @note 查询之后需要调用NETDEV_FindNextACSAttendanceLog和NETDEV_FindCloseACSAttendanceLogList将数据获取完，否则会造成内存泄露
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindACSAttendanceLogList(IN LPVOID lpUserID,
                                                                       IN LPNETDEV_ALARM_LOG_COND_LIST_S pstFindCond,
                                                                       OUT LPNETDEV_BATCH_OPERATE_BASIC_S pstResultInfo);

/**
* 获取下一条出入记录
* @param [IN] lpFindHandle                              出入记录信息列表句柄
* @param [OUT] pstACSLogInfo                            出入记录信息
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextACSAttendanceLog(IN LPVOID lpFindHandle,
                                                                     OUT LPNETDEV_ACS_ATTENDANCE_LOG_INFO_S pstACSLogInfo);

/**
* 关闭查询出入记录资源
* @param [IN] lpFindHandle                                  出入记录信息列表句柄
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseACSAttendanceLogList(IN LPVOID lpFindHandle);

/**
* 添加访客黑名单
* @param [IN] lpUserID                  用户登录ID
* @param [IN] pstBlackListInfo          黑名单信息
* @return 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddACSPersonBlackList( IN LPVOID lpUserID, 
                                                                  IN LPNETDEV_ACS_PERSON_BLACKLIST_INFO_S pstBlackListInfo,
                                                                  OUT UINT32 *pUdwBlackListID);

/**
* 删除访客黑名单
* @param [IN] lpUserID                  用户登录ID
* @param [IN] pstBlackList               黑名单信息列表
* @param [INOUT] 
* @param [OUT] 
* @return 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeleteACSPersonBlackList( IN LPVOID lpUserID, 
                                                                     OUT LPNETDEV_OPERATE_LIST_S pstBlackList);

/**
* 修改访客黑名单信息
* @param [IN] lpUserID                  用户登录ID
* @param [IN] pstBlackListInfo          黑名单信息
* @return 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyACSPersonBlackList( IN LPVOID lpUserID, 
                                                                     IN LPNETDEV_ACS_PERSON_BLACKLIST_INFO_S pstBlackListInfo);

/**
* 获取指定访客黑名单信息
* @param [IN] lpUserID                  用户登录ID
* @param [IN] pstBlackListInfo          黑名单信息，其中udwBlackListID作为入参传入
* @param [INOUT] 
* @param [OUT] 
* @return 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetACSPersonBlackList( IN LPVOID lpUserID,
                                                                  INOUT LPNETDEV_ACS_PERSON_BLACKLIST_INFO_S pstBlackListInfo);

/**
* 获取访客黑名单列表
* @param [IN] lpUserID                                      用户登录ID
* @param [IN] pstFindCond                                   查询条件
* @param [OUT] pstResultInfo                                实际查询结果
* @return 查询句柄，返回NULL表示失败，其他作为NETDEV_FindNextACSPersonBlackList,NETDEV_FindCloseACSPersonBlackList等函数的参数
* @note 查询之后需要调用NETDEV_FindNextACSPersonBlackList和NETDEV_FindCloseACSPersonBlackList将数据获取完，否则会造成内存泄露
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindACSPersonBlackList(IN LPVOID lpUserID, 
                                                                     IN LPNETDEV_PAGED_QUERY_INFO_S pstQueryCond, 
                                                                     OUT LPNETDEV_BATCH_OPERATE_BASIC_S pstResultInfo);

/**
* 获取下一条记录
* @param [IN] lpFindHandle                              访客黑名单列表信息列表句柄
* @param [OUT] pstACSPermissionInfo                     访客黑名单列表信息
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextACSPersonBlackListInfo( IN LPVOID lpFindHandle,
                                                                           OUT LPNETDEV_ACS_PERSON_BLACKLIST_INFO_S pstBlackListInfo);
/**
* 关闭查询记录资源
* @param [IN] lpFindHandle                                 访客黑名单列表句柄
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseACSPersonBlackList(IN LPVOID lpFindHandle);

/**
* 门禁通道控制
* @param [IN] lpUserID                                      用户登录ID
* @param [IN] dwChannelID                                   通道号
* @param [IN] dwCommand                                     门禁通道控制命令可参考#NETDEV_DOORCTRL_ACTION_TYPE_E
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DoorCtrl(IN LPVOID lpUserID,
                                                     IN INT32 dwChannelID,
                                                     IN INT32 dwCommand);

/**
* 门禁通道批量控制
* @param [IN] lpUserID                                      用户登录ID
* @param [IN] dwCommand                                     门禁通道控制命令可参考#NETDEV_DOORCTRL_ACTION_TYPE_E
* @param [IN] pstBatchCtrlInfo                              批量控制信息
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DoorBatchCtrl(IN LPVOID lpUserID,
                                                          IN INT32 dwCommand,
                                                          INOUT LPNETDEV_OPERATE_LIST_S pstBatchCtrlInfo);

/**
* 门禁人员管理
* @param [IN] lpUserID                                      用户登录ID
* @param [IN] dwCommand                                     门禁人员管理命令可参考#NETDEV_ACS_PERSON_COMMOND_TYPE_E
* @param [INOUT] pstACSPersonInfo                           门禁人员信息
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ACSPersonCtrl(IN LPVOID lpUserID,
                                                          IN INT32 dwCommand,
                                                          INOUT LPNETDEV_ACS_PERSON_INFO_S pstACSPersonInfo);

/**
* 批量添加人员信息
* @param [IN] lpUserID                 用户登录ID
* @param [IN] pstACSPersonList         人员列表   其中单张图片大小为2M
* @param [OUT] pstResultList           返回列表
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddACSPersonList(IN LPVOID lpUserID, 
                                                             IN LPNETDEV_ACS_PERSON_LIST_S pstACSPersonList,
                                                             OUT LPNETDEV_XW_BATCH_RESULT_LIST_S  pstResultList);

/**
* 批量删除门禁人员信息
* @param [IN] lpUserID                                      用户登录ID
* @param [INOUT] pstBatchCtrlInfo                           批量控制信息
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeleteACSPersonList(IN LPVOID lpUserID,
                                                                INOUT LPNETDEV_FACE_BATCH_LIST_S pstBatchCtrlInfo);

/**
* 获取门禁人员信息列表
* @param [IN] lpUserID                                      用户登录ID
* @param [IN] pstQueryCond                                  门禁人员查询条件
* @param [OUT] pstResultInfo                                返回信息
* @return 查询句柄，返回NULL表示失败，其他作为NETDEV_FindNextACSPersonInfo,NETDEV_FindCloseACSPersonInfo等函数的参数
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindACSPersonList(IN LPVOID lpUserID, 
                                                                IN LPNETDEV_PERSON_QUERY_INFO_S pstQueryCond, 
                                                                OUT LPNETDEV_BATCH_OPERATE_BASIC_S pstResultInfo);

/**
* 获取下一个门禁人员信息
* @param [IN] lpFindHandle                                  门禁人员信息列表句柄
* @param [OUT] pstACSPersonInfo                             门禁人员信息
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextACSPersonInfo(IN LPVOID lpFindHandle,
                                                                  OUT LPNETDEV_ACS_PERSON_BASE_INFO_S pstACSPersonInfo);

/**
* 关闭门禁人员信息列表资源
* @param [IN] lpFindHandle                                      门禁人员信息列表句柄
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseACSPersonInfo(IN LPVOID lpFindHandle);

/**
* 获取指定人员所持门禁卡信息 
* @param [IN] lpUserID                                      用户登录ID
* @param [IN] udwACSPersonID                                门禁人员信息编号
* @param [OUT] pstACSPersonCardInfo                                门禁卡信息
* @return TRUE表示成功，其他表示失败，
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetACSPersonCardInfo(IN LPVOID lpUserID,
                                                                 IN UINT32 udwACSPersonID,
                                                                 OUT LPNETDEV_ACS_PERSON_CARD_INFO_S pstACSPersonCardInfo);


/**
* 绑定指定人员的门卡信息（即开卡）
* @param [IN] lpUserID                                      用户登录ID
* @param [IN] udwACSPersonID                                门禁人员信息编号
* @param [INOUT] pstACSPersonCardInfo                       门禁卡信息    udwCardID为输出参数
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddACSPersonCardInfo(IN LPVOID lpUserID,
                                                                 IN UINT32 udwACSPersonID,
                                                                 INOUT LPNETDEV_ACS_PERSON_CARD_INFO_S pstACSPersonCardInfo);

/**
* 删除指定人员的门卡信息(即退卡)
* @param [IN] lpUserID                                       用户登录ID
* @param [IN] udwACSPersonID                                      门禁人员信息编号
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeleteACSPersonCardInfo(IN LPVOID lpUserID,
                                                                    IN UINT32 udwACSPersonID);

/**
* 查询访客记录
* @param [IN] lpUserID                                      用户登录ID
* @param [IN] pstFindCond                                   访客记录查询条件
* @param [OUT] pstResultInfo                                访客记录实际总条数
* @return 查询句柄，返回NULL表示失败，其他作为NETDEV_FindNextACSVisitLog,NETDEV_FindCloseACSVisitLog等函数的参数
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindACSVisitLogList(IN LPVOID lpUserID,
                                                                  IN LPNETDEV_ALARM_LOG_COND_LIST_S pstFindCond,
                                                                  OUT LPNETDEV_BATCH_OPERATE_BASIC_S pstResultInfo);

/**
* 获取下一条访客记录
* @param [IN] lpFindHandle                              出入记录信息列表句柄
* @param [OUT] pstACSLogInfo                            出入记录信息
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextACSVisitLog(IN LPVOID lpFindHandle,
                                                                OUT LPNETDEV_ACS_VISIT_LOG_INFO_S pstACSLogInfo);

/**
* 关闭查询访客记录资源
* @param [IN] lpFindHandle                                  出入记录信息列表句柄
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseACSVisitLog(IN LPVOID lpFindHandle);

/**
* 下发第三方支付订单
* @param [IN]   lpUserID                     用户登录ID User login ID
* @param [IN]   pstPayOrder                  订单信息   Order information
* @param [OUT]  pstCost                      停车费用信息 Parking cost information
* @return TRUE表示成功，其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_IssuePayOrder(IN LPVOID lpUserID,
                                                          IN LPNETDEV_PARK_PAY_ORDER_INFO_S pstPayOrder,
                                                          OUT LPNETDEV_PARK_COST_S pstCost);

/**
* 接收停车场告警函数
* @param [IN] lpUserID                用户登录ID
* @param [IN] stParkAlarmInfo         上报信息
* @param [IN] lpUserData              用户数据
* @note
*/
typedef void(STDCALL *NETDEV_ParkEventMessCallBack_PF)(IN LPVOID lpUserID,
                                                       IN LPNETDEV_PARK_EVENT_INFO_S stParkAlarmInfo,
                                                       IN LPVOID lpUserData
                                                       );

/**
* 注册回调函数，接收停车场事件信息等
* @param [IN] lpUserID                     用户登录ID
* @param [IN] cbParkAlarmMessCallBack      接收数据回调函数
* @param [IN] lpUserData                   用户数据
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetParkEventCallBack(IN LPVOID lpUserID,
                                                                 IN NETDEV_ParkEventMessCallBack_PF cbParkAlarmMessCallBack,
                                                                 IN LPVOID lpUserData
                                                                 );

/**
* 批量获取停车场信息
* @param [IN]   lpUserID                     用户登录ID User login ID
* @param [OUT]  pstParkInfoList              停车场信息列表 Parkinglot information list
* @return TRUE表示成功，其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetParkInfoList(IN LPVOID lpUserID,
                                                            OUT LPNETDEV_PARK_INFO_LIST_S pstParkInfoList
                                                            );

/**
* 获取某停车场下所有出入口信息
* @param [IN]   lpUserID                     用户登录ID User login ID
* @param [IN]   udwParkID                    停车场ID Parkinglot ID
* @param [OUT]  pstParkEntranceInfoList      出入口信息列表 Parkinglot entrance information list
* @return TRUE表示成功，其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetParkEntranceInfoList(IN LPVOID lpUserID,
                                                                    IN UINT32 udwParkID,
                                                                    OUT LPNETDEV_PARK_ENTRANCE_INFO_LIST_S pstParkEntranceInfoList
                                                                    );

/**
* 获取停车场出入口所有车道信息
* @param [IN]   lpUserID                     用户登录ID User login ID
* @param [IN]   pstParkEntranceID            停车场出入口ID Parkinglot 、Entrance ID
* @param [OUT]  pstParkEntranceInfoList      出入口信息列表 Vehicle Lane Information list
* @return TRUE表示成功，其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetParkLaneInfoList(IN LPVOID lpUserID,
                                                                IN LPNETDEV_PARK_ENTRANCE_ID_S pstParkEntranceID,
                                                                OUT LPNETDEV_VEH_LANE_INFO_LIST_S pstVehicleLaneList
                                                                );


/*                   一体机模块结束行                           */
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#endif


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef NETDEV_WITH_SMART
/************************************************************************/
/*                  包含智能业务模块                              */
/************************************************************************/

/************************************************************************/
/*                     客流量统计                                 */
/************************************************************************/

/**
* 订阅智能事件
* @param [IN] lpUserID              用户登录ID
* @param [IN] pstSubscribeInfo      订阅信息
* @param [INOUT] pstSmartInfo       智能事件信息，成功返回订阅ID
* @return TRUE表示成功，其他表示失败
* @note   订阅前需要先调用NETDEV_SetAlarmCallBack接口注册回调函数
* -
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SubscribeSmart(IN LPVOID lpUserID, 
                                                           IN LPNETDEV_SUBSCRIBE_SMART_INFO_S pstSubscribeInfo,
                                                           INOUT LPNETDEV_SMART_INFO_S pstSmartInfo);

/**
* 取消订阅智能事件
* @param [IN] lpUserID            用户登录ID
* @param [IN] pstSmartInfo         智能事件
* @return TRUE表示成功，其他表示失败
* @note
* -
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_UnsubscribeSmart(IN LPVOID lpUserID,
                                                             IN LPNETDEV_SMART_INFO_S pstSmartInfo);

/**
 * 客流量统计消息回调函数  Callback function for passenger flow statistic message
 * @param [IN] lpUserID                用户登录句柄 User login ID
 * @param [IN] pstPassengerFlowData    客流量数据 Passenger flow data
 * @param [IN] lpUserData              用户数据   User data
 * @note 无 None
 */
typedef void (STDCALL *NETDEV_PassengerFlowStatisticCallBack_PF)(IN LPVOID lpUserID,
                                                                 IN LPNETDEV_PASSENGER_FLOW_STATISTIC_DATA_S pstPassengerFlowData,
                                                                 IN LPVOID lpUserData);

/**
 * 注册客流量统计上报回调函数 Register callback function that used for count passenger flow
 * @param [IN] lpUserID                 用户登录句柄  User login ID
 * @param [IN] cbPassengerFlowStatisticCallBack    需要注册的回调函数  Callback function which will be registered
 * @param [IN] lpUserData                用户数据  User data
 */
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetPassengerFlowStatisticCallBack(IN LPVOID lpUserID, 
                                                                              IN NETDEV_PassengerFlowStatisticCallBack_PF cbPassengerFlowStatisticCallBack, 
                                                                              IN LPVOID lpUserData);


/**
* 获取客流量统计 Obtain traffic statistic
* @param [IN]   lpUserID                用户登录句柄 User login ID
* @param [OUT]  pstPeopleCounter        客流量统计列表 People counting list
* @return TRUE表示成功,其他表示失败 TRUE means success, any other value indicates failure.
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetTrafficStatistic(IN LPVOID lpUserID,
                                                                IN LPNETDEV_TRAFFIC_STATISTICS_COND_S pstStatisticCond,
                                                                OUT LPNETDEV_TRAFFIC_STATISTICS_DATA_S pstTrafficStatistic);

/**
* 清零客流量人数统计 eset people counting
* @param [IN]   lpUserID             用户登录句柄 User login ID
* @param [IN]   dwChannelID          通道号 Channel ID
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ResetPassengerFlow(IN LPVOID lpUserID,
                                                               IN INT32 dwChannelID);


/**
* 获取客流量上报时间间隔
* @param [IN] lpUserID
* @param [IN] dwChannelID               通道号
* @param [OUT] pstReportTimeValue           客流量上报时间
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetTrafficStatisticReportTime(IN LPVOID lpUserID, 
                                                                          IN INT32 dwChannelID,
                                                                          OUT LPNETDEV_TRAFFIC_STATISTICS_REPORT_TIME_S pstReportTimeValue);

/**
* 开始客流量统计查询 
* @param [IN]  lpUserID                用户登录ID
* @param [IN]  pstStatisticCond        客流量统计结构体
* @param [OUT] pudwSearchID            客流量查询ID
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StartTrafficStatistic(IN LPVOID lpUserID,
                                                                  IN LPNETDEV_TRAFFIC_STATISTICS_COND_S pstStatisticCond,
                                                                  OUT UINT32* pudwSearchID);

/**
* 获取客流量统计信息列表
* @param [IN] lpUserID                用户登录ID
* @param [IN] udwSearchID             客流量查询ID
* @return 查询句柄(作为NETDEV_FindNextTrafficStatisticInfo, NETDEV_FindCloseTrafficStatisticInfo)，NULL表示失败
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindTrafficStatisticInfoList(IN LPVOID lpUserID,
                                                                           IN UINT32 udwSearchID);

/**
* 逐个查询获取到的客流量信息
* @param [IN] lpFindHandle                查找句柄
* @param [OUT] pstStatisticInfo           客流量查询信息
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextTrafficStatisticInfo(IN LPVOID lpFindHandle,
                                                                         OUT LPNETDEV_TRAFFIC_STATISTICS_INFO_S pstStatisticInfo);

/**
* 关闭查找，释放资源
* @param [IN] lpFindHandle
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseTrafficStatisticInfo(IN LPVOID lpFindHandle);

/**
* 获取客流量统计进度
* @param [IN]  lpUserID               用户登录ID
* @param [IN]  udwSearchID            客流量查询ID
* @param [OUT] pudwProgress           客流量统计进度
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetTrafficStatisticProgress(IN LPVOID lpUserID,
                                                                        IN UINT32 udwSearchID,
                                                                        OUT UINT32* pudwProgress);

/**
* 多通道开始客流量统计查询 
* @param [IN] lpUserID                用户登录ID
* @param [IN] pstStatisticCond        客流量统计结构体
* @param [OUT] pudwSearchID           客流量查询ID
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StartMultiTrafficStatistic(IN LPVOID lpUserID,
                                                                       IN LPNETDEV_MULTI_TRAFFIC_STATISTICS_COND_S pstStatisticCond,
                                                                       OUT UINT32* pudwSearchID);

/**
* 停止客流量查询
* @param [IN] lpUserID                        用户登录ID
* @param [IN] udwSearchID                     客流量查询ID
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StopTrafficStatistic(IN LPVOID lpUserID, 
                                                                 IN UINT32 udwSearchID);



/************************************************************************/
/*                     人脸抓拍                                   */
/************************************************************************/
/**
 * 人脸抓拍消息回调函数
 * @param [IN] lpUserID                用户登录句柄 User login ID
 * @param [IN] pstFaceSnapShotData     人脸抓拍数据
 * @param [IN] lpUserData              用户数据   User data
 * @note 无 None
 */
typedef void (STDCALL *NETDEV_FaceSnapshotCallBack_PF)(IN LPVOID lpUserID,
                                                       IN LPNETDEV_TMS_FACE_SNAPSHOT_PIC_INFO_S pstFaceSnapShotData,
                                                       IN LPVOID lpUserData);

/**
 * 注册人脸抓拍上报回调函数
 * @param [IN] lpUserID                 用户登录句柄  User login ID
 * @param [IN] cbFaceSnapshotCallBack    需要注册的回调函数  Callback function which will be registered
 * @param [IN] lpUserData                用户数据  User data
 */
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetFaceSnapshotCallBack(IN LPVOID lpUserID, 
                                                                    IN NETDEV_FaceSnapshotCallBack_PF cbFaceSnapshotCallBack, 
                                                                    IN LPVOID lpUserData);

/************************************************************************/
/*                     热度图                                     */
/************************************************************************/
/**
 * 热度图消息回调函数
 * @param [IN] lpUserID                用户登录句柄 User login ID
 * @param [IN] pstHeatMapData          热度图数据
 * @param [IN] lpUserData              用户数据   User data
 * @note 无 None
 */

typedef void (STDCALL *NETDEV_HeatMapCallBack_PF)(IN LPVOID lpUserID,
                                                  IN LPNETDEV_TMS_HEAT_MAP_INFO_S pstHeatMapData,
                                                  IN LPVOID lpUserData);

/**
 * 注册热度图上报回调函数
 * @param [IN] lpUserID                  用户登录句柄  User login ID
 * @param [IN] cbHeatMapCallBack         需要注册的回调函数  Callback function which will be registered
 * @param [IN] lpUserData                用户数据  User data
 */
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetHeatMapCallBack (IN LPVOID lpUserID, 
                                                                IN NETDEV_HeatMapCallBack_PF cbHeatMapCallBack, 
                                                                IN LPVOID lpUserData);


/************************************************************************/
/*                     车牌识别                                   */
/************************************************************************/
/**
* 车牌识别消息回调函数
* @param [IN] lpUserID                用户登录句柄 User login ID
* @param [IN] pstHeatMapData          车牌识别数据
* @param [IN] lpUserData              用户数据   User data
* @note 无 None
*/
typedef void (STDCALL *NETDEV_CarPlateCallBack_PF)(IN LPVOID lpUserID,
                                                   IN LPNETDEV_TMS_CAR_PLATE_INFO_S pstCarPlateData,
                                                   IN LPVOID lpUserData);

 /**
 * 注册车牌识别上报回调函数
 * @param [IN] lpUserID                  用户登录句柄  User login ID
 * @param [IN] cbCarPlateCallBack         需要注册的回调函数  Callback function which will be registered
 * @param [IN] lpUserData                用户数据  User data
 */
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetCarPlateCallBack(IN LPVOID lpUserID, 
                                                                IN NETDEV_CarPlateCallBack_PF cbCarPlateCallBack, 
                                                                IN LPVOID lpUserData
                                                                );

/**
* 接收告警消息的回调函数              Callback function to receive alarm information
* @param [IN] lpUserID                用户登录句柄 User login ID
* @param [IN] pstAlarmData            告警信息 Alarm information
* @param [IN] lpUserData              用户数据 User data
* @note
*/
typedef void(STDCALL *NETDEV_AlarmMessFGCallBack_PF)(IN LPVOID lpUserID,
                                                     IN LPNETDEV_PERSON_VERIFICATION_S pstAlarmData,
                                                     IN LPVOID    lpUserData
                                                     );

/**
* 注册速通门报警消息回调函数（同时回调登录ID,用以区分不同设备） Register callback function and receive alarm information, etc. (Call back login ID at the same time to distinguish different devices)
* @param [IN] lpUserID                   用户登录句柄 User login ID
* @param [IN] cbAlarmMessCallBack        回调函数 Callback function
* @param [IN] lpUserData                 用户数据 User data
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetAlarmFGCallBack(IN LPVOID lpUserID,
                                                               IN NETDEV_AlarmMessFGCallBack_PF cbAlarmMessCallBack,
                                                               IN LPVOID lpUserData
                                                               );

/************************************************************************/
/*                      超感信息                                  */
/************************************************************************/
/**
* 获取设备定位信息 Obtain geolocation info
* @param [IN]   lpUserID                用户登录ID User login ID
* @param [IN]   dwChannelID             通道号  Channel ID
* @param [OUT]  pstGPSInfo              定位信息 Geolocation info
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetGeolocationInfo(IN LPVOID lpUserID,
                                                               IN INT32 dwChannelID,
                                                               OUT LPNETDEV_GEOLACATION_INFO_S pstGPSInfo);

/**
* 获取wifi sniffer MAC地址信息 Obtain wifi sniffer mac list
* @param [IN]   lpUserID                用户登录ID User login ID
* @param [IN]   dwChannelID             通道号  Channel ID
* @param [OUT]  pstMACList              Wifi sniffer Mac地址数组 Wifi sniffer Mac address array
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetWifiSnifferMacList(IN LPVOID lpUserID,
                                                                  IN INT32 dwChannelID,
                                                                  OUT LPNETDEV_WIFISNIFFER_MAC_LIST_S pstMACList);

/**
* 获取设备电子罗盘信息 Obtain compass info
* @param [IN]   lpUserID                用户登录ID User login ID
* @param [IN]   dwChannelID             通道号  Channel ID
* @param [OUT]  pfCompassInfo           电子罗盘信息（与正北的夹角）Electronic compass info
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetCompassInfo(IN LPVOID lpUserID,
                                                           IN INT32 dwChannelID,
                                                           OUT FLOAT *pfCompassInfo);



/************************************************************************/
/*                     透明通道                                   */
/************************************************************************/
/**
 * @struct tagNETDEVAddressInfo
 * @brief IP地址(包含端口)
 * @attention 
 */
typedef struct tagNETDEVAddressInfo
{
    INT32                         dwAddressType;                /* IP地址类型0：IPv4 1：IPv6 */
    CHAR                          szIPAddress[NETDEV_LEN_64];   /* IP地址,范围[0,128] */
    INT32                         dwPort;                       /* 端口 [1025, 65535]*/

    BYTE                          byRes[512];               /* 保留字段 */
}NETDEV_ADDRESS_INFO_S, *LPNETDEV_ADDRESS_INFO_S;

/**
 * @struct tagNETDEVTransPortCfg
 * @brief 透明通道配置
 * @attention 
 */
typedef struct tagNETDEVSerialTransCfg
{
    BOOL                            bEnabled;                     /* 透明通道使能: 0不使能 1使能 */
    INT32                           dwSerialID;                 /* 透明通道对应的串口号 */
    INT32                           dwTransMode;                /* 传输模式：0 TCP 1 UDP */
    NETDEV_ADDRESS_INFO_S                stLocalAddress;             /* 本端地址（目的地址）*/
    NETDEV_ADDRESS_INFO_S                stPeerAddress;              /* 远端地址（源地址） */

    BYTE                            byRes[512];                 /* 保留字段 */
}NETDEV_SERIAL_TRANS_CFG_S, *LPNETDEV_SERIAL_TRANS_CFG_S;

/**
 * @struct tagNETDEVSerialTrans
 * @brief 透明通道结构体
 * @attention 
 */
typedef struct tagNETDEVSerialTrans
{
    INT32                                          dwChannelID;                   /* 透明通道号 */
    NETDEV_SERIAL_TRANS_CFG_S                      stTransPortCfg;             /* 透明通道配置信息 */

    BYTE        byRes[512];         /* 保留字段 */
}NETDEV_SERIAL_TRANS_S, *LPNETDEV_SERIAL_TRANS_S;

/**
 * @struct tagNETDEVUserDetailList
 * @brief 透明通道列表
 * @attention 目前，设备只有一个485串口，一个485串口只支持一个透明通道
 */
typedef struct tagNETDEVSerialTransList
{
    INT32                         dwSerialTransNum;         /* 透明通道数 */
    LPNETDEV_SERIAL_TRANS_S       pstSerialTransList;       /* 各透明通道配置列表[0,1], 当Num为0时该字段可选 malloc分配内存*/

    BYTE                          byRes[512];               /* 保留字段 */
}NETDEV_SERIAL_TRANS_LIST_S, *LPNETDEV_SERIAL_TRANS_LIST_S;

/**
 * @struct tagNETDEVSeriaParam
 * @brief 串口参数
 * @attention 
 */
typedef struct tagNETDEVSeriaParam
{
    INT32                                       dwBaudRate;                /* 串口波特率。范围中的特殊值，范围：[1200,115200]，单位: bps。 */
    INT32                                       dwDataBit;                 /* 数据位，范围[5-8] */
    INT32                                       dwFlowCtrl;                /* 流控制0：无 1：软流控 2：硬流控 */
    INT32                                       dwParity;                  /* 校验位0：无校验 1：奇校验 2：偶校验 */
    INT32                                       dwStopBit;                 /* 停止位 */

    BYTE                                        byRes[512];         /* 保留字段 */
}NETDEV_SERIAL_PARAM_S, *LPNETDEV_SERIAL_PARAM_S;

/**
 * @struct tagNETDEVSerialPort
 * @brief 串口配置信息
 * @attention 
 */
typedef struct tagNETDEVSerialPort
{
    INT32                                       dwChannelID;                /* 串口号 */
    INT32                                       dwMode;                     /* 串口工作模式：1：云台控制 2：透明通道 */
    NETDEV_SERIAL_PARAM_S                       stSerialParam;              /* 串口参数 */

    BYTE        byRes[512];         /* 保留字段 */
}NETDEV_SERIAL_PORT_S, *LPNETDEV_SERIAL_PORT_S;


/**
 * @struct tagNETDEVSerialPorts
 * @brief 串口信息
 * @attention 
 */
typedef struct tagNETDEVSerialPorts
{
    INT32                         dwSerialPortNum;          /* 串口数 */
    LPNETDEV_SERIAL_PORT_S        pstSerialPortList;        /* 各串口配置列表 当dwSerialPortNum为0时该字段可选; dwSerialPortNum非0动态分配内存 */

    BYTE                          byRes[512];               /* 保留字段 */
}NETDEV_SERIAL_PORTS_S, *LPNETDEV_SERIAL_PORTS_S;

/**
 * @struct tagNETDEVUserDetailList
 * @brief 建立透明通道参数
 * @attention 
 */
typedef struct tagNETDEVSerialStart
{
    INT32       dwSerialPort;               /* 串口类型：1- 232串口，2- 485串口#当前仅支持485 */
    INT32       dwSerialNum;                /* 串口编号 */

    BYTE        byRes[512];                 /* 保留字段 */
}NETDEV_SERIAL_START_S, *LPNETDEV_SERIAL_START_S;



/**
 * @struct tagNETDEVReconnectDeviceInfo
 * @brief 重连媒体流信息 结构体定义 Reconnect media information Structure definition
 * @attention 无  
 */
#if 0
typedef struct tagNETDEVReconnectMediaInfo
{
	LPVOID lpUserID;                         /*用户ID*/ 
	LPVOID hPlayWnd;                         /*播放句柄*/
	NETDEV_PIC_UPLOAD_PF pfnPicDataCBFun;    /*回调指针*/
	NETDEV_SOURCE_DATA_CALLBACK_PF pfnPlayDataCallBack;
	LPVOID lpUserData;                       /*用户数据*/    
	BOOL   bTMS;                             /*是否开启TMS服务*/  
    CHAR   szReTranIP[64];                   /*本地IP*/  
	LPVOID lpOldMedia;                       /*老流媒体句柄*/ 
	LPVOID lpNewMedia;                       /*新流媒体句柄*/ 
	LPVOID lpCurMedia;                       /*当前流媒体句柄*/ 

}NETDEV_RECONNECT_MEDIA_INFO_S, *LPNETDEV_RECONNECT_MEDIA_INFO_S;
#endif


/**
* 透明通道接受数据回调函数
* @param [IN] lpSerialHandle      建立透明通道时返回句柄
* @param [IN] dwChannelID         通道号
* @param [IN] pRecvDataBuffer     存放数据的缓冲区指针
* @param [IN] ulBufSize           数据大小
* @param [IN] lpUserData          用户设置参数
* @return 无. None.
*/
typedef void(STDCALL *NETDEV_SerialDataCallBack_PF)(IN LPVOID lpSerialHandle,
                                                    IN INT32  dwChannelID,
                                                    IN CHAR*  pRecvDataBuffer,
                                                    IN INT64  ulBufSize,
                                                    IN LPVOID lpUserData);

/**
* 建立透明通道
* @param [IN]   lpUserID               用户登录
* @param [IN]   lpInBuffer             输入缓冲区，指向透明通道串口参数,参考NETDEV_SERIAL_START_S
* @param [IN]   ulInBufferSize         输入缓冲区大小
* @param [IN]   cbSerialDataCallBack   回调函数 
* @param [IN]   lpUserData             用户数据 User data
* @return 返回的透明通道句柄,返回 0 表示失败,其他值表示返回的透明通道句柄值.
* @note 
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_SerialStart(IN LPVOID lpUserID,
                                                          IN LPVOID lpInBuffer,
                                                          IN INT64  ulInBufferSize,
                                                          IN NETDEV_SerialDataCallBack_PF cbSerialDataCallBack,
                                                          IN LPVOID lpUserData);

/**
* 通过透明通道向设备串口发送数据
* @param [IN]   lpSerialHandle         建立透明通道时返回句柄,NETDEV_SerialStart的返回值
* @param [IN]   dwChannelID            串口号
* @param [IN]   pSendBuf               发送数据的缓冲区指针
* @param [IN]   ulBufSize              缓冲区的大小
* @return TRUE表示成功,其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SerialSend(IN LPVOID lpSerialHandle,
                                                       IN INT32 dwChannelID,
                                                       IN CHAR*  pSendBuf,
                                                       IN INT64  ulBufSize);

/**
* 断开透明通道
* @param [IN]   lpSerialHandle         建立透明通道时返回句柄,NETDEV_SerialStart的返回值 
* @return TRUE表示成功,其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SerialStop(IN LPVOID lpSerialHandle);


/************************************************************************/
/*                     人脸识别                                   */
/************************************************************************/


/**
* 设置本地监听端口
* @param [IN] dwListenType      监听功能类型，具体参考枚举NETDEV_LISTEN_TYPE_E
* @param [IN] dwPort            配置端口
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetListenPort(IN INT32 dwListenType,
                                                          IN INT32 dwPort);

/**
* 接收人脸识别告警消息的回调函数 Callback function to receive alarm information
* @param [IN] lpUserID                用户登录ID
* @param [IN] pstFaceAlarmReportInfo  上报信息 Alarm information
* @param [IN] lpBuf                   缓冲区指针 Pointer to buffer
* @param [IN] dwBufLen                告警信息对应结构体的长度 Length of structure for alarm information
* @param [IN] dwBufLen                用户数据 User data
* @note   在回调函数中只能做拷贝数据动作，否则若耗时过长，容易造成告警上报阻塞、内存消耗过大等问题
*/
typedef void(STDCALL *NETDEV_FaceAlarmMessCallBack_PF)(IN LPVOID lpUserID,
                                                       IN LPNETDEV_FACE_RECORD_SNAPSHOT_INFO_S pstFaceAlarmReportInfo,
                                                       IN LPVOID    lpBuf,
                                                       IN INT32     dwBufLen,
                                                       IN LPVOID    lpUserData
                                                       );

/**
* 注册人脸识别报警消息回调函数
* Register callback function and receive alarm information, etc.
* @param [IN] lpUserID                  用户登录ID User login ID
* @param [IN] cbFaceAlarmMessCallBack   回调函数 Callback function
* @param [IN] lpUserData                用户数据 User data
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetFaceAlarmCallBack(IN LPVOID lpUserID,
                                                                 IN NETDEV_FaceAlarmMessCallBack_PF cbFaceAlarmMessCallBack,
                                                                 IN LPVOID lpUserData
                                                                 );


/**
* 创建人员库信息                                Create Person libraries information
* @param [IN]  lpUserID                         用户登录句柄 User login ID
* @param [IN]  pstLibraryList                   人员库信息 Person library information
* @param [OUT]  *pudwID                         创建库生成的库ID create library generated libry ID
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_CreatePersonLibInfo(IN LPVOID lpUserID, 
                                                                IN LPNETDEV_LIB_INFO_S pstPersonLibInfo, 
                                                                OUT UINT32 *pudwID);

/**
* 修改人员库信息  Modify Person libraries information
* @param [IN]  lpUserID         用户登录句柄 User login ID
* @param [IN]  pstLibraryList   人员库信息 Person library information
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyPersonLibInfo(IN LPVOID lpUserID, 
                                                                IN LPNETDEV_PERSON_LIB_LIST_S pstPersonLibList);


/**
* 删除指定的人员库    Delete designated Person libraries information
* @param [IN]  lpUserID     用户登录句柄 User login ID
* @param [IN]  udwPersonLibID   人员库ID Person library ID
* @param [IN]  pstFlagInfo   人员库删除标志
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeletePersonLibInfo(IN LPVOID lpUserID, 
                                                                IN UINT32 udwPersonLibID,
                                                                IN LPNETDEV_DELETE_DB_FLAG_INFO_S pstFlagInfo);

/**
* 新增指定的人员信息 Add designated Person information
* @param [IN]  lpUserID             用户登录句柄 User login ID
* @param [IN]  udwPersonLibID       人员库ID Person library ID
* @param [IN]  pstPersonInfoList    人员信息列表 Person information list
* @param [OUT]  pstPersonResultList 人员信息结果列表 Person information result list
* @return TRUE表示成功,其他表示失败
* @note pstPersonResultList->pstPersonList need malloc by caller
        keep pstPersonResultList->udwNum == pstPersonInfoList->udwNum
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddPersonInfo(IN LPVOID lpUserID, 
                                                          IN UINT32 udwPersonLibID, 
                                                          IN LPNETDEV_PERSON_INFO_LIST_S pstPersonInfoList,
                                                          INOUT LPNETDEV_PERSON_RESULT_LIST_S pstPersonResultList);

/**
* 修改指定的人员信息 Modify designated Person information
* @param [IN]  lpUserID             用户登录句柄 User login ID
* @param [IN]  udwPersonLibID       人员库ID Person library ID
* @param [IN]  pstPersonInfoList    人员信息列表 Person information list
* @param [OUT]  pstPersonResultList 人员信息结果列表 Person information result list
* @return TRUE表示成功,其他表示失败
* @note pstPersonResultList->pstPersonList need malloc by caller
        keep pstPersonResultList->udwNum == pstPersonInfoList->udwNum
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyPersonInfo(IN LPVOID lpUserID, 
                                                             IN UINT32 udwPersonLibID, 
                                                             IN LPNETDEV_PERSON_INFO_LIST_S pstPersonInfoList, 
                                                             INOUT LPNETDEV_PERSON_RESULT_LIST_S pstPersonResultList);

/**
* 批量删除人员信息
* @param [IN] lpUserID             用户登录ID
* @param [IN] udwPersonLibID       人脸库ID
* @param [IN] pstIDList            人脸成员列表
* @param [OUT] pstBatchList        批量操作返回信息
* @return 查询句柄,返回0表示失败，
* @note 仅VMS支持
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeletePersonInfoList(IN LPVOID lpUserID, 
                                                                 IN UINT32 udwPersonLibID, 
                                                                 IN LPNETDEV_BATCH_OPERATE_MEMBER_LIST_S pstIDList, 
                                                                 OUT LPNETDEV_BATCH_OPERATOR_LIST_S pstResutList);


/**
* 删除指定的人员信息 Delete designated Person information
* @param [IN]  lpUserID         用户登录句柄 User login ID
* @param [IN]  udwPersonLibID   人员库ID Person library ID
* @param [IN]  udwPersonID      人员ID Person ID
* @param [IN]  udwLastChange    最后修改时间 Last modify time
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeletePersonInfo(IN LPVOID lpUserID, 
                                                             IN UINT32 udwPersonLibID, 
                                                             IN UINT32 udwPersonID, 
                                                             IN UINT32 udwLastChange);

/**
* 查询所有人脸布控任务
* @param [IN]  lpUserID              用户登录ID
* @param [IN]  udwChannelID          通道ID，仅NVR查询通道布控信息时使用
* @param [IN]  pstQueryInfo          查询条件，仅NVR支持
* @return 查询句柄,返回0表示失败，其他值作为NETDEV_FindNextPersonMonitorInfo、NETDEV_FindCloseMonitorInfo等函数的参数。
* @note    
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindPersonMonitorList(IN LPVOID lpUserID, 
                                                              IN UINT32 udwChannelID, 
                                                              IN LPNETDEV_MONITOR_QUERY_INFO_S pstQueryInfo);

/**
* 逐个获取查找到的 布控任务 信息
* @param [IN]  lpFindHandle            查找句柄 
* @param [OUT] pstMonitorInfo          保存 布控任务 信息的指针
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*.      返回NETDEV_E_NEED_MORE_MEMORY说明分配不足，并返回实际应申请的内存大小；涉及的数据：pstMonitorInfo->udwLinkStrategyNum、
         pstMonitorInfo->stMonitorRuleInfo.udwChannelNum
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextPersonMonitorInfo(IN LPVOID lpFindHandle, 
                                                                OUT LPNETDEV_MONITION_INFO_S pstMonitorInfo);

/**
* 关闭查找 布控任务，释放资源
* @param [IN] lpFindHandle  文件查找句柄 
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindClosePersonMonitorList(IN LPVOID lpFindHandle);


/**
* 新增单个人脸布控任务 
* @param [IN]    lpUserID                      用户登录ID 
* @param [INOUT]    pstMonitorInfo                保存 布控任务 信息的指针  成功返回布控任务序号
* @param [INOUT] pstMonitorResultInfo          添加布控后设备返回的实际布控结果
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note  pstMonitorResultInfo->udwChannelNum不应小于pstMonitorInfo stMonitorRuleInfo.udwChannelNum
         pstMonitorResultInfo->udwChannelNum must be Greater thanpstMonitorInfo stMonitorRuleInfo.udwChannelNum    
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddPersonMonitorInfo(IN LPVOID lpUserID, 
                                                                 INOUT LPNETDEV_MONITION_INFO_S pstMonitorInfo,
                                                                 INOUT LPNETDEV_MONITOR_RESULT_INFO_S pstMonitorResultInfo);

/**
* 删除单个人脸布控任务 
* @param [IN]  lpUserID                      用户登录ID 
* @param [IN]  udwID                          布控ID
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeletePersonMonitorInfo(IN LPVOID lpUserID, IN UINT32 udwID);

/**
* 查询单个人脸布控任务配置信息
* @param [IN]  lpUserID                    用户登录ID 
* @param [INOUT] pstMonitorInfo            保存 布控任务 信息的指针，输入布控ID，成功返回配置信息
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note pudwMonitorChlIDList由上层申请；接口失败(NETDEV_E_NEED_MORE_MEMORY)时通过udwChannelNum判断是否内存申请过小
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetPersonMonitorRuleInfo(IN LPVOID lpUserID, 
                                                               INOUT LPNETDEV_MONITION_INFO_S pstMonitorInfo);


/**
* 设置单个人脸布控任务配置信息
* @param [IN]  lpUserID                    用户登录ID 
* @param [IN] pstMonitorInfo               保存 布控任务 信息的指针
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetPersonMonitorRuleInfo(IN LPVOID lpUserID, 
                                                               IN LPNETDEV_MONITION_INFO_S pstMonitorInfo);


/**
* 查询所有人员库的容量信息
* @param [IN]  lpUserID     用户登录句柄 User login ID
* @param [IN]   dwTimeOut              连接超时时间
* @param [OUT]  pstCapacityList   所有人员库的容量信息
* @return TRUE表示成功,其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetPersonLibCapacity(IN LPVOID lpUserID,
                                                                 IN INT32 dwTimeOut,
                                                                 OUT LPNETDEV_PERSON_LIB_CAP_LIST_S pstCapacityList);

/**
* 条件查询人员信息
* @param [IN] lpUserID 用户登录句柄
* @param [IN] udwPersonLibID 人员库ID
* @param [IN] pstQueryInfo 人脸信息查询条件
* @param [OUT] pstQueryResultInfo 人脸信息查询返回结果
* @return 查询句柄,返回0表示失败，其他值作为NETDEV_FindNextPersonInfo、NETDEV_FindClosePersonInfoList等函数的参数
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindPersonInfoList(IN LPVOID lpUserID, 
                                                                 IN UINT32 udwPersonLibID,
                                                                 IN LPNETDEV_PERSON_QUERY_INFO_S pstQueryInfo, 
                                                                 OUT LPNETDEV_BATCH_OPERATE_BASIC_S pstQueryResultInfo);

/**
* 逐个获取查找到的 人员 信息
* @param [IN]  lpFindHandle            查找句柄 
* @param [OUT] pstPersonInfo          保存 人员信息的指针
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextPersonInfo(IN LPVOID lpFindHandle, 
                                                               OUT LPNETDEV_PERSON_INFO_S pstPersonInfo);

/**
* 关闭查找 人员信息，释放资源
* @param [IN] lpFindHandle  文件查找句柄 
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindClosePersonInfoList(IN LPVOID lpFindHandle);

/**
* 接收告警消息的回调函数  Callback function to receive alarm information
* @param [IN] lpUserID              用户登录句柄 User login ID
* @param [IN] pstAlarmInfo          告警数据 Alarm Data
* @param [IN] pstAlarmPersonData    人脸告警的数据 Data of Person Alarm
* @param [IN] lpUserData            用户数据 User data
* @note
*/
typedef void(STDCALL *NETDEV_PersonAlarmMessCallBack_PF)(IN LPVOID lpUserID,
                                                         IN LPNETDEV_PERSON_EVENT_INFO_S pstAlarmData,
                                                         IN LPVOID    lpUserData
                                                         );

/**
* 注册速人脸报警消息回调函数（同时回调登录ID,用以区分不同设备） Register callback function and receive alarm information, etc. (Call back login ID at the same time to distinguish different devices)
* @param [IN] lpUserID                   用户登录句柄 User login ID
* @param [IN] cbAlarmMessCallBack        回调函数 Callback function
* @param [IN] lpUserData                 用户数据 User data
* @param [IN] pstFGSubInfo               速通门订阅信息 Speed door subscription information
* @param [OUT] pstFGSubSuccInfo          速通门订阅信息成功返回信息 Subscription succ return information 
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetPersonAlarmCallBack(IN LPVOID lpUserID,
                                                                   IN NETDEV_PersonAlarmMessCallBack_PF cbAlarmMessCallBack,
                                                                   IN LPVOID lpUserData
                                                                   );

/**
* 接收结构化告警消息的回调函数        Callback function to receive alarm information
* @param [IN] lpUserID                用户登录句柄 User login ID
* @param [IN] pstAlarmInfo            告警信息 Alarm information
* @param [IN] pstAlarmData            告警数据 Alarm data
* @param [IN] lpUserData              用户数据 User data
* @note
*/
typedef void(STDCALL *NETDEV_StructAlarmMessCallBack_PF)(IN LPVOID lpUserID,
														 IN LPNETDEV_STRUCT_ALARM_INFO_S pstAlarmInfo,
														 IN LPNETDEV_STRUCT_DATA_INFO_S pstAlarmData,
														 IN LPVOID    lpUserData
														 );

/**
* 注册结构化报警消息回调函数（同时回调登录ID,用以区分不同设备） Register callback function and receive alarm information, etc. (Call back login ID at the same time to distinguish different devices)
* @param [IN] lpUserID                   用户登录句柄 User login ID
* @param [IN] cbAlarmMessCallBack        回调函数 Callback function
* @param [IN] lpUserData                 用户数据 User data
* @return TRUE表示成功,其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetStructAlarmCallBack(IN LPVOID lpUserID,
																   IN NETDEV_StructAlarmMessCallBack_PF cbAlarmMessCallBack,
																   IN LPVOID lpUserData
																   );


/**
* 批量删除人脸布控任务 
* @param [IN]  lpUserID                      用户登录ID 
* @param [INOUT] pstResultList               返回信息列表  输入布控要删除的所有布控ID
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_BatchDeletePersonMonitorInfo(IN LPVOID lpUserID, 
																		 INOUT LPNETDEV_BATCH_OPERATOR_LIST_S pstResultList);

/**
* LAPI告警订阅
* @param [IN] lpUserID                                      用户登录句柄
* @param IN LPNETDEV_LAPI_SUB_INFO_S   pstSubInfo           告警订阅请求
* @param OUT LPNETDEV_SUBSCRIBE_SUCC_INFO_S pstSubSuccInfo  订阅成功返回信息
* @return TRUE表示成功,其他表示失败 
* @note Type字段指定订阅类型
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SubscibeLapiAlarm(IN LPVOID lpUserID,
                                                              IN LPNETDEV_LAPI_SUB_INFO_S pstSubInfo,
                                                              OUT LPNETDEV_SUBSCRIBE_SUCC_INFO_S pstSubSuccInfo
                                                              );

/**
* 取消LAPI告警订阅
* @param [IN] lpUserID               用户登录句柄
* @param [IN] UINT32 udwID           告警订阅ID
* @return TRUE表示成功,其他表示失败 
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_UnSubLapiAlarm(IN LPVOID lpUserID, IN UINT32 udwID);

/**
* 查询硬盘模式 
* @param [IN] lpUserID              用户登录ID
* @param [OUT] pudwDiskMode         硬盘模式
* @return TRUE表示成功，其他表示失败
* @note
* -
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetDiskMode(IN LPVOID lpUserID, 
                                                        OUT UINT32 * pudwDiskMode);

/**
* 设置硬盘模式 
* @param [IN] lpUserID            用户登录ID
* @param [IN] udwDiskMode         硬盘模式  参见枚举NETDEV_DISK_MODE_TYPE_E
* @return TRUE表示成功，其他表示失败
* @note
* -
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetDiskMode(IN LPVOID lpUserID,
                                                        IN UINT32 udwDiskMode);

/**
* 查询所有已创建的人员库信息 Get all Person libraries information
* @param [IN]  lpUserID         用户登录句柄 User login ID
* @return 查询句柄,返回0表示失败，其他值作为NETDEV_FindNextPersonLibInfo、NETDEV_FindClosePersonLibList等函数的参数。
* @note无
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindPersonLibList(IN LPVOID lpUserID);

/**
* 逐个获取查找到的 人脸库 信息
* @param [IN]  lpFindHandle           查找句柄 
* @param [OUT] pstPersonLibInfo       保存 人脸库 信息的指针
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextPersonLibInfo(IN LPVOID lpFindHandle, 
                                                                  OUT LPNETDEV_LIB_INFO_S pstPersonLibInfo);

/**
* 关闭查找 人脸库，释放资源
* @param [IN] lpFindHandle  文件查找句柄 
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindClosePersonLibList(IN LPVOID lpFindHandle);

/**
* 查询人脸识别记录
* @param [IN]  lpUserID                   用户登录ID 
* @param [IN]  pstFindCond                查询条件
* @param [OUT] pstResultInfo              人脸识别记录信息
* @return 查询句柄,返回0表示失败，其他值作为NETDEV_FindFaceNextRecordDetail、NETDEV_FindFaceCloseRecordDetail等函数的参数。
* @note     查询完成之后需要保证调用NETDEV_FindFaceNextRecordDetail将所有数据取出，否则会造成内存泄露
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindFaceRecordDetailList(IN LPVOID lpUserID,
                                                                       IN LPNETDEV_ALARM_LOG_COND_LIST_S pstFindCond,
                                                                       OUT LPNETDEV_SMART_ALARM_LOG_RESULT_INFO_S  pstResultInfo);

/**
* 逐个获取查找到的 人脸识别记录信息
* @param [IN]  lpFindHandle                    查找句柄 
* @param [OUT] pstRecordInfo                   保存 人脸识别记录 信息的指针
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextFaceRecordDetail(IN LPVOID lpFindHandle,
                                                                     OUT LPNETDEV_FACE_RECORD_SNAPSHOT_INFO_S pstRecordInfo);

/**
* 关闭查找 人脸识别记录，释放资源
* @param [IN] lpFindHandle  文件查找句柄 
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseFaceRecordDetail(IN LPVOID lpFindHandle);

/**
* 查询单个人脸识别记录的人脸图片信息
* @param [IN]  lpUserID                    用户登录ID
* @param [IN] udwRecordID                  人脸识别告警记录ID
* @param [IN] udwFaceImageType              人脸通行记录类型
* @param [OUT] pstFileInfo                 人脸图片信息
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note pstFileInfo中人脸图片内存由使用者维护，入参时需指定udwSize大小，内存不够调用失败时，udwSize会返回实际需要大小
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetFaceRecordImageInfo(IN LPVOID lpUserID,
                                                                   IN UINT32 udwRecordID,
                                                                   IN UINT32 udwFaceImageType,
                                                                   INOUT LPNETDEV_FILE_INFO_S pstFileInfo);

/**
* 获取系统图片信息
* @param [IN]   lpUserID                     用户登录ID User login ID
* @param [IN]   pszURL                       图片URL picture url
* @param [IN]   udwSize                      加密前数据大小
* @param [OUT]   pszdata                     图片数据(需动态分配内存) picture data
* @return TRUE表示成功，其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetSystemPicture(IN  LPVOID lpUserID,
                                                             IN  CHAR*  pszURL,
                                                             IN  UINT32 udwSize,
                                                             OUT CHAR*  pszdata);



/*                   智能业务模块结束行                        */
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#endif


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef NETDEV_WITH_XW
/************************************************************************/
/*                  包含电视墙、拼接模块                          */
/************************************************************************/

/**
* 获取能力集
* @param [IN]  lpUserID                     用户登录ID
* @param [OUT] pstCapInfo                   电视墙信息结构体指针
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_GetCapability(IN LPVOID lpUserID, 
                                                             OUT LPNETDEV_XW_CAP_INFO_S pstCapInfo);

/**
* 获取视频通道信息列表
* @param [IN]  lpUserID                     用户登录ID
* @param [INOUT] pstChannelsList            编码通道信息，通道数量为输入信息，通道信息为输出信息，内存由调用者分配
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_GetChannelsInfoList(IN LPVOID lpUserID,
                                                                   INOUT LPNETDEV_XW_CHANNELS_LIST_S pstChannelsList);


/**
* 获取最新摘要字
* @param [IN]  lpUserID                     用户登录ID
* @param [OUT] pudwLastChange               摘要字，配置改动会更新摘要字，由设备端生成
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_GetLastChange(IN LPVOID lpUserID, 
                                                             OUT UINT32 *pudwLastChange);


/**
* 获取本地编码通道数量
* @param [IN]  lpUserID                     用户登录ID
* @param [OUT] pstChannels                    通道数量
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_GetChannelsNum(IN LPVOID lpUserID, 
                                                              OUT LPNETDEV_XW_CHANNELS_NUM_S pstChannels);

/**
* 清空所有配置
* @param [IN]  lpUserID                     用户登录ID
* @return TRUE表示成功，其他表示失败
* @note（所有配置包括电视墙、场景、窗口、虚拟LED、底图绑定关系、业务绑定关系）
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_DeleteAllCfg(IN LPVOID lpUserID);

/**
* 获取电视墙配置列表
* @param [IN] lpUserID                      用户登录ID
* @return 查询句柄,返回NULL表示失败，其他值作为NETDEV_XW_FindNextTVWallCfg、NETDEV_XW_FindCloseTVWallCfg等函数的参数。
* @note 
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_XW_FindTVWallCfgList(IN LPVOID lpUserID);

/**
* 逐个获取查找到的电视墙配置信息
* @param [IN]  lpFindHandle                 查找句柄 
* @param [OUT] pstTVWallCfg                 保存电视墙配置信息的指针 
* @return TRUE表示成功，其他表示失败
* @note 返回失败说明查询结束
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_FindNextTVWallCfg(IN LPVOID lpFindHandle,
                                                                 OUT LPNETDEV_XW_TVWALL_CFG_S pstTVWallCfg);

/**
* 关闭查找 窗口视频源信息，释放资源
* @param [IN] lpFindHandle                  文件查找句柄 File search handle
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_FindCloseTVWallCfg(IN LPVOID lpFindHandle);

/**
* 获取单个电视墙布局配置信息
* @param [IN]    lpUserID        用户登录ID
* @param [IN]    udwTVWallID      电视墙ID
* @param [INOUT]   pstTVWallCfg    电视墙信息结构体指针,若存在电视墙编码字段，则需输入szTVWallCode
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_GetTVWallCfg(IN LPVOID lpUserID,
                                                            IN UINT32 udwTVWallID,
                                                            INOUT LPNETDEV_XW_TVWALL_CFG_S pstTVWallCfg);

/**
* 创建电视墙配置
* @param [IN]  lpUserID                     用户登录ID
* @param [INOUT] pstTVWallCfg               电视墙信息结构体指针,设备端创建成功后返回电视墙ID、资源序号OrderNo
* @param [OUT]   pudwLastChange             摘要字，配置改动会更新摘要字，由设备端生成
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_CreateTVWallCfg(IN LPVOID lpUserID, 
                                                               INOUT LPNETDEV_XW_TVWALL_CFG_S pstTVWallCfg,
                                                               OUT UINT32 *pudwLastChange);

/**
* 修改电视墙配置
* @param [IN]  lpUserID                     用户登录ID
* @param [IN]  pstTVWallCfg                 电视墙信息结构体指针，结构体中需要输入电视墙ID
* @param [OUT] pudwLastChange               摘要字，配置改动会更新摘要字，由设备端生成
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_ModifyTVWallCfg(IN LPVOID lpUserID,
                                                               IN LPNETDEV_XW_TVWALL_CFG_S pstTVWallCfg,
                                                               OUT UINT32 *pudwLastChange);

/**
* 删除电视墙配置
* @param [IN]  lpUserID                     用户登录ID
* @param [IN]  udwTvWallID                  电视墙ID
* @param [OUT] pudwLastChange               摘要字，配置改动会更新摘要字，由设备端生成
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_DeleteTVWallCfg(IN LPVOID lpUserID, 
                                                               IN UINT32 udwTvWallID,
                                                               OUT UINT32 *pudwLastChange);

/**
* 获取场景配置列表
* @param [IN] lpUserID                      用户登录ID
* @param [IN] udwTvWallID                   电视墙ID
* @return 查询句柄,返回NULL表示失败，其他值作为NETDEV_XW_FindNextSceneCfg、NETDEV_XW_FindCloseSceneCfg等函数的参数。
* @note 
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_XW_FindSceneCfgList(IN LPVOID lpUserID,
                                                                  IN UINT32 udwTvWallID);

/**
* 逐个获取查找到的场景配置信息
* @param [IN]  lpFindHandle                 查找句柄 
* @param [OUT] pstSceneShortInfo            保存简要场景信息的指针 
* @return TRUE表示成功，其他表示失败
* @note 返回失败说明查询结束
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_FindNextSceneCfg(IN LPVOID lpFindHandle,
                                                                OUT LPNETDEV_XW_SCENE_INFO_BASIC_S pstSceneShortInfo);

/**
* 关闭查找场景，释放资源
* @param [IN] lpFindHandle                  文件查找句柄
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_FindCloseSceneCfg(IN LPVOID lpFindHandle);

/**
* 获取场景信息
* @param [IN]  lpUserID                     用户登录ID
* @param [IN]  udwSceneID                   场景ID
* @param [INOUT] pstSceneDetailInfo         场景详细信息结构体指针,若存在电视墙编码字段，则输入szTVWallCode
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_GetSceneInfo(IN LPVOID lpUserID, 
                                                            IN UINT32 udwSceneID,
                                                            INOUT LPNETDEV_XW_SCENE_INFO_DETAIL_S pstSceneDetailInfo);


/**
* 创建单个场景信息
* @param [IN]  lpUserID                     用户登录ID
* @param [IN]  udwTvWallID                  电视墙ID
* @param [INOUT] pstSceneBase               输入场景名称，输出场景ID 、资源序号OrderNo
* @param [OUT] pudwLastChange               摘要字，配置改动会更新摘要字，由设备端生成
* @return TRUE表示成功，其他表示失败
* @note   输入场景名称新建场景，场景的其他数据为当前场景的数据
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_CreateSceneInfo(IN LPVOID lpUserID, 
                                                               IN UINT32 udwTvWallID,
                                                               INOUT LPNETDEV_XW_SCENE_INFO_BASE_S pstSceneBase,
                                                               OUT UINT32 *pudwLastChange);

/**
* 修改场景信息
* @param [IN]  lpUserID                     用户登录ID
* @param [IN]  udwTvWallID                  电视墙ID
* @param [INOUT]  pstSceneModifyInfo           修改信息
* @param [OUT] pudwLastChange               摘要字，配置改动会更新摘要字，由设备端生成
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_ModifySceneInfo(IN LPVOID lpUserID,
                                                               IN UINT32 udwTvWallID,
                                                               INOUT LPNETDEV_XW_SCENE_MODIFY_INFO_S pstSceneModifyInfo,
                                                               OUT UINT32 *pudwLastChange);

/**
* 删除场景信息
* @param [IN]  lpUserID                     用户登录ID
* @param [IN]  udwTvWallID                  电视墙ID
* @param [IN]  udwSceneID                   场景ID
* @param [OUT] pudwLastChange               摘要字，配置改动会更新摘要字，由设备端生成
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_DeleteSceneInfo(IN LPVOID lpUserID, 
                                                               IN UINT32 udwTvWallID, 
                                                               IN UINT32 udwSceneID, 
                                                               OUT UINT32 *pudwLastChange);

/**
* 获取当前场景的关联场景
* @param [IN]  lpUserID                     用户登录ID
* @param [IN]  udwTvWallID                  电视墙ID
* @param [OUT] pudwSceneID                  场景ID
* @return TRUE表示成功，其他表示失败
* @note 获取时，返回当前场景所关联的场景ID；
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_GetCurrentSceneID(IN LPVOID lpUserID, 
                                                                 IN UINT32 udwTvWallID,
                                                                 OUT UINT32 *pudwSceneID);

/**
* 切换为当前场景
* @param [IN]  lpUserID                     用户登录ID
* @param [IN]  udwTvWallID                  电视墙ID
* @param [IN]  udwSceneID                   场景ID
* @param [OUT] pudwLastChange               摘要字，配置改动会更新摘要字，由设备端生成
* @return TRUE表示成功，其他表示失败
* @note 设置时，表明把该场景ID设置为当前关联场景ID，并用该场景的配置覆盖当前场景的配置；
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_SetCurrentSceneID(IN LPVOID lpUserID, 
                                                                 IN UINT32 udwTvWallID,
                                                                 IN UINT32 udwSceneID,
                                                                 OUT UINT32 *pudwLastChange);

/**
* 获取当前场景配置内容
* @param [IN]  lpUserID                     用户登录ID
* @param [IN]  udwTvWallID                  电视墙ID
* @param [INOUT] pstSceneDetailInfo         场景信息,若存在电视墙编码字段，则需要输入szTVWallCode
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_GetCurrentSceneInfo(IN LPVOID lpUserID, 
                                                                   IN UINT32 udwTvWallID, 
                                                                   INOUT LPNETDEV_XW_SCENE_INFO_DETAIL_S pstSceneDetailInfo);

/**
* 删除当前场景配置内容
* @param [IN]  lpUserID                     用户登录ID
* @param [IN]  dwTimeOut                    超时时间(秒)  范围10s~60s
* @param [IN]  udwTvWallID                  电视墙ID
* @return TRUE表示成功，其他表示失败
* @note 删除当前场景下的窗口、窗口下的当前业务/业务绑定关系、虚拟LED、底图的绑定
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_DeleteCurrentSceneInfo(IN LPVOID lpUserID,
                                                                      IN INT32 dwTimeOut,
                                                                      IN UINT32 udwTvWallID); 

/**
* 获取场景计划
* @param [IN]  lpUserID                     用户登录ID
* @param [IN]  udwTvWallID                  电视墙ID
* @param [OUT] pstScenePlan                 场景计划结构体指针
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_GetScenePlan(IN LPVOID lpUserID, 
                                                            IN UINT32 udwTvWallID,
                                                            OUT LPNETDEV_XW_SCENE_PLAN_S pstScenePlan);

/**
* 设置场景计划
* @param [IN]  lpUserID                     用户登录ID
* @param [IN]  udwTvWallID                  电视墙ID
* @param [IN]  pstScenePlan                 场景计划结构体指针
* @param [OUT] pudwLastChange               摘要字，配置改动会更新摘要字，由设备端生成
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_SetScenePlan(IN LPVOID lpUserID, 
                                                            IN UINT32 udwTvWallID, 
                                                            IN LPNETDEV_XW_SCENE_PLAN_S pstScenePlan,
                                                            OUT UINT32 *pudwLastChange);

/**
* 获取场景下所有窗口配置信息
* @param [IN] lpUserID                      用户登录ID
* @param [IN] udwTvWallID                   电视墙ID
* @return 查询句柄,返回NULL表示失败，其他值作为NETDEV_XW_FindNextWndInfo、NETDEV_XW_FindCloseWndInfo等函数的参数。
* @note 
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_XW_FindWndList(IN LPVOID lpUserID, 
                                                             IN UINT32 udwTvWallID);

/**
* 逐个获取查找到的窗口配置信息
* @param [IN]  lpFindHandle                 查找句柄 
* @param [OUT] pstWndInfo                   保存窗口配置信息的指针 
* @return TRUE表示成功，其他表示失败
* @note 返回失败说明查询结束
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_FindNextWnd(IN LPVOID lpFindHandle, 
                                                           OUT LPNETDEV_XW_SCENE_WND_INFO_S pstWndInfo);

/**
* 关闭查找窗口配置，释放资源
* @param [IN] lpFindHandle                  文件查找句柄
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_FindCloseWnd(IN LPVOID lpFindHandle);


/**
* 获取单个窗口配置信息
* @param [IN]  lpUserID                     用户登录ID
* @param [IN]  udwTvWallID                  电视墙ID
* @param [INOUT]  pstWndInfo                窗口信息结构体指针,需要输入窗口ID
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_GetWnd(IN LPVOID lpUserID,
                                                      IN UINT32 udwTvWallID, 
                                                      INOUT LPNETDEV_XW_SCENE_WND_INFO_S pstWndInfo);

/**
* 创建单个窗口配置信息
* @param [IN]  lpUserID                     用户登录ID
* @param [IN]  udwTvWallID                  电视墙ID
* @param [INOUT]  pstWndInfo                窗口信息结构体指针,窗口ID由设备端分配并输出
* @param [OUT] pudwLastChange               摘要字，配置改动会更新摘要字，由设备端生成
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_CreateWnd(IN LPVOID lpUserID,
                                                         IN UINT32 udwTvWallID, 
                                                         INOUT LPNETDEV_XW_SCENE_WND_INFO_S pstWndInfo,
                                                         OUT UINT32 *pudwLastChange);


/**
* 修改单个窗口配置信息
* @param [IN]  lpUserID                     用户登录ID
* @param [IN]  udwTvWallID                  电视墙ID
* @param [INOUT]  pstWndInfo                窗口信息结构体指针,需要输入窗口ID
* @param [OUT] pudwLastChange               摘要字，配置改动会更新摘要字，由设备端生成
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_ModifyWnd(IN LPVOID lpUserID, 
                                                         IN UINT32 udwTvWallID, 
                                                         INOUT LPNETDEV_XW_SCENE_WND_INFO_S pstWndInfo, 
                                                         OUT UINT32 *pudwLastChange);

/**
* 删除单个窗口配置信息
* @param [IN]  lpUserID                     用户登录ID
* @param [IN]  udwTvWallID                  电视墙ID
* @param [IN]  udwWndID                     窗口ID
* @param [OUT] pudwLastChange               摘要字，配置改动会更新摘要字，由设备端生成
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_DeleteWnd(IN LPVOID lpUserID,
                                                         IN UINT32 udwTvWallID,
                                                         IN UINT32 udwWndID,
                                                         OUT UINT32 *pudwLastChange);


/**
* 建立实况
* @param [IN]  lpUserID                      用户登录ID
* @param [IN]  pstDisplayerID                电视墙ID、窗口ID、分屏序号
* @param [IN]  pstVideoSource                视频源的信息
* @param [OUT]  *pudwTaskNo                  本次实况业务号,停止实况时需要使用
* @return TRUE表示成功，其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_StartRealPlay(IN LPVOID lpUserID, 
                                                             IN LPNETDEV_XW_DISPLAYER_ID_S pstDisplayerID,
                                                             IN LPNETDEV_XW_VIDEO_SOURCE_S pstVideoSource,
                                                             OUT UINT32 *pudwTaskNo);

/** 
* 电视墙开启实况
* @param [IN] lpUserID                                     用户登录ID
* @param [IN] pstPriviewInfo                               实况预览参数
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_StartRealPlay_V30(IN LPVOID lpUserID,
                                                                 IN LPNETDEV_XW_PRIVIEW_INFO_S pstPriviewInfo);


/**
* 停止实况
* @param [IN]  lpUserID                      用户登录ID 
* @param [IN]  pstDisplayerID                电视墙ID、窗口ID、分屏序号
* @param [IN]  udwTaskNo                     实况业务号
* @return TRUE表示成功，其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_StopRealPlay(IN LPVOID lpUserID,
                                                            IN LPNETDEV_XW_DISPLAYER_ID_S pstDisplayerID,
                                                            IN UINT32 udwTaskNo);

/**
* 停止实况（不需要传入TaskNo）
* @param [IN]  lpUserID                      用户登录ID 
* @param [IN]  pstDisplayerID                电视墙ID、窗口ID、分屏序号
* @return TRUE表示成功，其他表示失败
* @note 仅供一体机内部使用，
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_StopRealPlayWithoutTaskNo(IN LPVOID lpUserID,
                                                                         IN LPNETDEV_XW_DISPLAYER_ID_S pstDisplayerID);

/**
* 开启 DC 回放上墙
* @param [IN] lpUserID                  用户登录ID
* @param [IN] pstDCPlaybackCond         电视墙回放参数
* @param [OUT] pudwSessionID            回放业务号
* @return TRUE表示成功，其他表示失败
* @note
* -
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_PlayBackToTVWall(IN LPVOID lpUserID,
                                                             IN LPNETDEV_DC_PLAYBACK_COND_S pstDCPlaybackCond,
                                                             OUT UINT32 *pudwSessionID);



/**
* 建立回放
* @param [IN]  lpUserID                      用户登录ID 
* @param [IN]  pstDisplayerID                电视墙ID、窗口ID、分屏序号
* @param [IN]  pstChannels                   多个通道信息  
* @param [OUT]  *pudwTaskNo                  本次回放业务号,停止回放时需要使用
* @return TRUE表示成功，其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_StartPlayback(IN LPVOID lpUserID, 
                                                             IN LPNETDEV_XW_DISPLAYER_ID_S pstDisplayerID,
                                                             IN LPNETDEV_XW_CHANNELS_S pstChannels,
                                                             OUT UINT32 *pudwTaskNo);

/**
* 停止回放
* @param [IN]  lpUserID                     回放句柄
* @param [IN]  pstDisplayerID               电视墙ID、窗口ID、分屏序号
* @param [IN]  udwTaskNo                    回放业务号
* @return TRUE表示成功，其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_StopPlayback(IN LPVOID lpUserID,
                                                            IN LPNETDEV_XW_DISPLAYER_ID_S pstDisplayerID,
                                                            IN UINT32 udwTaskNo);

/**
* 控制回放
* @param [IN]  lpUserID                     回放句柄
* @param [IN]  pstDisplayerID               电视墙ID、窗口ID、分屏序号
* @param [IN]  pstPlaybackParam             回放控制信息
* @return TRUE表示成功，其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_ControlPlayback(IN LPVOID lpUserID,
                                                               IN LPNETDEV_XW_DISPLAYER_ID_S pstDisplayerID,
                                                               IN LPNETDEV_XW_PLAYBACK_PARAM_S pstPlaybackParam);

/**
* 开始被动解码  Start passive decode
* @param [IN]   lpUserID                    用户登录ID User login ID
* @para, [IN]   pstDisplayerID              设备ID信息
* @param [IN]   pstVideoSource              视频源信息
* @param [OUT]  pudwTaskNo             ·    业务号，用于控制被动解码
* @return 返回FALSE表示失败，TRUE为成功
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StartPassiveDecode(IN LPVOID lpUserID,
                                                               IN LPNETDEV_XW_DISPLAYER_ID_S pstDisplayerID,
                                                               IN LPNETDEV_XW_VIDEO_SOURCE_S pstVideoSource,
                                                               OUT UINT32 *pudwTaskNo);

/**
* 向被动解码通道发送数据  Send data to passive decode channel
* @param [IN]   lpUserID                 用户登录ID User login ID
* @param [IN]   udwTaskNO              · 业务号，用于控制被动解码
* @param [IN]   pstSendData              待发送数据内容
* @return 返回FALSE表示失败，TRUE为成功
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SendPassiveData(IN LPVOID lpUserID,
                                                            IN UINT32 udwTaskNo,
                                                            IN LPNETDEV_PASSIVE_SEND_S pstSendData);

/**
* 停止被动解码 Stop passive decode
* @param [IN]   lpUserID                 用户登录ID User login ID
* @param [IN]   udwTaskNO              · 业务号，用于控制被动解码
* @return 返回FALSE表示失败，TRUE为成功
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StopPassiveDecode(IN LPVOID lpUserID,
                                                              IN UINT32 udwTaskNO);

/**
* 批量开窗
* @param [IN] lpUserID               用户登录ID
* @param [IN] dwTimeOut              超时时间(秒)    范围10s~60s
* @param [IN] udwTVWallID            电视墙ID
* @param [IN] pstWndInfo             窗口信息结构体，创建成功后返回窗口ID
* @param [OUT] pstResultWndInfo      开窗返回信息结构体
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_CreateBatchWnd(IN LPVOID lpUserID,
                                                              IN INT32 dwTimeOut,
                                                              IN UINT32 udwTVWallID,
                                                              IN LPNETDEV_XW_WND_INFO_LIST_S pstWndInfo,
                                                              OUT LPNETDEV_XW_BATCH_RESULT_LIST_S pstResultWndInfo);

/**
* 批量关窗
* @param [IN] lpUserID                  用户登录ID
* @param [IN] dwTimeOut                 超时时间(秒)    范围10s~60s
* @param [IN] udwTVWallID               电视墙ID
* @param [INOUT] pstDeleteWndInfo       窗口信息结构体
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_DeleteBatchWnd(IN LPVOID lpUserID,
                                                              IN INT32 dwTimeOut,
                                                              IN UINT32 udwTVWallID,
                                                              INOUT LPNETDEV_XW_BATCH_RESULT_LIST_S pstDeleteWndInfo);

/**
* 批量修改窗口
* @param [IN] lpUserID               用户登录ID
* @param [IN] udwTVWallID            电视墙ID
* @param [IN] pstWndInfo             窗口信息结构体
* @param [OUT] pstResultWndInfo      修改窗口返回信息结构体
* @return TRUE表示成功，其他表示失败
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_ModifyBatchWnd(IN LPVOID lpUserID,
                                                              IN UINT32 udwTVWallID,
                                                              IN LPNETDEV_XW_WND_INFO_LIST_S pstWndInfo,
                                                              OUT LPNETDEV_XW_BATCH_RESULT_LIST_S pstResultWndInfo);

/**
* 电视墙窗口放大/还原
* @param [IN]  lpUserID             用户登录ID
* @param [IN]  udwTvWallID          电视墙ID
* @param [IN]  udwWndID             窗口ID
* @param [IN]  pstScreenZoomInfo    屏幕放大信息
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_ZoomScreen(IN LPVOID lpUserID,
                                                          IN UINT32 udwTvWallID,
                                                          IN UINT32 udwWndID,
                                                          IN LPNETDEV_XW_SCREEN_ZOOM_INFO_S pstScreenZoomInfo);


/**
* 获取电视墙拼接屏控制参数信息
* @param [IN]  lpUserID                 用户登录ID
* @param [IN]  udwTvWallID              电视墙ID
* @param [INOUT] pstScreenCtrlParamInfo 拼接屏控制参数信息,若存在电视墙编码字段，则需输入szTVWallCode
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_GetSceenCtrlParam(IN LPVOID lpUserID,
                                                                 IN UINT32 udwTvWallID,
                                                                 INOUT LPNETDEV_XW_SCREEN_CTRL_PARAM_INFO_S pstScreenCtrlParamInfo);

/**
* 设置电视墙拼接屏控制参数信息
* @param [IN]  lpUserID                 用户登录ID
* @param [IN]  udwTvWallID              电视墙ID
* @param [IN]  pstScreenCtrlParamInfo   拼接屏控制参数信息
* @param [OUT] pudwLastChange           摘要字 每次配置改动修改需要修改这个摘要字，摘要字由终端生成
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_SetSceenCtrlParam(IN LPVOID lpUserID,
                                                                 IN UINT32 udwTvWallID,
                                                                 IN LPNETDEV_XW_SCREEN_CTRL_PARAM_INFO_S pstScreenCtrlParamInfo,
                                                                 OUT UINT32* pudwLastChange);

/**
* 手动开关机
* @param [IN]  lpUserID                 用户登录ID
* @param [IN]  udwTvWallID              电视墙ID
* @param [IN]  pstManualSwitchPower   手动开关机参数
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_ManualSwitchPower(IN LPVOID lpUserID,
                                                                 IN UINT32 udwTvWallID,
                                                                 IN LPNETDEV_XW_MANUAL_SWITCH_POWER_S pstManualSwitchPower);

/**
* 延迟开关机
* @param [IN]  lpUserID                 用户登录ID
* @param [IN]  udwTvWallID              电视墙ID
* @param [IN]  pstDelaySwitchPower   延迟开关机参数
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_DelaySwitchPower(IN LPVOID lpUserID,
                                                                IN UINT32 udwTvWallID,
                                                                IN LPNETDEV_XW_DELAY_SWITCH_POWER_S pstDelaySwitchPower);

/**
* 取消延迟开关机
* @param [IN]  lpUserID                 用户登录ID
* @param [IN]  udwTvWallID              电视墙ID
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_DelDelaySwitchPower(IN LPVOID lpUserID,
                                                                   IN UINT32 udwTvWallID);


/**
* 获取定时开关机信息
* @param [IN]  lpUserID                 用户登录ID
* @param [IN]  udwTvWallID              电视墙ID
* @param [INOUT] pstTimingSwitchPower   定时开关机信息,若存在电视墙编码字段，则需输入szTVWallCode
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_GetTimingSwitchPower(IN LPVOID lpUserID,
                                                                    IN UINT32 udwTvWallID,
                                                                    INOUT LPNETDEV_XW_TIMING_SWITCH_POWER_S pstTimingSwitchPower);

/**
* 配置定时开关机信息
* @param [IN]  lpUserID                 用户登录ID
* @param [IN]  udwTvWallID              电视墙ID
* @param [IN] pstTimingSwitchPower      定时开关机信息
* @param [OUT] pudwLastChange           摘要字 每次配置改动修改需要修改这个摘要字，摘要字由终端生成
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_SetTimingSwitchPower(IN LPVOID lpUserID,
                                                                    IN UINT32 udwTvWallID,
                                                                    IN LPNETDEV_XW_TIMING_SWITCH_POWER_S pstTimingSwitchPower,
                                                                    OUT UINT32 *pudwLastChange);

/**
* 获取虚拟LED列表
* @param [IN]   lpUserID                    用户登录ID User login ID
* @param [IN]   udwTvWallID                 电视墙ID
* @return 业务号,返回NULL表示失败,其他值作为NETDEV_XW_FindNextVirtualLED,NETDEV_XW_FindCloseVirtualLED等函数的参数。
* @note无
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_XW_FindVirtualLEDList(IN LPVOID lpUserID,
                                                                    IN UINT32 udwTvWallID);


/**
* 逐个虚拟LED
* @param [IN]   lpFindHandle                 查询Handle
* @param [OUT]  pstVirtualLEDInfo            虚拟LED信息
* @return TRUE表示成功，其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_FindNextVirtualLED(IN LPVOID lpFindHandle,
                                                                  OUT LPNETDEV_XW_VIRTUAL_LED_INFO_S pstVirtualLEDInfo);

/**
* 关闭虚拟LED列表FindHandle
* @param [IN]   lpFindHandle                查询Handle
* @return TRUE表示成功，其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_FindCloseVirtualLED(IN LPVOID lpFindHandle);

/**
* 创建单个虚拟LED
* @param [IN]   lpUserID                    用户登录ID User login ID
* @param [IN]   udwTvWallID                 电视墙ID
* @param [INOUT]  pstVirtualLEDInfo         虚拟LED信息,LEDID由设备返回
* @param [OUT]  pudwLastChange              摘要字，配置改动会更新摘要字，由设备端生成
* @return TRUE表示成功，其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_CreateVirtualLED(IN LPVOID lpUserID, 
                                                                IN UINT32 udwTvWallID, 
                                                                INOUT LPNETDEV_XW_VIRTUAL_LED_INFO_S pstVirtualLEDInfo, 
                                                                OUT UINT32 *pudwLastChange);

/**
* 删除单个场景下所有虚拟LED
* @param [IN]   lpUserID                    用户登录ID User login ID
* @param [IN]   udwTvWallID                 电视墙ID
* @param [OUT]  pudwLastChange              摘要字，配置改动会更新摘要字，由设备端生成
* @return TRUE表示成功，其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_DeleteAllVirtualLED(IN LPVOID lpUserID, 
                                                                   IN UINT32 udwTvWallID,
                                                                   OUT UINT32 *pudwLastChange);

/**
* 获取单个虚拟LED
* @param [IN]   lpUserID                    用户登录ID User login ID
* @param [IN]   udwTvWallID                 电视墙ID
* @param [INOUT]  pstVirtualLEDInfo         虚拟LED信息,需要输入LED ID
* @return TRUE表示成功，其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_GetVirtualLED(IN LPVOID lpUserID, 
                                                             IN UINT32 udwTvWallID, 
                                                             INOUT LPNETDEV_XW_VIRTUAL_LED_INFO_S pstVirtualLEDInfo);

/**
* 配置单个虚拟LED
* @param [IN]   lpUserID                    用户登录ID User login ID
* @param [IN]   udwTvWallID                 电视墙ID
* @param [OUT]  pstVirtualLEDInfo           虚拟LED信息
* @param [OUT]  pudwLastChange              摘要字，配置改动会更新摘要字，由设备端生成
* @return TRUE表示成功，其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_SetVirtualLED(IN LPVOID lpUserID,
                                                             IN UINT32 udwTvWallID,
                                                             IN LPNETDEV_XW_VIRTUAL_LED_INFO_S pstVirtualLEDInfo,
                                                             OUT UINT32 *pudwLastChange);

/**
* 删除单个虚拟LED
* @param [IN]   lpUserID                    用户登录ID User login ID
* @param [IN]   udwTvWallID                 电视墙ID
* @param [IN]   udwLedlID                   虚拟LED的ID
* @param [OUT]  pudwLastChange              摘要字，配置改动会更新摘要字，由设备端生成
* @return TRUE表示成功，其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_XW_DeleteOneVirtualLED(IN LPVOID lpUserID,
                                                                   IN UINT32 udwTvWallID,
                                                                   IN UINT32 udwLedlID,
                                                                   OUT UINT32 *pudwLastChange);

/**
* 手动联动操作
* @param [IN]   lpUserID                    用户登录ID User login ID
* @param [IN]   udwChannelID                通道号 Channel ID
* @param [IN]   pstManualLink               手动联动数据
* @return TRUE表示成功，其他表示失败
* @note无
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ManualLink(IN LPVOID lpUserID,
                                                       IN UINT32 udwChannelID,
                                                       IN LPNETDEV_MANUAL_LINK_S pstManualLink);

/**
* 接收车牌识别告警消息的回调函数 Callback function to receive alarm information
* @param [IN] lpUserID                用户登录ID
* @param [IN] pstVehicleAlarmInfo     上报信息 Alarm information
* @param [IN] lpBuf                   缓冲区指针 Pointer to buffer
* @param [IN] dwBufLen                告警信息对应结构体的长度 Length of structure for alarm information
* @param [IN] dwBufLen                用户数据 User data
* @note   在回调函数中只能做拷贝数据动作，否则若耗时过长，容易造成告警上报阻塞、内存消耗过大等问题
*/
typedef void(STDCALL *NETDEV_VehicleAlarmMessCallBack_PF)(IN LPVOID lpUserID,
                                                          IN LPNETDEV_VEH_RECOGNITION_EVENT_S pstVehicleAlarmInfo,
                                                          IN LPVOID lpBuf,
                                                          IN INT32 dwBufLen,
                                                          IN LPVOID lpUserData
                                                          );

/**
* 注册回调函数，接收车牌识别报警消息等
* Register callback function and receive alarm information, etc.
* @param [IN] lpUserID                     用户登录ID User login ID
* @param [IN] cbVehicleAlarmMessCallBack   回调函数 Callback function
* @param [IN] lpUserData                   用户数据 User data
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetVehicleAlarmCallBack(IN LPVOID lpUserID,
                                                                    IN NETDEV_VehicleAlarmMessCallBack_PF cbVehicleAlarmMessCallBack,
                                                                    IN LPVOID lpUserData
                                                                    );

/**
* 条件查询车辆成员详细信息
* @param [IN]  lpUserID         用户登录ID
* @param [IN]  udwVehicleLibID  库序号
* @param [IN]  pstFindCond      查询条件
* @param [OUT] pstFaceDBList    人脸库基本信息
* @return 查询句柄,返回0表示失败，其他值作为NETDEV_FindNextVehicleMemberDetail、NETDEV_FindCloseVehicleMemberDetail等函数的参数。
* @note    1、人脸库中成员的基本信息由NETDEV_FindNextVehicleMemberDetail查询返回，pstFaceDBList只带回成员的基本信息
*@           2、调用成功后需要调用NETDEV_FindNextVehicleMemberDetail将数据取完，否则会出现内存泄露
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindVehicleMemberDetailList(IN LPVOID lpUserID, 
                                                                          IN UINT32 udwVehicleLibID, 
                                                                          IN LPNETDEV_PERSON_QUERY_INFO_S pstFindCond, 
                                                                          OUT LPNETDEV_BATCH_OPERATE_BASIC_S pstDBMemberList);

/**
* 逐个获取查找到的 车辆成员 信息
* @param [IN]  lpFindHandle           查找句柄 
* @param [OUT] pstFaceMemberInfo      保存 车辆库中成员 信息的指针
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextVehicleMemberDetail(IN LPVOID lpFindHandle,
                                                                        OUT LPNETDEV_VEHICLE_DETAIL_INFO_S pstVehicleMemberInfo);

/**
* 关闭查找 车辆成员，释放资源
* @param [IN] lpFindHandle  文件查找句柄 
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseVehicleMemberDetail(IN LPVOID lpFindHandle);


/**
* 批量添加车辆成员信息
* @param [IN] lpUserID                用户登录ID
* @param [IN] udwLibID                车辆库ID
* @param [IN] pstVehicleMemberList    车辆信息列表
* @param [OUT] pstResultList          批量添加返回结果信息列表
* @return 查询句柄,返回0表示失败，
* @note    
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddVehicleMemberList(IN LPVOID lpUserID,
                                                                 IN UINT32 udwLibID, 
                                                                 IN LPNETDEV_VEHICLE_INFO_LIST_S pstVehicleMemberList,
                                                                 OUT LPNETDEV_BATCH_OPERATOR_LIST_S pstResultList);

/**
* 批量删除车辆成员信息
* @param [IN] lpUserID                  用户登录ID
* @param [IN] udwLib                    库序号
* @param [IN] pstVehicleMemberList      车辆成员列表
* @param [OUT] pstBatchList             批量操作返回信息
* @return 查询句柄,返回0表示失败，
* @note    
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DelVehicleMemberList(IN LPVOID lpUserID, 
                                                                 IN UINT32 udwLib, 
                                                                 IN LPNETDEV_VEHICLE_INFO_LIST_S pstVehicleMemberList, 
                                                                 OUT LPNETDEV_BATCH_OPERATOR_LIST_S pstBatchList);

/**
* 删除指定车辆成员信息
* @param [IN] lpUserID                  用户登录ID
* @param [IN] udwLibID                  车辆库ID
* @param [IN] udwVehicleID              车辆ID
* @return 查询句柄,返回0表示失败，
* @note    
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DelVehicleInfo(IN LPVOID lpUserID, 
                                                           IN UINT32 udwLibID, 
                                                           IN UINT32 udwVehicleID);

/**
* 获取单个车辆成员详细信息
* get vehicleDB information
* @param [IN] lpUserID                        用户登录ID User login ID
* @param [IN] udwVehicleID                    车辆IDVehicle ID
* @param [OUT] pstVehicleDetailInfo           车辆详细信息 Vehicle Detail info  
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetVehicleMemberInfo(IN LPVOID lpUserID,
                                                                 IN UINT32 udwVehicleID,
                                                                 OUT LPNETDEV_VEHICLE_DETAIL_INFO_S pstVehicleDetailInfo);

/**
* 修改指定车辆库中车辆信息
* modify vehicleDB information
* @param [IN] lpUserID                        用户登录ID User login ID
* @param [IN] udwVehicleLibID                 车辆库IDVehicle ID
* @param [IN] pstVehicleDetailInfo            车辆详细信息 Vehicle Detail info  
* @param [OUT] pstResultList                  批量操作返回信息 Batch operate result info
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyVehicleMemberInfo(IN LPVOID lpUserID,
                                                                    IN UINT32 udwVehicleLibID,
                                                                    IN LPNETDEV_VEHICLE_INFO_LIST_S pstVehicleMemberList, 
                                                                    OUT LPNETDEV_BATCH_OPERATOR_LIST_S pstResultList);

/**
* 查询车辆识别的所有布控任务
* @param [IN]  lpUserID              用户登录ID
* @return 查询句柄,返回0表示失败，其他值作为NETDEV_FindNextVehicleMonitorInfo、NETDEV_FindCloseVehicleMonitorInfo等函数的参数。
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindVehicleMonitorList(IN LPVOID lpUserID);

/**
* 逐个获取查找到的车辆布控任务信息
* @param [IN]  lpFindHandle            查找句柄
* @param [OUT] pstMonitorInfo          保存 布控任务 信息的指针
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note  车辆布控比对照片内存由使用者维护，入参时，需要指定接收图片缓存大小，失败时会返回实际需要的大小
        如果没有布控图片时，布控图片的大小将会被置为0;
        图片数据需要取出另存，否则在调用NETDEV_FindVehicleCloseRecordInfo接口后内存将被释放;
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextVehicleMonitorInfo(IN LPVOID lpFindHandle,
                                                                       OUT LPNETDEV_MONITION_INFO_S pstVehicleMonitorInfo);

/**
* 关闭查找车辆布控任务，释放资源
* @param [IN] lpFindHandle  文件查找句柄
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseVehicleMonitorList(IN LPVOID lpFindHandle);


/**
* 新增单个车辆布控任务
* @param [IN]  lpUserID                      用户登录ID
* @param [INOUT]  pstMonitorInfo                布控任务信息
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 车辆布控比对照片不超过2M,内存由使用者维护
        udwMonitorID 车辆布控任务序号此处作为出参使用，其余参数为入参
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddVehicleMonitorInfo(IN LPVOID lpUserID,
                                                                  INOUT LPNETDEV_MONITION_INFO_S pstMonitorInfo);

/**
* 批量删除车辆布控任务
* @param [IN]  lpUserID用户登录ID
* @param [INOUT] pstBatchList              信息列表
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeleteVehicleMonitorInfo(IN LPVOID lpUserID, 
                                                                     INOUT LPNETDEV_BATCH_OPERATOR_LIST_S pstBatchList);

/**
* 查询单个车辆布控任务配置信息
* @param [IN]  lpUserID                    用户登录ID
* @param [IN]  udwID                       车辆布控ID
* @param [INOUT] pstMonitorInfo            布控任务信息 输入布控ID,成功时返回配置信息
                                            udwMonitorID 车辆布控任务序号 IN
                                            stMonitorRuleInfo 车辆布控任务配置信息 OUT
                                            stMonitorRuleInfo.stVehicleImage.udwSize 文件大小 INOUT
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 车辆布控比对照片内存由使用者维护，入参时，需要指定接收图片缓存大小，失败时会返回实际需要的大小
对应错误码：NETDEV_E_NEED_MORE_MEMORY   用户分配内存不够；
如果没有布控图片时，布控图片的大小将会被置为0;
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetVehicleMonitorInfo(IN LPVOID lpUserID, 
                                                                  IN UINT32 udwID, 
                                                                  OUT LPNETDEV_MONITION_RULE_INFO_S pstMonitorInfo);

/**
* 设置单个车辆布控任务配置信息
* @param [IN]  lpUserID                    用户登录ID
* @param [IN]  udwID                       车辆布控ID
* @param [INOUT] pstMonitorInfo            布控任务信息
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 车辆布控比对照片不超过2M,内存由使用者维护
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetVehicleMonitorInfo(IN LPVOID lpUserID,
                                                                  IN UINT32 udwID, 
                                                                  OUT LPNETDEV_MONITION_RULE_INFO_S pstMonitorInfo);

/**
* 条件查询车辆识别记录的详细信息
* @param [IN]  lpUserID                    用户登录ID
* @param [IN] pstFindCond                  查询条件
* @param [OUT] pstResultInfo               查询的记录信息
* @return 查询句柄,返回0表示失败，其他值作为NETDEV_FindVehicleNextRecordInfo、NETDEV_FindVehicleCloseRecordInfo等函数的参数。
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindVehicleRecordInfoList(IN LPVOID lpUserID,
                                                                        IN LPNETDEV_ALARM_LOG_COND_LIST_S pstFindCond,
                                                                        OUT LPNETDEV_SMART_ALARM_LOG_RESULT_INFO_S  pstResultInfo);

/**
* 逐个获取查找到的车辆识别记录信息
* @param [IN]  lpFindHandle                    查找句柄
* @param [OUT] pstRecordInfo                   保存车辆识别记录信息的指针
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
    图片数据需要取出另存，否则在调用NETDEV_FindVehicleCloseRecordInfo接口后内存将被释放
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextVehicleRecordInfo(IN LPVOID lpFindHandle,
                                                                      OUT LPNETDEV_VEHICLE_RECORD_INFO_S pstRecordInfo);

/**
* 关闭查找车辆识别记录，释放资源
* @param [IN] lpFindHandle  文件查找句柄
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseVehicleRecordList(IN LPVOID lpFindHandle);

/**
* 查询单个车辆识别记录的车辆图片信息
* @param [IN]  lpUserID                    用户登录ID
* @param [IN] udwRecordID                  车辆识别记录ID
* @param [INOUT] pstFileInfo                 车辆图片信息
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note  pstFileInfo内存由使用者维护，入参时需指定udwSize大小，内存不够调用失败时，udwSize会返回实际需要大小
对应错误码：NETDEV_E_NEED_MORE_MEMORY   用户分配内存不够；
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetVehicleRecordImageInfo(IN LPVOID lpUserID,
                                                                      IN UINT32 udwRecordID,
                                                                      INOUT LPNETDEV_FILE_INFO_S pstFileInfo);

/**
* 向指定的车辆库中批量划归车辆成员
* .Batch assigned to the vehicle member in the specified database
* @param [IN] lpUserID                  用户登录ID User login ID
* @param [IN] udwVehicleLibID           车辆库ID CaVehicleLibID 
* @param [IN] pstMemberList             批量划归车辆成员ID信息 Batch assigned vehicle member ID information
* @param [OUT] pstBatchResultList               批量划归车辆信息返回结果 Batch assigned vehicle member ID result
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddVehicleLibMember(IN LPVOID lpUserID,
                                                                IN UINT32 udwVehicleLibID,
                                                                IN LPNETDEV_BATCH_OPERATE_MEMBER_LIST_S pstMemberList,
                                                                OUT LPNETDEV_BATCH_OPERATOR_LIST_S pstBatchResultList);

 /**
 * 批量取消指定的车辆库中车辆成员划归
 * .Batch cancellation to the vehicle member in the specified database
 * @param [IN] lpUserID                  用户登录ID User login ID
 * @param [IN] udwVehicleLibID           车辆库ID VehicleLibID 
 * @param [IN] pstMemberList             批量取消车辆成员ID信息 Batch cancellation vehicle member ID information
 * @param [OUT] pstBatchResultList               批量取消车辆信息返回结果 Batch cancellation vehicle member ID result
 * @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
 * @note
 */
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeleteVehicleLibMember(IN LPVOID lpUserID,
                                                                   IN UINT32 udwVehicleLibID,
                                                                   IN LPNETDEV_BATCH_OPERATE_MEMBER_LIST_S pstMemberList,
                                                                   OUT LPNETDEV_BATCH_OPERATOR_LIST_S pstBatchResultList);

/**
* 查询全部车辆库信息列表
* @param [IN] lpUserID          用户登录ID
* @return 查询句柄,返回0表示失败，其他值作为NETDEV_FindNextVehicleLibInfo、NETDEV_FindCloseVehicleLibList等函数的参数。
* @note     
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindVehicleLibList(IN LPVOID lpUserID);

/**
* 逐个获取查找到的 车辆库 信息
* @param [IN]  lpFindHandle           查找句柄 
* @param [OUT] pstVehicleLibInfo      保存 车辆库 信息的指针
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextVehicleLibInfo(IN LPVOID lpFindHandle, 
                                                                   OUT LPNETDEV_LIB_INFO_S pstVehicleLibInfo);

/**
* 关闭查找 车辆库，释放资源
close finding vehicleDB Release resources
* @param [IN] lpFindHandle  文件查找句柄 
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseVehicleLibList(IN LPVOID lpFindHandle);


/**
* 新增单个车辆库信息
* add vehicleDB information
* @param [IN] lpUserID                   用户登录ID User login ID
* @param [INOUT] pstVehicleLibInfo       车库信息VehicleDB info
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddVehicleLibInfo(IN LPVOID lpUserID,
                                                              INOUT LPNETDEV_LIB_INFO_S pstVehicleLibInfo );

/**
* 修改指定的车辆库信息
* Modify the specified vehicleDB information
* @param [IN] lpUserID                  用户登录ID User login ID
* @param [IN] pstVehicleLibList         车辆库列表 Vehicle Lib List
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyVehicleLibInfo(IN LPVOID lpUserID,
                                                                 IN LPNETDEV_PERSON_LIB_LIST_S pstVehicleLibList);

/**
* 删除指定的车辆库信息
* delete the specified vehicleDB information
* @param [IN] lpUserID                   用户登录ID User login ID
* @param [IN] udwVehicleLibID            车辆库ID Vehicle DB ID 
* @param [IN] pstDelLibFlag              删除库信息的标志位
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeleteVehicleLibInfo(IN LPVOID lpUserID,
                                                                 IN UINT32 udwVehicleLibID,
                                                                 IN LPNETDEV_DELETE_DB_FLAG_INFO_S pstDelLibFlag);

/**
* 查询指定的所有通道，事件回放中的事件录像
* @param [IN] lpUserID                                              用户登录ID 
* @param [IN] LPNETDEV_EVENT_RECORD_PARAM_S pstEventRecordParam     事件录像参数
* @param [OUT] LPNETDEV_BATCH_OPERATE_BASIC_S pstResultInfo         事件录像查询结果基础信息
* @return 若返回值为NULL则表示失败。其他值为查询任务号，作为NETDEV_FindNextEventRecordInfo、NETDEV_FindCloseEventRecordList入参。
* @note
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindEventRecordList(IN LPVOID lpUserID,
                                                                  IN LPNETDEV_EVENT_RECORD_PARAM_S pstEventRecordParam,
                                                                  OUT LPNETDEV_BATCH_OPERATE_BASIC_S pstResultInfo
                                                                 );

/**
* 逐个获取指定的所有通道，事件回放中的事件录像
* @param [IN]  LPVOID lpFindHandle                                                查找句柄 
* @param [OUT] LPNETDEV_EVENT_RECORD_INFO_S pstEventRecordInfo                   事件录像信息
* @return TRUE表示成功,其他表示失败
* @note 返回失败说明查询结束
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextEventRecordInfo(IN LPVOID lpFindHandle,
                                                                    OUT LPNETDEV_EVENT_RECORD_INFO_S pstEventRecordInfo
                                                                   );

/*
* 关闭查找指定的所有通道，事件回放中的事件录像
* @param [IN] lpFindHandle                                                        查找句柄
* @return TRUE表示成功,其他表示失败
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseEventRecordList(IN LPVOID lpFindHandle);

/**
* 查询指定视频输入通道的某时间段、某录像类型的录像URL
* @param [IN] lpUserID                   用户登录ID User login ID
* @param [IN] pstPlayBackCond            录像查询条件 record query condition
* @param [OUT]pszPlayBackUrl             录像播放URL record play URL
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetPlaybackUrl(IN LPVOID lpUserID, IN LPNETDEV_RECORD_FIND_COND_S pstPlayBackCond, OUT CHAR *pszPlayBackUrl);

/*                   电视墙、拼接业务模块结束行                   */
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


/**
 * @struct tagNETDEVTimeTemplateBaseInfo
 * @brief 时间模板 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVTimeTemplateBaseInfo
{
    UINT32                   udwTemplateID;                  /* 模板ID */
    CHAR                     szTemplateName[NETDEV_LEN_256]; /* 模板名称 */
    UINT32                   udwLastChange;                  /* 最后的修改时间 */
    BYTE                     byRes[256];                     /* 保留字段 */
}NETDEV_TIME_TEMPLATE_BASE_INFO_S, *LPNETDEV_TIME_TEMPLATE_BASE_INFO_S;

/**
 * @struct tagNETDEVIDList
 * @brief 通用ID列表 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVIDList
{
    UINT32                          udwNum;                     /* 数量 */
    UINT32                         *pudwIDs;                    /* ID列表 Malloc申请内存 */
    BYTE                            byRes[256];                 /* 保留字段 */
}NETDEV_ID_LIST_S, *LPNETDEV_ID_LIST_S;

/**
* 添加时间模板
* @param [IN]   lpUserID                            用户登录ID User login ID
* @param [IN]   pstTimeTemplate                     时间模板信息 Time template info
* @param [OUT]  pudwTemplateID                      时间模板ID Time template ID
* @return TRUE表示成功，其他表示失败
* @note VMS不支持指定模板ID
        PTS支持：
        1、如果传入的模板ID不为0; 则直接使用模板ID当索引,并返回; 
                               如果传入的模板ID是已经存在的值，则接口返回失败；
        2、如果传入的模板ID  为0; 则终端分配一个唯一的ID,并返回;
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddTimeTemplate(IN LPVOID lpUserID,
                                                            IN LPNETDEV_SYSTEM_TIME_TEMPLATE_S pstTimeTemplate,
                                                            OUT UINT32 *pudwTemplateID);

/**
* 批量删除指定的时间模板
* @param [IN]   lpUserID                            用户登录ID User login ID
* @param [IN]   pstTemplateIDList                   删除的时间模板ID列表 Time template ID List
* @param [OUT]  pstDeleteResults                    批量删除的结果信息 Batch delete results
* @return TRUE表示成功，其他表示失败
* @note 批量删除仅VMS支持
        1.pstDeleteResults->udwNum不应小于pstTemplateIDList->udwNum
        2.出参返回：udwNum、udwID、udwResultCode
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_BatchDeleteTimeTemplate(IN LPVOID lpUserID,
                                                                    IN LPNETDEV_ID_LIST_S pstTemplateIDList,
                                                                    OUT LPNETDEV_BATCH_OPERATOR_LIST_S pstDeleteResults);

/**
* 修改指定事件模板信息
* @param [IN]   lpUserID                            用户登录ID User login ID
* @param [IN]   pstTimeTemplate                     时间模板信息 Time template info
* @return TRUE表示成功，其他表示失败
* @note PTS和VMS支持
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyTimeTemplate(IN LPVOID lpUserID,
                                                               IN LPNETDEV_SYSTEM_TIME_TEMPLATE_S pstTimeTemplate);

/**
* 获取指定时间模板信息
* @param [IN]    lpUserID                            用户登录ID User login ID
* @param [INOUT] pstTimeTemplate                     时间模板信息 Time template info
* @return TRUE表示成功，其他表示失败
* @note PTS和VMS支持
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetTimeTemplate(IN LPVOID lpUserID,
                                                            INOUT LPNETDEV_SYSTEM_TIME_TEMPLATE_S pstTimeTemplate);

/**
* 批量获取指定模板类型的时间模板信息
* @param [IN]   lpUserID                            用户登录ID User login ID
* @param [IN]   udwTemplateType                     时间模板类型 仅VMS支持 0:录像时间模板 1:报警时间模板 2:用户时间模板 Time Template Type.
* @return 查询句柄,返回0表示失败，其他值作为NETDEV_FindNextTimeTemplateByType、NETDEV_FindCloseRecordScheduleList等函数的参数。
* @note PTS和VMS支持(时间模板类型仅VMS支持)
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindTimeTemplateByTypeList(IN LPVOID lpUserID,
                                                                         IN UINT32 udwTemplateType);

/**
* 逐个获取按类型找到的时间模板信息
* @param [IN]  lpFindHandle            查找句柄 
* @param [OUT] pstTimeTemplate         时间模板
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextTimeTemplateByTypeInfo(IN LPVOID lpFindHandle, 
                                                                           OUT LPNETDEV_TIME_TEMPLATE_BASE_INFO_S pstTimeTemplate);

/**
* 关闭查找 按类型找到的时间模板链表，释放资源
* @param [IN] lpFindHandle  文件查找句柄 
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseTimeTemplateByTypeList(IN LPVOID lpFindHandle);

/**
* 获取特定通道的录像码流类型
* @param [IN]  lpUserID                          用户登录ID User login ID
* @param [IN]  udwChlID                          通道ID Channel ID
* @param [OUT] pudwStreamType                    流类型 Stream Type  See #NETDEV_LIVE_STREAM_INDEX_E
* @return TRUE表示成功，其他表示失败
* @note 仅VMS支持
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetRecordStreamType(IN LPVOID lpUserID, IN UINT32 udwChlID, OUT UINT32 *pudwStreamType);

/**
* 设置特定通道的录像码流类型
* @param [IN]  lpUserID                          用户登录ID User login ID
* @param [IN]  udwChlID                          通道ID Channel ID
* @param [IN]  udwStreamType                     流类型 Stream Type. See #NETDEV_LIVE_STREAM_INDEX_E
* @return TRUE表示成功，其他表示失败
* @note 仅VMS支持
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetRecordStreamType(IN LPVOID lpUserID, IN UINT32 udwChlID, IN UINT32 udwStreamType);

/**
* 添加录像计划 支持批量
* @param [IN]  lpUserID                          用户登录ID User login ID
* @param [IN]  pstRecordPlanList                 录像计划信息列表 Record plan info list
* @param [OUT] pstAddResults                     操作返回的结果信息 Result info
* @return TRUE表示成功，其他表示失败
* @note 仅VMS支持
        1.pstAddResults->udwNum不应小于pstRecordPlanList->udwNum
        2.出参返回：udwNum、udwState、udwReqSeq、udwID、udwResultCode
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddRecordPlan(IN LPVOID lpUserID,
                                                         IN LPNETDEV_RECORD_PLAN_CFG_LIST_S pstRecordPlanList,
                                                         OUT LPNETDEV_BATCH_OPERATOR_LIST_S pstAddResults);

/**
* 删除计划 支持批量
* @param [IN]  lpUserID                          用户登录ID User login ID
* @param [IN]  pstPlanIDList                     计划ID列表 Plan ID list
* @param [OUT] pstDeleteResults                  操作返回的结果信息 Result info
* @return TRUE表示成功，其他表示失败
* @note 仅VMS支持
        1.pstDeleteResults->udwNum不应小于pstPlanIDList->udwNum
        2.出参返回：udwNum、udwState、udwID、udwResultCode
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeletePlan(IN LPVOID lpUserID,
                                                       IN LPNETDEV_ID_LIST_S pstPlanIDList,
                                                       OUT LPNETDEV_BATCH_OPERATOR_LIST_S pstDeleteResults);

/**
* 开启/停止计划
* @param [IN]  lpUserID                          用户登录ID User login ID
* @param [IN]  pstPlanIDList                     计划ID列表 Plan ID list
* @param [IN]  bEnabled                          计划使能 Plan Enable 1:Enabled
* @param [OUT] pstModifyResults                  操作返回的结果信息 Result info
* @return TRUE表示成功，其他表示失败
* @note VMS支持
        1.pstModifyResults->udwNum不应小于pstPlanIDList->udwNum
        2.出参返回：udwNum、udwID、udwResultCode
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetPlanStatus(IN LPVOID lpUserID,
                                                             IN LPNETDEV_ID_LIST_S pstPlanIDList,
                                                             IN BOOL bEnabled,
                                                             OUT LPNETDEV_BATCH_OPERATOR_LIST_S pstModifyResults);

/**
* 查询全部视频通道的录像计划
* @param [IN]  lpUserID              用户登录ID
* @return 查询句柄,返回0表示失败，其他值作为NETDEV_FindNextRecordScheduleInfo、NETDEV_FindCloseRecordScheduleList等函数的参数。
* @note    
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindRecordScheduleList(IN LPVOID lpUserID);

/**
* 逐个获取查找到的 录像计划 信息
* @param [IN]  lpFindHandle            查找句柄 
* @param [OUT] pstRecordPlanInfo       录像计划信息
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note 返回失败说明查询结束 A returned failure indicates the end of search.
        pstTimeTemplate需要Malloc申请
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextRecordScheduleInfo(IN LPVOID lpFindHandle, 
                                                                       OUT LPNETDEV_RECORD_PLAN_CFG_INFO_S pstRecordScheduleInfo);

/**
* 关闭查找 录像计划，释放资源
* @param [IN] lpFindHandle  文件查找句柄 
* @return TRUE表示成功，其他表示失败 TRUE means success, and any other value means failure.
* @note
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseRecordScheduleList(IN LPVOID lpFindHandle);


/* 一体机角色管理 */
/**
 * @struct tagNETDEVTVwallCode
 * @brief 电视墙编码 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVTVwallCode
{
    CHAR                            szTVwallCode[NETDEV_LEN_64];  /* 电视墙编码，字符串长度范围[1, 64] */
    BYTE                            byRes[128];                   /* 保留字段 */
}NETDEV_TVWALL_CODE_S, *LPNETDEV_TVWALL_CODE_S;
/**
 * @struct tagNETDEVPermissionInfo
 * @brief 权限信息 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVPermissionInfo
{
    UINT32                          udwMajorPermission;          /* 一级权限 #NETDEV_MAJOR_RIGHT_E */
    UINT32                          udwMinorPermission;          /* 二级权限 #NETDEV_MINOR_RIGHT_XXXX_E */
    UINT32                          udwOrgNum;                   /* 组织数量 */
    UINT32                         *pudwOrgList;                 /* 组织ID列表 需要Malloc申请内存 */
    UINT32                          udwChlNum;                   /* 通道数量 */
    UINT32                         *pudwChlList;                 /* 通道列表 需要Malloc申请内存 */
    UINT32                          udwTvwallNum;                /* 电视墙数量 */
    UINT32                         *pudwTvwallIDList;            /* 电视墙信息列表 需要Malloc申请内存 */
    LPNETDEV_TVWALL_CODE_S          pstTVwallCodeList;           /* 电视墙编码信息列表 需要Malloc申请内存 */
    UINT32                          udwEntranceNum;              /* 出入口数量 */
    UINT32                         *pudwEntranceIDList;          /* 出入口信息列表 需要Malloc申请内存 */
    BYTE                            byRes[492];                  /* 保留字段 */
}NETDEV_PERMISSION_INFO_S, *LPNETDEV_PERMISSION_INFO_S;

/**
 * @struct tagNETDEVRoleInfo
 * @brief 角色信息 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVRoleInfo
{
    UINT32                          udwRoleID;                  /* 角色ID 添加角色可选*/
    UINT32                          udwLevel;                   /* 角色等级 [0,99] */
    CHAR                            szRoleName[NETDEV_LEN_256]; /* 角色名称 [1,64] */
    CHAR                            szDesc[NETDEV_LEN_1024];    /* 描述长度 [0,256] */
    UINT32                          udwOrgID;                   /* 组织ID */
    UINT32                          udwPermissionsNum;          /* 权限数量 */
    LPNETDEV_PERMISSION_INFO_S      pstPermissionList;          /* 权限列表 获取角色列表不返回 需要Malloc申请内存 */
    BYTE                            byRes[256];                 /* 保留字段 */
}NETDEV_ROLE_INFO_S, *LPNETDEV_ROLE_INFO_S;

/**
* 添加角色
* @param [IN]  lpUserID                          用户登录ID User login ID
* @param [IN]  pstRoleInfo                       角色信息 Role info
* @return TRUE表示成功，其他表示失败
* @note VMS支持
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddRole(IN LPVOID lpUserID,
                                                    IN LPNETDEV_ROLE_INFO_S pstRoleInfo);

/**
* 获取指定角色信息
* @param [IN]     lpUserID                          用户登录ID User login ID
* @param [INOUT]  pstRoleInfo                       角色信息 Role info
* @return 0表示失败,其他表示成功,并作为NETDEV_FindNextRolePermissionInfo、NETDEV_FindCloseRolePermissionList的句柄查询权限信息
* @note VMS支持 权限数量仅返回数量不返回权限列表，权限列表通过NETDEV_FindNextRolePermissionInfo获取
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindRoleInfo(IN LPVOID lpUserID,
                                                           INOUT LPNETDEV_ROLE_INFO_S pstRoleInfo);

/**
* 获取角色的权限信息
* @param [IN]     lpRoleHandle                      NETDEV_FindRoleInfo  return value
* @param [INOUT]  pstPermissionInfo                 权限列表信息 Permission list
* @return TRUE表示成功，其他表示失败
* @note VMS支持 pstPermissionInfo->udwNum以及对应的内存应根据NETDEV_FindRoleInfo返回的数量申请
                返回NETDEV_E_NEED_MORE_MEMORY代表pudwChlList或pudwOrgList内存申请不足
*/

NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextRolePermissionInfo(IN LPVOID lpRoleHandle,
                                                                       INOUT LPNETDEV_PERMISSION_INFO_S pstPermissionInfo);

/**
* 关闭角色权限信息的查找 释放资源
* @param [IN]     lpRoleHandle                       NETDEV_FindRoleInfo  return value
* @return TRUE表示成功，其他表示失败
* @note VMS支持 
*/

NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseRolePermissionList(IN LPVOID lpRoleHandle);

/**
* 修改角色
* @param [IN]  lpUserID                          用户登录ID User login ID
* @param [IN]  pstRoleInfo                       角色信息 Role info
* @return TRUE表示成功，其他表示失败
* @note VMS支持
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyRole(IN LPVOID lpUserID,
                                                       IN LPNETDEV_ROLE_INFO_S pstRoleInfo);

/**
* 删除角色
* @param [IN]  lpUserID                          用户登录ID User login ID
* @param [IN]  udwRoleID                         角色ID Role ID
* @return TRUE表示成功，其他表示失败
* @note VMS支持
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeleteRole(IN LPVOID lpUserID,
                                                       IN UINT32 udwRoleID);

/**
* 批量删除角色
* @param [IN]  lpUserID                          用户登录ID User login ID
* @param [IN]  pstRoleDelListInfo                删除角色列表 Role list Deleted
* @return TRUE表示成功，其他表示失败
* @note VMS支持
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_BatchDelRole(IN LPVOID lpUserID,
                                                         IN LPNETDEV_ID_LIST_S pstRoleDelListInfo);

/**
* 获取角色列表
* @param [IN]  lpUserID                          用户登录ID User login ID
* @return 0表示失败,其他表示成功,并作为NETDEV_FindNextRoleInfo、NETDEV_FindCloseRolePermissionList的句柄查询权限信息
* @note VMS支持 不返回权限列表
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindRoleInfoList(IN LPVOID lpUserID);

/**
* 获取角色信息
* @param [IN]  lpFindHandle                查找句柄
* @param [OUT] pstRoleInfo                 角色信息 role info
* @return TRUE表示成功，其他表示失败
* @note VMS支持 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextRoleInfo(IN LPVOID lpFindHandle,
                                                             OUT LPNETDEV_ROLE_INFO_S pstRoleInfo);

/**
* 关闭角色列表的查找 释放资源
* @param [IN]     lpFindHandle                            查找句柄 
* @return TRUE表示成功，其他表示失败
* @note VMS支持 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseRoleInfoList(IN LPVOID lpFindHandle);

/* 用户管理接口 */
/**
 * @struct tagNETDEVRoleBaseInfo
 * @brief 角色信息 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVRoleBaseInfo
{
    UINT32                          udwRoleID;                    /* 角色ID */
    CHAR                            szRoleName[NETDEV_LEN_256];   /* 角色名称 */
    BYTE                            byRes[256];                   /* 保留字段 */
}NETDEV_ROLE_BASE_INFO_S, *LPNETDEV_ROLE_BASE_INFO_S;


/**
* 设置指定用户的锁定状态
* @param [IN]  lpUserID                          用户登录ID User login ID
* @param [IN]  udwUserID                         用户ID User ID
* @param [IN]  bLockStatus                       锁定状态 Lock Status  1:Locked 0:Unlocked
* @return TRUE表示成功，其他表示失败
* @note VMS支持 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetUserLockStatus(IN LPVOID lpUserID, IN UINT32 udwUserID, IN BOOL bLockStatus);

/**
* 获取指定用户的锁定状态
* @param [IN]   lpUserID                          用户登录ID User login ID
* @param [IN]   udwUserID                         用户ID User ID
* @param [OUT]  pbLockStatus                      锁定状态 Lock Status  1:Locked 0:Unlocked
* @return TRUE表示成功，其他表示失败
* @note VMS支持 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetUserLockStatus(IN LPVOID lpUserID, IN UINT32 udwUserID, OUT BOOL *pbLockStatus);

/**
* 修改特定用户的角色信息
* @param [IN]  lpUserID                          用户登录ID User login ID
* @param [IN]  udwUserID                         用户ID User ID
* @param [IN]  pstRoleList                       角色列表 Role List
* @return TRUE表示成功，其他表示失败
* @note VMS支持 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyRoleInfoOfUser(IN LPVOID lpUserID, IN UINT32 udwUserID, IN LPNETDEV_ID_LIST_S pstRoleList);

/**
* 查询特定用户的角色信息 获取查询句柄
* @param [IN]  lpUserID                          用户登录ID User login ID
* @param [IN]  udwUserID                         用户ID User ID
* @return 0表示失败,其他表示成功,并作为NETDEV_FindNextRoleBaseInfoOfUser、NETDEV_FindCloseRoleBaseInfoOfUserList的句柄查询权限信息
* @note VMS支持 
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindRoleBaseInfoOfUserList(IN LPVOID lpUserID, IN UINT32 udwUserID);

/**
* 查询特定用户的角色信息 查询
* @param [IN]  lpFindHandle                查找句柄
* @param [OUT] pstRoleBaseInfo             角色基本信息 Role base info
* @return TRUE表示成功，其他表示失败
* @note VMS支持 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextRoleBaseInfoOfUser(IN LPVOID lpFindHandle, OUT LPNETDEV_ROLE_BASE_INFO_S pstRoleBaseInfo);

/**
* 查询特定用户的角色信息 关闭查找释放资源
* @param [IN]  lpFindHandle                查找句柄
* @return TRUE表示成功，其他表示失败
* @note VMS支持 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseRoleBaseInfoOfUserList(IN LPVOID lpFindHandle);

/**
* 当前用户密码修改
* @param [IN]  lpUserID                         用户登录ID User login ID
* @param [IN]  pcOldPassword                    旧密码[0,256] Old Password
* @param [IN]  pcNewPassword                    新密码[0,256] New Password
* @return TRUE表示成功，其他表示失败
* @note VMS支持 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyCurrentPin(IN LPVOID lpUserID, IN CHAR *pcOldPassword, IN CHAR *pcNewPassword);


/**
 * @struct tagNETDEVUserExtendInfo
 * @brief 用户扩展信息 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVUserExtendInfo
{
    CHAR                            szCertificateCode[NETDEV_LEN_64];       /* 证件号码 [1,64] */
    CHAR                            szEmail[NETDEV_LEN_64];                 /* 邮箱号码 [1,64] */
    CHAR                            szTelephone[NETDEV_LEN_64];             /* 电话号码 [1,64] */
    CHAR                            szDesc[NETDEV_LEN_512];                 /* 描述 [1,128] */
    CHAR                            szName[NETDEV_LEN_64];                  /* 姓名 [1,64] */
    BYTE                            byRes[192];                             /* 保留字段 */
}NETDEV_USER_EXTEND_INFO_S, *LPNETDEV_USER_EXTEND_INFO_S;

/**
 * @struct tagNETDEVUserDetailInfo
 * @brief 用户详细信息 结构体定义 
 * @attention 无 None
 */
typedef struct tagNETDEVUserDetailInfoV30
{
    UINT32                          udwUserID;                              /* 用户ID Get必选 仅VMS支持 */
    UINT32                          udwLevel;                               /* 用户等级 Post Put必选 仅NVR支持 见 #NETDEV_USER_LEVEL_E */
    CHAR                            szUserName[NETDEV_LEN_256];             /* 用户名称[1,64] */
    CHAR                            szPassword[NETDEV_LEN_256];             /* 用户密码 Post Put必选[0,256] */
    CHAR                            szOldPassword[NETDEV_LEN_256];          /* 用户旧密码 仅NVR支持修改密码 Put必选[0,256] */
    NETDEV_TIME_TEMPLATE_S          stTimeTemplateInfo;                     /* 时间模板信息 Get返回ID、名称 Post Put必选ID 描述不返回 仅VMS支持 */
    NETDEV_TIME_S                   stValidBeginTime;                       /* 用户有效期开始时间 精确到日 Get Post Put必选 仅VMS支持 */
    NETDEV_TIME_S                   stValidEndTime;                         /* 用户有效期结束时间 精确到日 Get Post Put必选 仅VMS支持 */
    NETDEV_USER_EXTEND_INFO_S       stUserExtendInfo;                       /* 用户扩展信息 Post Put必选 仅VMS支持  */
    UINT32                          udwOrgID;                               /* 组织ID 仅IPM支持 不支持修改 */
    BYTE                            byRes[252];                             /* 保留字段 */
}NETDEV_USER_DETAIL_INFO_V30_S, *LPNETDEV_USER_DETAIL_INFO_V30_S;

/**
 * @struct tagNETDEVUserNameInfoList
 * @brief 用户名列表 结构体定义
 * @attention 无 None
 */
typedef struct tagNETDEVUserNameInfoList
{
    CHAR                            szUserName[NETDEV_LEN_256];             /* 用户名[1,64] */
    BYTE                            byRes[256];                             /* 保留字段 */
}NETDEV_USER_NAME_INFO_LIST_S, *LPNETDEV_USER_NAME_INFO_LIST_S;

/**
* 添加用户 创建用户
* @param [IN] lpUserID                    用户登录ID User login ID
* @param [IN] pstUserDetailInfo           用户详细信息 User detail info
* @return TRUE表示成功，其他表示失败
* @note VMS、NVR支持
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_AddUserV30(IN LPVOID lpUserID, IN LPNETDEV_USER_DETAIL_INFO_V30_S pstUserDetailInfo);

/**
* 删除用户 支持批量
* @param [IN] lpUserID                    用户登录ID User login ID
* @param [IN] udwUserNum                  用户名数量 User num
* @param [IN] pstUserNameList             用户名列表 Username list
* @return TRUE表示成功，其他表示失败
* @note VMS、NVR支持 
        仅返回操作数量、结果码及ID    pstResultList Only return udwNum、udwResultCode、udwID
        pstResultList->udwUserNum must not be less than udwUserNum.
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_DeleteUserV30(IN LPVOID lpUserID, IN UINT32 udwUserNum, IN LPNETDEV_USER_NAME_INFO_LIST_S pstUserNameList, OUT LPNETDEV_BATCH_OPERATOR_LIST_S pstResultList);

/**
* 修改指定用户信息
* @param [IN] lpUserID                    用户登录ID User login ID
* @param [IN] pstUserModifyInfo           用户修改信息 User modify info
* @return TRUE表示成功，其他表示失败
* @note VMS、NVR支持  以用户名为索引,暂不支持修改用户名
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_ModifyUserV30(IN LPVOID lpUserID, IN LPNETDEV_USER_DETAIL_INFO_V30_S pstUserModifyInfo);

/**
* 获取指定用户全部信息
* @param [IN]    lpUserID                    用户登录ID User login ID
* @param [INOUT] pstUserDetailInfo           用户详细信息 User detail info
* @return TRUE表示成功，其他表示失败
* @note VMS、NVR支持
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetUserDetailInfoV30(IN LPVOID lpUserID, INOUT LPNETDEV_USER_DETAIL_INFO_V30_S pstUserDetailInfo);

/**
* 获取全部用户全部信息 获取查询句柄
* @param [IN]  lpUserID                          用户登录ID User login ID
* @return 0表示失败,其他表示成功,并作为NETDEV_FindNextUserDetailInfoV30、NETDEV_FindCloseUserDetailInfoListV30的句柄查询权限信息
* @note VMS、NVR支持
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_FindUserDetailInfoListV30(IN LPVOID lpUserID);

/**
*  获取全部用户全部信息 查找
* @param [IN]  lpFindHandle                查找句柄
* @param [OUT] pstUserDetailInfo           用户详细信息 User detail info
* @return TRUE表示成功，其他表示失败
* @note VMS、NVR支持
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindNextUserDetailInfoV30(IN LPVOID lpFindHandle, OUT LPNETDEV_USER_DETAIL_INFO_V30_S pstUserDetailInfo);

/**
*  获取全部用户全部信息 关闭查找释放资源
* @param [IN]  lpFindHandle                查找句柄
* @return TRUE表示成功，其他表示失败
* @note VMS、NVR支持
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_FindCloseUserDetailInfoListV30(IN LPVOID lpFindHandle);



/**************************************************************************************************************************************************************/
/*                                                                ITS&PARK设备业务功能*/
/**************************************************************************************************************************************************************/
/************************************************************************Begin*****************************************************************************/
/***********************************************************************************************************************/
/*                                                    ITS&PARK业务模块                                                              */
/***********************************************************************************************************************/

/************************************************************************/
/*                     模块宏定义                                 */
/************************************************************************/

	/*@brief gsoap调用endpoint长度 */
#define IMOS_MW_ENDPOINT_LEN                       96
	/* 通用长度  Common length */
#define NETDEV_LEN_25                              25    /**< 清晰度数据长度  Common length */
	/**< 用户名最大长度  Maximum length of username */
#define NETDEV_USER_NAME_LEN                       32
	/**< 密码最大长度  Maximum length of password */
#define NETDEV_PASSWD_LEN                          64

/**<Points最多数量 Maximum Points*/
#define NETDEV_ITS_POINT_NUM                       12

	/* 照片类型 */
#define	NETDEV_IMAGE_VEHICLE                             1           /**< 车辆大图 */
#define NETDEV_IMAGE_PLATE_COLOR                         2           /**< 车牌彩色小图 */
#define NETDEV_IMAGE_PLATE_BINARY                        3           /**< 车牌二值化图 */
#define NETDEV_IMAGE_DRIVER_FACE                         4           /**< 驾驶员面部特征图 */
#define NETDEV_IMAGE_COPILOT_FACE                        5           /**< 副驾驶员面部特征图 */
#define NETDEV_IMAGE_CAR_LOGO                            6           /**< 车标 */
#define NETDEV_IMAGE_COMPOUND                            7           /**< 违章合成图, 值为7是为了与平台保持一致 */
#define NETDEV_IMAGE_TG_COMPOUND                         8           /**< 过车合成图 */
#define NETDEV_IMAGE_CLOSEUP                             9           /**< 车辆特写图 */
#define NETDEV_IMAGE_RECORD                              50          /**< 违章录像 */




#define NETDEV_LEN_18                18   

#define NETDEV_PECCANCYTYPE_CODE_MAX_NUM          16
#define NETDEV_CAR_VEHICLE_BRAND_LEN              4
#define NETDEV_CAR_PLATE_MAX_LEN                  32
#define NETDEV_DIRECTION_NAME_MAX_LEN             64
#define NETDEV_PLACE_NAME_MAX_LEN                 256
#define NETDEV_TOLLGATE_NAME_MAX_LEN              64
#define NETDEV_DEV_ID_MAX_LEN                     32
#define NETDEV_ITS_PLACE_NAME_MAX_LEN             256      /**< 照片结构地点名称最大长度 */

	/*@brief 通用名称字符串长度 */
#define IMOS_MW_NAME_LEN                           64
#define NETDEV_ITS_NAME_LEN                           64

	/* 宇视协议包头/包尾/最大长度 */
#define XP_UNI_JPEG_HEAD                           0x77aa77aa
#define XP_UNI_JPEG_TAIL                           0x77ab77ab
#define XP_UNIVIEW_PRO_HEADER_MAX_LEN              16
#define XP_UNIVIEW_PRO_TAIL_MAX_LEN                4
#define PLAYER_CUR_UNIVEW_VERSION                  2
#define PLAYER_XML_BUFF_LEN                        1024

#define PLAPER_PIC_NUM_ERR                         2          /* 宇视协议解析图片数量错误 */

#define IW_ENC_VERSION_TEXT1                    "V3R2_EncVer_1"  
#define IW_ENC_VERSION_TEXT_LEN                 sizeof(IW_ENC_VERSION_TEXT1)        /* 加密算法版本号长度 */
#define IW_MD5_CIPHER_TEXT_LEN                  (16)                                /* MD5 密文信息长度 */
#define IW_OCL_MAX_NUM                          (7)                                 /* 特征车牌候选区域最大个数 */
#define IW_OCL_MAX_NUM                          (7)                                 /* 特征车牌候选区域最大个数 */
#define IW_LOOP_COIL_MAX_NUM                    (8)                                 /* 地感线圈最大个数(表示同一时刻最多使用的线圈个数) */
#define IW_LOOP_COIL_MAX_NUM                    (8)                                 /* 地感线圈最大个数(表示同一时刻最多使用的线圈个数) */
#define IW_LOOP_COIL_MAX_NUM                    (8)                                 /* 地感线圈最大个数(表示同一时刻最多使用的线圈个数) */

	/*******************************************************************************
	SDK 错误码/状态码
	*******************************************************************************/
	/* 通用成功 */
#define ERR_COMMON_SUCCEED                       0x000000      /**< 执行成功 */

	/*********************** SDK 状态码定义(257 - 356) *****************************/
#define ERR_SDK_LOG_CLOSE                        257            /**< SDK 日志关闭 */
#define ERR_SDK_DEVICE_STREAM_FULL               259            /**< 设备流已满 */
#define ERR_SDK_DEVICE_STREAM_CLOSED             260            /**< 设备流已关闭 */
#define ERR_SDK_DEVICE_STREAM_NONEXIST           261            /**< 设备流不存在 */
#define ERR_SDK_USER_PASSWORD_CHANGE             262            /**< 用户密码修改 */
#define ERR_SDK_USER_DELETED                     263            /**< 用户已删除 */
#define ERR_SDK_USER_WORKMODE_CHANGE             264            /**< 用户工作模式修改 */

	/*********************** SDK 错误码定义(357 - 506) *****************************/
#define ERR_SDK_COMMON_FAIL                      357            /**< 操作失败 */
#define ERR_SDK_COMMON_INVALID_PARAM             358            /**< 输入参数非法 */
#define ERR_SDK_COMMON_NO_MEMORY                 359            /**< 系统内存不足 */
#define ERR_SDK_COMMON_SYS_FAIL                  360            /**< 系统通用错误，Q: 暂未使用 */
#define ERR_SDK_COMMON_FAIL_STAT                 361            /**< 读取文件（目录）状态失败 */
#define ERR_SDK_COMMON_FILE_NONEXIST             362            /**< 文件不存在 */
#define ERR_SDK_COMMON_NOTSUPPORT                363            /**< 接口不支持 */

#define ERR_SDK_USER_NOT_AUTHORIZED              457            /**< 用户未授权 */
#define ERR_SDK_USERFULL                         458            /**< 用户已满 */
#define ERR_SDK_USERNONEXIST                     459            /**< 用户不存在 */
#define ERR_SDK_USER_PASSWD_INVALID              460            /**< 用户密码错误 */
#define ERR_SDK_USER_KEEPALIVEFAIL               461            /**< SDK保活失败 */
#define ERR_SDK_NOTINIT                          462            /**< SDK未初始化 */
#define ERR_SDK_REINIT                           463            /**< SDK已初始化 */

#define ERR_SDK_CREATE_THREAD_FAIL               466            /**< 创建线程失败 */
#define ERR_SDK_NOENOUGH_BUF                     467            /**< 缓冲区太小: 接收设备数据的缓冲区 */
#define ERR_SDK_SOCKET_LSN_FAIL                  468            /**< 创建socket listen失败 */
#define ERR_SDK_SUBSCRIBE_FULL                   470            /**< 本用户订阅已满, 设备侧用户订阅已满的错误码不能返回 */
#define ERR_SDK_COMMAND_SEND_FAIL                471            /**< 请求发送失败 */
#define ERR_SDK_COMMAND_TIMEOUT                  472            /**< 请求超时 */
#define ERR_SDK_UPDATE_NOTADMIN                  473            /**< 非admin用户无法升级 */
#define ERR_SDK_UPDATE_INVALID                   474            /**< 升级 未开始 */
#define ERR_SDK_UPDATE_INPROCESS                 475            /**< 升级 处理中 */
#define ERR_SDK_UPDATE_NOMEMORY                  476            /**< 升级 内存空间不够 */
#define ERR_SDK_UPDATE_FILE_OPEN_ERR             477            /**< 升级 打开镜像文件出错 */
#define ERR_SDK_UPDATE_DEVICE_ERR                478            /**< 升级 FLASH出错 */
#define ERR_SDK_UPDATE_BUSY                      479            /**< 不能同时加载多个升级进程 */
#define ERR_SDK_UPDATE_FAIL_TIMEOUT              480            /**< 升级超时 */

#define ERR_SDK_IP_CONFLICT                      486            /**< IP地址冲突 */
#define ERR_SDK_NETWORKMODE_NOTSUPPORT           487            /**< 网口模式不支持 */


	/* 视频编码、音频编解码参数、OSD、ROI */
#define IMOS_MW_VIDEOIN_MODE_CFG            30         /**< 获取/设置 视频编码制式，对应结构定义: IMOS_MW_VIDEOIN_MODE_CFG_S */
#define IMOS_MW_VIDEO_ENCODER_CFG           31         /**< 获取/设置 视频编码参数配置，对应结构定义:IMOS_MW_VIDEO_ENCODER_CFG_S */
#define IMOS_MW_AUDIO_IN_CFG                32         /**< 获取/设置 音频输入参数配置，对应结构定义:IMOS_MW_AUDIO_IN_CFG_S */
#define IMOS_MW_AUDIO_OUT_CFG               33         /**< 获取/设置 音频输出参数配置，对应结构定义:IMOS_MW_AUDIO_OUT_CFG_S */
#define IMOS_MW_ROI_CFG                     34         /**< 获取/设置 ROI 配置，对应结构定义: IMOS_MW_ROI_S */
#define IMOS_MW_OSD_STYLE_CFG               35         /**< 获取/设置 叠加OSD样式配置，对应结构定义: IMOS_MW_OSD_STYLE_CFG_S */
#define IMOS_MW_INFO_OSD_CFG                36         /**< 获取/设置/删除 叠加OSD配置，对应结构定义: IMOS_MW_INFO_OSD_CFG_S */
#define IMOS_MW_COVER_OSD_CFG               37         /**< 获取/设置/删除 遮盖OSD配置，对应结构定义: IMOS_MW_COVER_OSD_CFG_S */
#define IMOS_MW_SUB_OSD_CFG                 38         /**< 获取/设置 其他OSD配置，对应结构定义: IMOS_MW_SUB_OSD_CFG_S */
#define IMOS_MW_AUTO_SEND_STREAM_CFG        39         /**< 获取/设置 流媒体保存配置 对应结构定义: IMOS_MW_AUTOSEND_STREAM_CFG_S */
#define IMOS_MW_OSD_STYLE_EX_CFG            205        /**< 获取/设置 叠加扩展OSD样式配置，对应结构定义: IMOS_MW_OSD_STYLE_EX_CFG_S */
#define IMOS_MW_AUDIO_ECHO_CANCELLATION     207        /**< 获取/设置 音频回声抵消打开和关闭，对应参数: ULONG */
#define IMOS_MW_MUTIVIDEO_ENCODER_CFG       218        /**< 获取/设置 多路视频编码参数配置，对应结构定义:IMOS_MW_MUTIVIDEO_ENCODER_CFG_S */
#define IMOS_MW_INFO_OSD_EX_CFG             222        /**< 获取/设置/删除 叠加OSD扩展配置，对应结构定义: IMOS_MW_INFO_OSD_EX_CFG_S */

	/* 卡口相关: 基本配置、智能配置 */
#define IMOS_MW_PHOTO_SERVER_CFG            61         /**< 获取/设置 照片接收服务器信息，对应结构定义: IMOS_MW_PHOTO_SERVER_CFG_S */
#define IMOS_MW_FLASH_LIGHT_CFG             62         /**< 获取/设置 闪光灯配置，对应结构定义: IMOS_MW_FLASH_LIGHT_CFG_S */
#define IMOS_MW_VEHICLE_DETECTOR_CFG        63         /**< 获取/设置 车检器配置，对应结构定义: IMOS_MW_VEHICLE_DETECTOR_CFG_S */
#define IMOS_MW_RADAR_CFG                   64         /**< 获取/设置 雷达配置，对应结构定义: IMOS_MW_RADAR_CFG_S */
#define IMOS_MW_CAMERA_CAPTURE_CFG          65         /**< 获取/设置 抓拍配置，对应结构定义: IMOS_MW_CAMERA_CAPTURE_CFG_S */
#define IMOS_MW_VIDEO_DETECT_CFG            66         /**< 获取/设置 视频检测配置，对应结构定义: IMOS_MW_VIDEO_DETECT_CFG_S */
#define IMOS_MW_PLATE_IDENTIFY_CFG          67         /**< 获取/设置 车牌识别配置，对应结构定义: IMOS_MW_PLATE_IDENTIFY_CFG_S */
#define IMOS_MW_DRIVEWAY_CFG                68         /**< 获取/设置 车道配置，对应结构定义: IMOS_MW_DRIVEWAY_CFG_S */
#define IMOS_MW_SUBDEVICE_SWITCH_CFG        69         /**< 获取/设置 外设开关配置，对应结构定义: IMOS_MW_SUBDEVICE_SWITCH_CFG_S */
#define IMOS_MW_LASER_CFG                   70         /**< 获取/设置 激光配置，对应结构定义: IMOS_MW_LASER_CFG_S */
#define IMOS_MW_CAPTURE_FORMAT_CFG          71         /**< 获取/设置 抓拍图片参数配置，对应结构定义: IMOS_MW_CAPTURE_FORMAT_CFG_S */
#define IMOS_MW_POLARIZER_CFG               72         /**< 获取/设置 偏振镜配置，对应结构定义: IMOS_MW_POLARIZER_CFG_S */
#define IMOS_MW_ND_FILTER_CFG               73         /**< 获取/设置 ND滤镜配置，对应结构定义: IMOS_MW_ND_FILTER_CFG_S */
#define IMOS_MW_DRIVEWAY_EXPAND_CFG         74         /**< 获取/设置 车道扩展配置，对应结构定义: IMOS_MW_DRIVEWAY_EXPAND_CFG_S */
#define IMOS_MW_SUBDEVICE_SWITCH_EXPAND_CFG 75         /**< 获取/设置 外设开关扩展配置，对应结构定义: IMOS_MW_SUBDEVICE_SWITCH_EXPAND_CFG_S */
#define IMOS_MW_SUB_OSD_EXPAND_CFG          76         /**< 获取/设置 其他OSD扩展配置，对应结构定义: IMOS_MW_SUB_OSD_EXPAND_CFG_S */
#define IMOS_MW_YJ_PHOTO_SERVER_CFG         77         /**< 获取/设置 银江照片接收服务器特殊字段信息，对应结构定义: IMOS_MW_YJ_PHOTO_SERVER_CFG_S */
#define IMOS_MW_IO_PORT_CFG                 78         /**< 获取/设置 IO Port端口配置，对应结构定义: IMOS_MW_IO_PORT_CFG_S */ 

	/************************************ITS&PARK状态上报类型及结构体定义**********START**************************************/

	/**@brief 设备状态上报类型 */
#define NETDEV_ITS_STATUS_TRAFFICLIGHT                155          /**< 信号灯实时在线状态  对应参数: NETDEV_ITS_TRAFFICLIGHT_STATUS_XXX */
#define NETDEV_ITS_STATUS_KEEPALIVE                   0            /**< SDK保活，状态码为: ERR_SDK_USER_KEEPALIVEFAIL */
#define NETDEV_ITS_STATUS_UPDATE                      1            /**< 升级结果，状态码为: ERR_SDK_UPDATE_INVALID 等 */
//#define NETDEV_ITS_STATUS_DETECTED_ACTIVITY           2            /**< 运动检测区域运动量， 对应参数:NETDEV_ITS_MOTION_ACTIVITY_INFO_S */
#define NETDEV_ITS_STATUS_USERINFO_CHANGE             3            /**< 用户信息修改, 状态码为: ERR_SDK_USER_PASSWORD_CHANGE 等 */
#define NETDEV_ITS_STATUS_WORKMODE_CHANGE             5            /**< 用户工作模式修改, 状态码为: ERR_SDK_USER_WORKMODE_CHANGE 等 */
#define NETDEV_ITS_STATUS_MANAGE_SERVER_ONLINE        50           /**< 管理服务器的连接状态，对应参数BOOL_T: ON:1  OFF:0 */
#define NETDEV_ITS_STATUS_PHOTO_SERVER_ONLINE         51           /**< 照片服务器的连接状态，对应参数BOOL_T: ON:1  OFF:0 */
#define NETDEV_ITS_STATUS_NETWORK_CHANGE              54           /**< 网口配置结果，状态码为: ERR_SDK_IP_CONFLICT 等 */
#define NETDEV_ITS_STATUS_PORTMAP_CHANGE              59           /**< UPNP端口映射状态改变标志位, 对应参数类型: BOOT_T: 改变:1  不改变:0 */
#define NETDEV_ITS_STATUS_DDNS_DOMAIN_CHECK_RESULT    61           /**< DDNS域名检测完成 对应参数类型: BOOT_T: 改变:1  不改变:0 */
#define NETDEV_ITS_STATUS_STOR_MEMORY_CARD_FORMAT     90           /**< 本地存储设备格式化状态， 状态码为: ERR_COMMON_SUCCEED等 */
#define NETDEV_ITS_STATUS_STOR_NAS_MOUNT              91           /**< NAS挂载状态 状态码为: ERR_COMMON_SUCCEED等 */
#define NETDEV_ITS_STATUS_PTZ                         100          /**< 云台状态，对应参数类型: NETDEV_ITS_PTZ_STATUS_S */
#define NETDEV_ITS_STATUS_SCENE_CURRENT               120          /**< 场景自动切换的当前场景ID, 对应参数类型: ULONG */
#define NETDEV_ITS_STATUS_SERIALINPUTDATA             133          /**< 串口输入OSD数据，对应参数为字符串szCOMOSD */
#define NETDEV_ITS_STATUS_COIL                        151          /**< 线圈状态  信息内容为: NETDEV_ITS_COIL_STATE_S 的数组，支持 8个*/
#define NETDEV_ITS_STATUS_RADAR                       150          /**< 雷达状态  对应参数: IMOS_MW_RADAR_XXX */
#define NETDEV_ITS_STATUS_POLARIZER                   152          /**< 偏振镜状态  对应参数: NETDEV_ITS_POLARIZER_TYPE_E */
#define NETDEV_ITS_STATUS_LED_STROBE                  153          /**< LED灯状态  对应参数: NETDEV_STATUS_LEDSTROBE_TYPE_E */
#define NETDEV_ITS_STATUS_ND_FILTER                   154          /**< ND滤镜状态  对应参数: NETDEV_ITS_POLARIZER_STATUS */
#define NETDEV_ITS_STATUS_SD                          156          /**< SD卡状态  对应参数: NETDEV_ITS_SD_STATUS_NOEXIST */
#define NETDEV_ITS_STATUS_CAPTURE                     157          /**< 抓拍上报 对应参数:NETDEV_ITS_CAPTURE_AUTO_TYPE */
#define NETDEV_ITS_STATUS_TRAFFICLIGHT_COLOUR         158          /**< 红绿灯状态,对应参数:ULONG:从低到高, byte0=右转灯, byte1=直行灯, byte2=左转灯 */
#define NETDEV_ITS_STATUS_IVA_ILLEGAL_DETECT_REPORT   159          /**< 抓拍检测上报 对应参数:NETDEV_ITS_IVA_ILLEGAL_DETECT_REPORT_S */
#define NETDEV_ITS_STATUS_IVA_PARK_STATUS_REPORT      160          /**< 车位状态上报 对应内容参见:NETDEV_ITS_PARK_STATUS_S */
#define NETDEV_ITS_STATUS_IVA_PARK_ALARM_REPORT       161          /**< 车位告警上报 对应参数:NETDEV_ITS_PARK_ALARM_S */
#define NETDEV_ITS_STATUS_IVA_PERSON_COUNT_REPORT     163          /**< 人数统计上报 对应参数:NETDEV_ITS_PERSON_COUNT_INFO_S */
#define NETDEV_ITS_STATUS_IVA_PARK_STATUS_REPORT_EX   164          /**< 车位状态上报扩展 对应参数:NETDEV_ITS_PARK_STATUS_EX_S */
#define NETDEV_ITS_STATUS_TRAFFIC_PARAM_REPORT        169          /**< 交通参数上报 对应参数:NETDEV_ITS_TRAFFIC_PARA_RSLT_S */
#define NETDEV_ITS_STATUS_VEHICLE_PARAM_REPORT        170          /**< 车辆进出状态上报 对应参数:NETDEV_ITS_VEHICLE_STATE_S */

/**
 * @brief 状态回调的消息类型 枚举定义 Exception callback message types Enumeration definition 
 * @attention 无 None
 */
typedef enum tagNETITSStatusTypeEnum
{

	/**@brief 设备状态上报类型 */
	/*异常状态类型*/
    NETDEV_ITS_DEV_OFFLINE_E                        = 0,            /*设备连接异常*/
	NETDEV_ITS_DEV_RONLINE_E                        = 1,            /*设备重连成功*/
	NETDEV_ITS_MEDIA_OFFLINE_E                      = 201,          /*媒体流连接异常*/
	NETDEV_ITS_MEDIA_RONLINE_E                      = 301,          /*媒体流重连成功*/
	NETDEV_ITS_STATUS_USERINFO_CHANGE_E             = 3,            /*用户信息修改 */
	NETDEV_ITS_STATUS_WORKMODE_CHANGE_E             = 5,            /*用户工作模式修改*/

    /*信息状态类型*/
	NETDEV_ITS_STATUS_TRAFFICLIGHT_E                = 155,          /**< 信号灯实时在线状态  参见: NETDEV_ITS_TRAFFIClIGHT_TYPE_E */
	//NETDEV_ITS_STATUS_DETECTED_ACTIVITY_E           = 2,          /**< 运动检测区域运动量，参见: NETDEV_ITS_MOTION_ACTIVITY_INFO_S */
	NETDEV_ITS_STATUS_MANAGE_SERVER_ONLINE_E        = 50,           /**< 管理服务器的连接状态，参见: NETDEV_ITS_SERVER_TYPE_E */
	NETDEV_ITS_STATUS_PHOTO_SERVER_ONLINE_E         = 51,           /**< 照片服务器的连接状态，参见: NETDEV_ITS_SERVER_TYPE_E*/
	NETDEV_ITS_STATUS_NETWORK_CHANGE_E              = 54,           /**< 网口配置结果，参见: NETDEV_ITS_IPCONFLICT_TYPE_E 等 */
	NETDEV_ITS_STATUS_PORTMAP_CHANGE_E              = 59,           /**< UPNP端口映射状态改变标志位, 参见: NETDEV_ITS_PORTMAP_TYPE_E */
	NETDEV_ITS_STATUS_DDNS_DOMAIN_CHECK_RESULT_E     = 61,          /**< DDNS域名检测完成，参见: NETDEV_ITS_DDNS_TYPE_E */
	NETDEV_ITS_STATUS_STOR_MEMORY_CARD_FORMAT_E      = 90,         /**< 本地存储设备格式化状态， 参见: NETDEV_ITS_SD_TYPE_E */
	NETDEV_ITS_STATUS_STOR_NAS_MOUNT_E               = 91,           /**< NAS挂载状态 状态码为: ERR_COMMON_SUCCEED等 */
	NETDEV_ITS_STATUS_PTZ_E                          = 100,          /**< 云台状态，对应参数类型: NETDEV_ITS_PTZ_STATUS_S */
	NETDEV_ITS_STATUS_SCENE_CURRENT_E                = 120,          /**< 场景自动切换的当前场景ID, 对应参数类型: ULONG */
	NETDEV_ITS_STATUS_SERIALINPUTDATA_E              = 133,          /**< 串口输入OSD数据，对应参数为字符串szCOMOSD */
	NETDEV_ITS_STATUS_COIL_E                         = 151,          /**< 线圈状态  信息内容参见: NETDEV_ITS_COIL_STATE_S 的数组，支持 8个*/
	NETDEV_ITS_STATUS_RADAR_E                        = 150,          /**< 雷达状态  对应参数类型: ULONG */
	NETDEV_ITS_STATUS_POLARIZER_E                    = 152,          /**< 偏振镜状态  对应参见: NETDEV_ITS_POLARIZER_TYPE_E */
	NETDEV_ITS_STATUS_LED_STROBE_E                   = 153,          /**< LED灯状态  对应参见: NETDEV_ITS_LEDSTROBE_TYPE_E */
	NETDEV_ITS_STATUS_ND_FILTER_E                    = 154,          /**< ND滤镜状态  对应参数: NETDEV_ITS_POLARIZER_TYPE_E */
	NETDEV_ITS_STATUS_SD_E                           = 156,          /**< SD卡状态  对应参数参见: NETDEV_ITS_SDSTATUS_TYPE_E */
	NETDEV_ITS_STATUS_CAPTURE_E                      = 157,          /**< 抓拍上报 对应参数参见:NETDEV_ITS_CAPTURE_TYPE_E */
	NETDEV_ITS_STATUS_TRAFFICLIGHT_COLOUR_E          = 158,          /**< 红绿灯状态,对应参数:ULONG:从低到高, byte0=右转灯, byte1=直行灯, byte2=左转灯 */
	NETDEV_ITS_STATUS_IVA_ILLEGAL_DETECT_REPORT_E    = 159,          /**< 抓拍检测上报 对应参数:NETDEV_ITS_IVA_ILLEGAL_DETECT_REPORT_S */
	NETDEV_ITS_STATUS_IVA_PARK_STATUS_REPORT_E       = 160,          /**< 车位状态上报 对应参数:NETDEV_ITS_PARK_STATUS_S */
	NETDEV_ITS_STATUS_IVA_PARK_ALARM_REPORT_E        = 161,          /**< 车位告警上报 对应参数:NETDEV_ITS_PARK_ALARM_S */
	NETDEV_ITS_STATUS_IVA_PERSON_COUNT_REPORT_E      = 163,          /**< 人数统计上报 对应参数:NETDEV_ITS_PERSON_COUNT_INFO_S */
	NETDEV_ITS_STATUS_IVA_PARK_STATUS_REPORT_EX_E    = 164,          /**< 车位状态上报扩展 对应参数:NETDEV_ITS_PARK_STATUS_EX_S */
	NETDEV_ITS_STATUS_TRAFFIC_PARAM_REPORT_E         = 169,          /**< 交通参数上报 对应参数:NETDEV_ITS_TRAFFIC_PARA_RSLT_S */
	NETDEV_ITS_STATUS_VEHICLE_PARAM_REPORT_E         = 170,          /**< 车辆进出状态上报 对应参数:NETDEV_ITS_VEHICLE_STATE_S */

	NETDEV_ITS_STATUS_INVALID               = 0xFFFF        /* 无效值  Invalid value */
}NETDEV_ITS_STATUS_TYPE_E;

typedef enum tagNETDEVITSServerType
{
	NETDEV_ITS_SERVER_TYPE_OFFLINE          = 0,             /**< 在线 */
	NETDEV_ITS_SERVER_TYPE_ONLINE           = 1,             /**< 离线 */
	NETDEV_ITS_SERVER_TYPE_INVALID          = 0xFFFF        /* 无效值  Invalid value */
}NETDEV_ITS_SERVER_TYPE_E;

typedef enum tagNETDEVITSIPConflictType
{
	NETDEV_ITS_IPCONFLICT_TYPE           = 486,                    /**< IP地址冲突 */
	NETDEV_ITS_IPCONFLICT_TYPE_INVALID   = 0xFFFF                  /* 无效值  Invalid value */
}NETDEV_ITS_IPCONFLICT_TYPE_E;

typedef enum tagNETDEVITSPortmapType
{
	NETDEV_ITS_PORTMAP_TYPE_NOCHANGE        = 0,             /**< 改变*/
	NETDEV_ITS_PORTMAP_TYPE_CHANGE          = 1,             /**< 不改变*/
	NETDEV_ITS_PORTMAP_TYPE_INVALID         = 0xFFFF         /* 无效值  Invalid value */
}NETDEV_ITS_PORTMAP_TYPE_E;

typedef enum tagNETDEVITSDDNSType
{
	NETDEV_ITS_DDNS_TYPE_NOCHANGE        = 0,                /**< 改变*/
	NETDEV_ITS_DDNS_TYPE_CHANGE          = 1,                /**< 不改变*/
	NETDEV_ITS_DDNS_TYPE_INVALID         = 0xFFFF            /* 无效值  Invalid value */
}NETDEV_ITS_DDNS_TYPE_E;

typedef enum tagNETDEVITSSDFormatType
{
	NETDEV_ITS_SDFORMAT_TYPE           = 1,                    /**< 格式化 */
	NETDEV_ITS_SDFORMAT_TYPE_INVALID   = 0xFFFF                  /* 无效值  Invalid value */
}NETDEV_ITS_SD_TYPE_E;


#define NETDEV_ITS_DEV_ID_MAX_LEN                               32          /**< 设备编号最大长度 */
#define NETDEV_ITS_TOLLGATE_NAME_MAX_LEN                        64          /**< 卡口设备名称最大长度 */
#define NETDEV_ITS_UNIVIEW_MAX_TIME_LEN                         18          /**< 照片结构时间信息最大长度 */
	/**@brief 云台状态 */
#define NETDEV_ITS_PTZ_STATUS_IDLE                    0             /**< 空闲状态 */
#define NETDEV_ITS_PTZ_STATUS_USER_CTRL               1             /**< 用户控制 */
#define NETDEV_ITS_PTZ_STATUS_AUTO_CRUISE             2             /**< 自动巡航 ulStatusPara1=轨迹ID */
#define NETDEV_ITS_PTZ_STATUS_MANUAL_CRUISE           3             /**< 手动巡航 ulStatusPara1=轨迹ID */
#define NETDEV_ITS_PTZ_STATUS_TRACK_RECORD            4             /**< 轨迹录制 ulStatusPara1=轨迹ID */
#define NETDEV_ITS_PTZ_STATUS_IVA_PLAN                5             /**< 智能计划执行过程中 */
#define NETDEV_ITS_PTZ_STATUS_PEARL_EYE               6             /**< 鱼眼EPTZ 仅上报状态, 无参数 */

#define NETDEV_ITS_PARK_ALARM_FULL                    1        /**< 车位满告警 */
/**@brief 停车场车位告警类型 */
#define NETDEV_ITS_CAPTURE_AUTO_TYPE                  0        /**< 自动抓拍，包括外设抓拍、绊线触发 */
#define NETDEV_ITS_CAPTURE_MANUAL_TYPE                 1       /**< 手动抓拍 */
typedef enum tagNETDEVITSCaptureType
{
    NETDEV_ITS_CAPTURE_AUTO_TYPE_E                   = 0,        /**< 自动抓拍，包括外设抓拍、绊线触发 */
    NETDEV_ITS_CAPTURE_MANUAL_TYPE_E                 = 1,        /**< 手动抓拍 */
	NETDEV_ITS_CAPTURE_INVALID   = 0xFFFF                        /* 无效值  Invalid value */
}NETDEV_ITS_CAPTURE_TYPE_E;

	/**@brief 停车场车位信息 */
#define NETDEV_ITS_PARKING_SPACE_MAX_NUM              6             /**< 最大车位个数 */

#define NETDEV_ITS_CAPTURE_MANUAL_TYPE                1             /**< 手动抓拍 */

	/**@brief 交通参数服务器上报车辆特征数量 */ 
#define NETDEV_ITS_CAR_TYPE_NUM                       12           /**< 车辆类型数目 */
#define NETDEV_ITS_LPR_COLOR_NUM                      5            /**< 车牌颜色数目 */
#define NETDEV_ITS_CAR_SPEED_NUM                      2            /**< 车速数目 */

	/**@brief 单个摄像机 车道数最大值 */
#define NETDEV_ITS_DRIVEWAY_NUM_MAX                   8

	/**@brief 单个摄像机 车道线数最大值 */
#define NETDEV_ITS_DRIVEWAY_LINE_NUM_MAX              (NETDEV_ITS_DRIVEWAY_NUM_MAX + 1)

	/*@brief 最大线圈个数 */
#define NETDEV_ITS_VEHICLE_DETECT_MAX_NUM             8

	/**@brief 红绿灯 识别方式 */
#define NETDEV_ITS_TRAFFICLIGHT_IDENTIFYMODE_TEMPLATE        0     /**< 模板识别 */
#define NETDEV_ITS_TRAFFICLIGHT_IDENTIFYMODE_VIDEO           1     /**< 视频识别 */
#define NETDEV_ITS_TRAFFICLIGHT_IDENTIFYMODE_SERIAL          2     /**< 检测器识别 */
#define NETDEV_ITS_TRAFFICLIGHT_IDENTIFYMODE_MULTISERIAL     3     /**< 自动识别 */

	/**@brief 红绿灯 类型 */
#define NETDEV_ITS_TRAFFICLIGHT_TYPE_SIMPLE                  0     /**< 简单灯 */
#define NETDEV_ITS_TRAFFICLIGHT_TYPE_COMPLEX                 1     /**< 复杂灯 */
#define NETDEV_ITS_TRAFFICLIGHT_TYPE_MIX                     2     /**< 混合灯 */

	/**@brief 红绿灯 颜色 (可组合) */
#define NETDEV_ITS_TRAFFICLIGHT_COLOR_RED                    0x1     /**< 红灯 */
#define NETDEV_ITS_TRAFFICLIGHT_COLOR_YELLOW                 0x2     /**< 黄灯 */
#define NETDEV_ITS_TRAFFICLIGHT_COLOR_GREEN                  0x4     /**< 绿灯 */
#define NETDEV_ITS_TRAFFICLIGHT_COLOR_OTHER                  0x0F    /**< 其他 */

	/**@brief 红绿灯 形状 */
#define NETDEV_ITS_TRAFFICLIGHT_SHAPE_ROUND                  0     /**< 圆形 */
#define NETDEV_ITS_TRAFFICLIGHT_SHAPE_ARROW                  1     /**< 箭头 */
#define NETDEV_ITS_TRAFFICLIGHT_SHAPE_BAR                    2     /**< 条形 */
#define NETDEV_ITS_TRAFFICLIGHT_SHAPE_OTHER                  4     /**< 其他 */
#define NETDEV_ITS_TRAFFICLIGHT_SHAPE_DIGIT                  8     /**< 数字灯 */

	/**@brief 红绿灯 IO端口 */
#define NETDEV_ITS_TRAFFICLIGHT_IO_NONE     		          0     /**< 无 */
#define NETDEV_ITS_TRAFFICLIGHT_IO_SERIAL1                   1     /**< 串口1 */
#define NETDEV_ITS_TRAFFICLIGHT_IO_SERIAL2                   2     /**< 串口2 */

	/**@brief 红绿灯 指示方向 (可组合) */
#define NETDEV_ITS_TRAFFICLIGHT_DIRECT_LEFT                  0x1     /**< 左转 */
#define NETDEV_ITS_TRAFFICLIGHT_DIRECT_RIGHT                 0x2     /**< 右转 */
#define NETDEV_ITS_TRAFFICLIGHT_DIRECT_STRAIGHT              0x4     /**< 直行 */
#define NETDEV_ITS_TRAFFICLIGHT_DIRECT_NUM                   3       /**< 方向个数 */

	/**@brief 红绿灯 排列方向 */
#define NETDEV_ITS_TRAFFICLIGHT_ARRANGE_HORIZATIONAL         0     /**< 横向 */
#define NETDEV_ITS_TRAFFICLIGHT_ARRANGE_VERTICAL             1     /**< 纵向 */

#define NETDEV_ITS_RES_CODE_LEN                              48    /**< 通用CODE长度 */
#define NETDEV_ITS_COM_OSD_MAX_LEN                           640   /*串口OSD上报字符最大长度 */


#define NETDEV_ITS_CMD_ALARM_ILLEGAL_DETECT_START            323          /**< 违法停车检测开始 */
#define NETDEV_ITS_CAR_PLATE_MAX_LEN                         32           /**< 号牌号码最大长度 */
#define NETDEV_ITS_NAME_LEN                                  64           /**<文件名称字符串长度 */

	/*@brief 区域运动量最大个数 */
#define NETDEV_ITS_DETECTED_ACTIVITY_MAX                   60

	/**@brief 偏振镜状态 */
#define NETDEV_ITS_POLARIZER_STATUS_INUSE             0             /**< 正在使用 */
#define NETDEV_ITS_POLARIZER_STATUS_UNUSE             1             /**< 未使用 */
#define NETDEV_ITS_POLARIZER_STATUS_DOWNING           2             /**< 正在下降 */
#define NETDEV_ITS_POLARIZER_STATUS_UPING             3             /**< 正在上升 */
#define NETDEV_ITS_POLARIZER_STATUS_UNKNOWN           4             /**< 异常 */
#define NETDEV_ITS_POLARIZER_STATUS_SWITCHING         5             /**< 切换中 */
/**
 * @enum tagNETDEVAlarmPortType
 * @brief 偏振镜状态 
 * @attention 无 None
 */
typedef enum tagNETDEVITSPolarizerType
{
  NETDEV_ITS_POLARIZER_TYPE_INUSE             = 0,             /**< 正在使用 */
  NETDEV_ITS_POLARIZER_TYPE_UNUSE             = 1,             /**< 未使用 */
  NETDEV_ITS_POLARIZER_TYPE_DOWNING           = 2,             /**< 正在下降 */
  NETDEV_ITS_POLARIZER_TYPE_UPING             = 3,             /**< 正在上升 */
  NETDEV_ITS_POLARIZER_TYPE_UNKNOWN           = 4,             /**< 异常 */
  NETDEV_ITS_POLARIZER_TYPE_SWITCHING         = 5,             /**< 切换中 */
  NETDEV_ITS_POLARIZER_TYPE_INVALID           = 0xFFFF        /* 无效值  Invalid value */
}NETDEV_ITS_POLARIZER_TYPE_E;


	/**@brief 雷达状态 */
#define NETDEV_ITS_RADAR_STATUS_DISCONNECT            0             /**< 雷达未连接 */
#define NETDEV_ITS_RADAR_STATUS_CONNECT               1             /**< 雷达连接 */

	/**@brief 雷达 工作模式 */
#define NETDEV_ITS_RADAR_MODE_CONTINUOUS                0             /**< 连续模式 */
#define NETDEV_ITS_RADER_MODE_FRONT_TRIGGER             1             /**< 车头触发模式 */
#define NETDEV_ITS_RADER_MODE_REAR_TRIGGER              2             /**< 车尾触发模式 */
#define NETDEV_ITS_RADER_MODE_DOUBLE_TRIGGER            3             /**< 双触发模式 */

	/**@brief 雷达 方向过滤模式 */
#define NETDEV_ITS_RADAR_DIRECTION_NONE_FILTER          0             /**< 不过滤 */
#define NETDEV_ITS_RADER_DIRECTION_COME                 1             /**< 输出来向车速 */
#define NETDEV_ITS_RADER_DIRECTION_GONE                 2             /**< 输出去向车速 */

	/**@brief 雷达 车速格式 */
#define NETDEV_ITS_RADAR_SPEED_SINGLE_BYTE              0             /**< 单字节 */
#define NETDEV_ITS_RADAR_SPEED_DOUBLE_BYTE              1             /**< 双字节 */
#define NETDEV_ITS_RADAR_SPEED_ASCII_FORMAT             2             /**< ASCII 格式 */

#define NETDEV_E_PARK_STATUS_REPORT                 160         /* 车位状态状态码,对应结构定义:NETDEV_PARK_STATUS_S */
#define NETDEV_E_TRAFFIC_STATUS_REPORT              169         /* 交通参数上报 对应参数:NETDEV_TRAFFIC_PARA_RSLT_S */
#define NETDEV_E_VEHICLE_STATUS_REPORT              170         /* 车辆进出状态上报 对应参数:NETDEV_VEHICLE_STATE_S */

	/**@brief 停车场车位信息 */
#define IMOS_MW_PARKING_SPACE_MAX_NUM               6             /**< 最大车位个数 */
#define IMOS_MW_POLYGON_POINT_MAX_NUM               12

/**@brief 停车场车位信息 */
#define NETDEV_ITS_PARKING_SPACE_MAX_NUM               6             /**< 最大车位个数 */
#define NETDEV_ITS_POLYGON_POINT_MAX_NUM               12


	/**@brief 线圈状态 */
#define NETDEV_ITS_COIL_STATUS_DISCONNECT             0             /**< 线圈断开 */
#define NETDEV_ITS_COIL_STATUS_CONNECT                1             /**< 线圈连接 */
#define NETDEV_ITS_COIL_STATUS_UNUSE                  2             /**< 线圈未使用 */

	/**@brief 偏振镜状态 */
#define NETDEV_ITS_POLARIZER_STATUS_INUSE             0             /**< 正在使用 */
#define NETDEV_ITS_POLARIZER_STATUS_UNUSE             1             /**< 未使用 */
#define NETDEV_ITS_POLARIZER_STATUS_DOWNING           2             /**< 正在下降 */
#define NETDEV_ITS_POLARIZER_STATUS_UPING             3             /**< 正在上升 */
#define NETDEV_ITS_POLARIZER_STATUS_UNKNOWN           4             /**< 异常 */
#define NETDEV_ITS_POLARIZER_STATUS_SWITCHING         5             /**< 切换中 */

	/**@brief LED灯状态 */
#define NETDEV_ITS_LED_STROBE_STATUS_ON               0             /**< 打开 */
#define NETDEV_ITS_LED_STROBE_STATUS_OFF              1             /**< 关闭 */
/**
 * @enum tagNETDEVLedStrobeType
 * @brief LED灯状态  
 * @attention 无 None
 */
typedef enum tagNETDEVITSLedStrobeType
{
  NETDEV_ITS_LED_STROBE_TYPE_ON                 = 0,               /**< 打开 */
  NETDEV_ITS_LED_STROBE_TYPE_OFF                = 1,               /**< 关闭 */
  NETDEV_ITS_LED_STROBER_TYPE_INVALID           = 0xFFFF        /* 无效值  Invalid value */
}NETDEV_ITS_LEDSTROBE_TYPE_E;

	/**@brief 交通灯检测器实时在线状态 */
#define NETDEV_ITS_TRAFFICLIGHT_STATUS_OFFLINE        0             /**< 离线 */
#define NETDEV_ITS_TRAFFICLIGHT_STATUS_ONLINE         1             /**< 在线 */
#define NETDEV_ITS_TRAFFIClIGHT_STATUS_UNUSED         2             /**< 未使用 */
typedef enum tagNETDEVITSTrafficlightType
{
   NETDEV_ITS_TRAFFICLIGHT_OFFLINE_E        = 0,             /**< 离线 */
   NETDEV_ITS_TRAFFICLIGHT_ONLINE           = 1,             /**< 在线 */
   NETDEV_ITS_TRAFFIClIGHT_UNUSED           = 2,             /**< 未使用 */
   NETDEV_ITS_TRAFFIClIGHT_INVALID          = 0xFFFF        /* 无效值  Invalid value */
}NETDEV_ITS_TRAFFIClIGHT_TYPE_E;



#define NETDEV_ITS_SD_STATUS_NOEXIST                  0             /**< 不存在 */
#define NETDEV_ITS_SD_STATUS_FAULT                    1             /**< 故障 */
#define NETDEV_ITS_SD_STATUS_CHECKING                 2             /**< 检测中 */
#define NETDEV_ITS_SD_STATUS_NORMAL                   3             /**< 正常 */
#define NETDEV_ITS_SD_STATUS_EXIST                    4             /**< 设备存在 */
/**
 * @enum tagNETDEVAlarmPortType
 * @brief SD卡状态类型
 * @attention 无 None
 */
typedef enum tagNETDEVITSSDType
{
    NETDEV_ITS_SD_TYPE_NOEXIS                   = 0,          /**< 不存在 */
    NETDEV_ITS_SD_TYPE_FAULT                    = 1,             /**< 故障 */
    NETDEV_ITS_SD_TYPE_CHECKING                 = 2,             /**< 检测中 */
    NETDEV_ITS_SD_TYPE_NORMAL                   = 3,             /**< 正常 */
    NETDEV_ITS_SD_TYPE_EXIST                    = 4,             /**< 设备存在 */
    NETDEV_ITS_SD_TYPE_INVALID                  = 0xFFFF        /* 无效值  Invalid value */
}NETDEV_ITS_SDSTATUS_TYPE_E;


/**
 * @enum tagNETDEVAlarmPortType
 * @brief 告警监听端口类型
 * @attention 无 None
 */
typedef enum tagNETDEVStatusPortType
{
    NETDEV_STATUS_PORT_TYPE_LOCAL = 0,            /* 本地监听端口 */
    NETDEV_STATUS_PORT_TYPE_NAT = 1               /* 端口映射后的事件端口 */
}NETDEV_STATUS_PORT_TYPE_E;

/**
标识：IA_TRIGGER_TYPE_E
类型：枚举
目的：触发抓拍方式
定义：
*/  
typedef enum tagDrvTriggerType
{
	IA_TRIGGER_DEBUG = 0,                    /* 调试抓拍照片 */
	IA_TRIGGER_FORMAL = 1,                   /* 正式抓拍照片 */ 
	IA_TRIGGER_MANUAL_PROCESS = 2,           /* 平台触发手动抓拍 */
	IA_TRIGGER_LINKAGE_PROCESS = 3,          /* 平台触发联动抓拍 */
	IA_TRIGGER_COUNT
}IA_TRIGGER_TYPE_E;


/**
 * @enum tagNETDEVCaptureType
 * @brief 输出开关量类型枚举 
 * @attention 卡口电警对应IO口F1-F4
 */
typedef enum tagNETDEVSwitchStatusType
{
	NETDEV_SWITCH_STATUS_F1 = 0,               /*F1IO口*/
	NETDEV_SWITCH_STATUS_F2 = 1,               /*F2IO口*/
	NETDEV_SWITCH_STATUS_F3 = 2,               /*F3IO口*/
	NETDEV_SWITCH_STATUS_F4 = 3                /*F4IO口*/
}NETDEV_SWITCH_STATUS_TYPE_E;


/* BEGIN******************************************************************** 结构体  Structure ************************************************************************ */
/* tagMwPtzStatus */
typedef struct tagNETDEVITSPtzStatus
{
	INT32 iPtzStatus;	/* required element of type ULONG */
	INT32 iStatusPara1;	/* required element of type ULONG */
	INT32 iStatusPara2;	/* required element of type ULONG */
}NETDEV_ITS_PTZ_STATUS_S, *LPNETDEV_ITS_PTZ_STATUS_S;

/**
* @struct tagNETDEVITSCoilState
* @brief 线圈状态
* @attention
*/
typedef struct tagNETDEVITSCoilState
{
	ULONG ulDetectorID;          /**< 车检器设备号 */
	ULONG ulCoilID;              /**< 线圈ID */
	ULONG ulState;               /**< 线圈状态, 参见: NETDEV_ITS_COIL_STATUS 等 */
}NETDEV_ITS_COIL_STATE_S;


/*****智能交通状态上报结构体********/
typedef struct tagNETDEVItsStatusInfo
{
	INT32   dwReportType;                    /* 告警类型,参见枚举#NETDEV_ALARM_TYPE_E  Alarm type, see enumeration #NETDEV_ALARM_TYPE_E */
	VOID*   pReportParam;
}NETDEV_ITSSTATUS_INFO_S, *LPNETDEV_ITSSTATUS_INFO_S;

/******************************************************************************
标识：IW_JPEG_PRIVATE_INFO_S
类型：结构体
目的：照片私有头
注意：1、结构总长度不能改变, 无特殊情况不建议修改既有非保留字段
      2、新增字段可使用保留字段: aucReserved1/aucReserved2/aucReserved3
      3、结构中的多个保留字段是为了兼容新旧版本外部应用:平台侧使用了车牌位置/车辆坐标
      4、内容由 IWARE 填充
定义：
******************************************************************************/ 
typedef struct tagIWJPEGPrivateInfo

{    
    UCHAR aucStartFlag[2];                         /* 2字节图像开始标志(0XFFD8) --(1) */
    UCHAR aucAppInfoFlag[2];                       /* 2字节应用程序信息标志(0XFFE1) --(1) */
    unsigned short usAppInfoLen;                           /* 2字节应用程序信息长度(包括本字段) --(1) */
    CHAR szEncVerInfo[IW_ENC_VERSION_TEXT_LEN];    /* 加密算法版本号 --(1) */
    UCHAR aucMD5Cipher[IW_MD5_CIPHER_TEXT_LEN];    /* 16字节MD5密文信息 --(1) */
    UCHAR ucTrgMode;                               /* 触发方式(卡口设备卡口照片专用) --(1) */
    CHAR cVehicleColor;                            /* 车身主颜色 A：白，B：灰，C：黄，D：粉，E：红，F：紫，G：绿，
                                                      H：蓝，I：棕，J：黑，K：橙，L：青，M：银，N：银白，Z：其他 --(2) */                                                        
    UCHAR aucTimeInfo[8];                          /* 抓拍时间，年-月-日-星期-时-分-秒-10倍毫秒 --(1) */
    UINT32 ulFrameCount;                            /* 帧号 --(1) */
    UINT32 lLaneID;                                  /* 车道号 --(2) */
    CHAR szLocusInfo[64];                          /* 抓拍地点信息 --(2) */
    FLOAT fSpeed;                                  /* 车速(单位:公里/小时) --(2) */
    BOOL bRecognised;                            /* 车牌识别结果: BOOL_TRUE 识别成功 BOOL_FALSE 识别失败 --(2) */
    
    UINT32 lVehicleColorDept;                        /* 车身颜色深浅: 0-未知，1-浅，2-深 --(2) */
    UCHAR ucPlateScore;                            /* 车牌置信度(2) */
    UCHAR ucRecordType;                            /* 记录类型,IA_PIC_DEBUG等 */
    CHAR cVehicleColorSnd;                         /* 车身副颜色 A：白，B：灰，C：黄，D：粉，E：红，F：紫，G：绿，
                                                      H：蓝，I：棕，J：黑，K：橙，L：青，M：银，N：银白，Z：其他 --(2) */
    UCHAR aucReserved1[21];                         /* 保留字段1 */
     
    UINT32 ulXLeft;                                 /* 车牌在原图中位置：左边界 --(3) */
    UINT32 ulYTop;                                  /* 车牌在原图中位置：上边界 --(3) */
    UINT32 ulXRight;                                /* 车牌在原图中位置：右边界 --(3) */
    UINT32 ulYBottom;                               /* 车牌在原图中位置：下边界 --(3) */
    UINT32 aulPlatePreXY[IW_OCL_MAX_NUM][4];        /* IW_OCL_MAX_NUM 个车牌候选区域:XL=a[0][0], YL=a[0][1], XR=a[0][2], YR=a[0][3] --(3) */
    UINT32 ulCoilTrgFrameNum;                       /* 绊线触发帧号 --(1) */
    UCHAR aucPlateScore[IW_OCL_MAX_NUM];           /* HTS_OCL_MAX_NUM个车牌获选区域置信度 --(3) */
    UCHAR ucPlateSetNum;                           /* 车牌候选区域个数 --(3) */

    UCHAR aucReserved2[16];                        /* 保留字段2 */ 
    UINT32 ulTrafficLightStatus;                    /* 智能返回的红绿灯状态 --(1) */
    short ausTrafficLightXY[4][4];                /* 前4灯组坐标(这里4不做宏定义):XL=a[0][0], YL=a[0][1], XR=a[0][2], YR=a[0][3] --(1) */
    
    UINT32 lBreakRule;                               /* 违法类型(非 0 是违章过车, 0 是非违章过车) --(1)  */
    UINT32 lCapType;                                 /* 抓拍类型 --(1) */
    UINT32 ulObjID;                                 /* 目标(车辆) ID --(3) */
    UINT32 aulTWVehicleXY[4];                       /* 绊线返回车辆坐标:XL=a[0], YL=a[1], XR=a[2], YR=a[3] --(1) */
    UINT32 aulLPRRect[4];                           /* 车牌识别区域坐标:XL=a[0], YL=a[1], XR=a[2], YR=a[3] --(1) */
    UINT32 aulVehicleXY[4];                         /* 车辆坐标:XL=a[0], YL=a[1], XR=a[2], YR=a[3] --(3) */

    UINT32 lIdentifyTime;                            /* 车牌识别时间 --(2) */
    UINT32 lVehicleType;                             /* 车辆类型 0-未知，1-小型车，2-中型车，3-大型车，4-其他 --(2) */
    CHAR szPlateColor[4];                          /* 车牌颜色，黄蓝黑白绿或"?"代表未知 --(2) */
    CHAR szPlateCode[20];                          /* 车牌号码 --(2) */
    
    UINT32 ulEncodeNum;                             /* 图片序号 --(2) */
    UINT32 ulProcessIndex;                          /* 一条违章记录中各过程图编号 --(2) */
    CHAR szBreakRule[32];                          /* 违法类型:"闯红灯"等 --(2) */

    UINT32 ulHaveSaveSDNum;                         /* 已经保存SD卡次数 --(2) */
    UINT32 ulSaveSDFailNum;                         /* 保存SD卡失败次数 --(2) */
    UINT32 ulReadySendTMSNum;                       /* 准备上传TMS次数 --(2) */
    UINT32 ulHaveSendTMSNum;                        /* 已经上传TMS次数 --(2) */
    UINT32 ulSendTMSFailNum;                        /* 上传TMS失败次数 --(2) */
    
    unsigned short usBlackWhite;                           /* 图像模式，0-彩色，1-黑白 --(1) */
    unsigned short usNightMode;                            /* 昼夜模式，0-白天，1-夜晚 --(1) */
    UINT32 ulCapLuminance;                          /* 抓拍图片亮度 --(1) */
    UINT32 ulCapQuality;                            /* 抓拍图片清晰度 --(1) */
    UINT32 ulCapShutter;                            /* 抓拍快门 --(1) */ 
    FLOAT fCapGain;                                /* 抓拍增益 --(1) */
    UINT32 ulCurShutter;                            /* 连续流当前快门 --(1) */ 
    FLOAT fCurGain;                                /* 连续流当前增益 --(1) */
    UINT32 ulSlowShutter;                           /* 自定义曝光参数:最慢快门 --(1) */ 
    UINT32 ulMaxGain;                               /* 自定义曝光参数:最大增益 --(1) */
    UINT32 lExpCompensate;                           /* 连续流曝光补偿 --(1) */  
    UINT32 ulMaxShutter;                            /* 连续流最大快门 --(1) */ 
    UINT32 lMaxGain;                                 /* 连续流最大增益 --(1) */
    UINT32 ulConLight;                              /* 连续流当前亮度 --(1) */
    UINT32 lCapRGain;                                /* 抓拍白平衡R增益 --(1) */
    UINT32 lCapGGain;                                /* 抓拍白平衡G增益 --(1) */
    UINT32 lCapBGain;                                /* 抓拍白平衡B增益 --(1) */
    FLOAT fCurEnvLuminance;                        /* 连续流当前环境照度 --(1) */
    FLOAT fCapLightLuminance;                      /* 抓拍后闪光灯实际照度 --(1) */

    UINT32 ulPolarizerUpNum;                        /* 偏振镜上升次数 --(1) */
    UINT32 ulPolarizerDownNum;                      /* 偏振镜下降次数 --(1) */
    UINT32 ulLinePostNum;                           /* 线圈触发次数 --(1) */
    UCHAR aucLine1Status[IW_LOOP_COIL_MAX_NUM];    /* 线圈X(1-8)状态 --(1) */
    UINT32 aulEnterLineNum[IW_LOOP_COIL_MAX_NUM];   /* 线圈X(1-8)进入次数 --(1) */
    UINT32 aulLeaveLineNum[IW_LOOP_COIL_MAX_NUM];   /* 线圈X(1-8)离开次数 --(1) */
    UINT32 ulVDMaxTime;                             /* 绊线检测最大用时(us)  --(1) */
    UINT32 ulVDAvgTime;                             /* 绊线检测平均用时(us)  --(1) */
    UINT32 ulVDEveryTime;                           /* 绊线检测每次用时(us)  --(1) */
    UINT32 ulDSPFrameCount;                         /* 智能帧计数 */
    UINT32 ulDrvFrameCount;                         /* 驱动帧计数 */
    UINT32 ulSoftFrameCount;                        /* 软件帧计数 */

    UINT32 ulOsdTrigCount;                          /* OSD触发次数 即A8测发送消息 --(1) */
    UINT32 ulOsdMsgCount;                           /* vpss OSD 接收消息次数 --(1) */  
    UINT32 ulOsdFailedCount;                        /* vpss OSD 处理失败次数 --(1) */
    UINT32 ulBeforeEncodeNum;                       /* 编码前次数 --(1) */
    UINT32 ulAfterEncodeNum;                        /* 编码后次数 --(1) */
    UINT32 ulTEncodeFailNum;                        /* 编码失败次数 --(1) */

    UINT32 ulLEDStatus;                             /* 当前 LED 补光灯状态 */
    UINT32 ulPolarizerStatus;                       /* 偏振镜当前状态标志 IMOS_MW_POLARIZER_AUTO 等 */

    UINT32 lExpCapCompensate;                        /* 抓拍流曝光补偿 --(1) */ 
    UINT32 ulCaptureCount;                          /* 抓拍计数 */
    UINT32 ulLostFrameCount;                        /* 丢帧计数 */

    UINT32 ulPicLostFrame;                          /* 丢失目标帧号 */
    unsigned short  usPicLostObjId;                         /* 丢失目标Id */
    unsigned short  usPic2TMSCostTime;                      /* 照片发送至TMS的耗时(单位:ms) */
    unsigned short  usPic2SDCostTime;                       /* 照片存储 sd 卡耗时(单位:ms) */
    unsigned short  usEncCostTime;                          /* 大图编码耗时(单位:ms) */
    unsigned short  usIntSnapAvgTime;                       /* 两次抓拍间智能运行平均时间(单位:ms) */
    unsigned short  usIntSnapMaxTime;                       /* 两次抓拍间智能运行最大时间(单位:ms) */
    UCHAR ucLPRCandidateNum;                       /* 计算候选区车牌识别次数 */  

    UCHAR aucReserved3[13];                        /* 保留字段3 */ 
    CHAR szStructVer[32];                          /* 私有头结构版本:HTS_JPEG_PRI_HEAD_VER --(1) */
}IW_JPEG_PRIVATE_INFO_S;


/**
 * @struct tagNETDEVPicData
 * @brief 交通类对外数据结构，最多包含8张照片
 * @attention 对外接口
 */
typedef struct tagNETDEVPicData
{
    CHAR   *apcData[NETDEV_LEN_8];                                          /**< 数据指针  Pointer to data */
    INT32  aulDataLen[NETDEV_LEN_8];                                        /**< 数据长度  data length */

	/*  1-车辆大图 2-车牌彩色小图 3-车牌二值化图 4-驾驶员面部特征图 5-副驾驶面部特征图 6-车标 7-违章合成图 
	8-过车合成图 9-车辆特写图 50-违章录像 */
    INT32  aulPicType[NETDEV_LEN_8];                                        /**< 照片类型,参考枚举#NETDEV_IMAGE_VEHICLE*/
	
    CHAR   acPassTime[NETDEV_LEN_8][NETDEV_LEN_16 + NETDEV_LEN_2];          /**< 经过时间 */
    INT32  ulPicNumber;                                                     /**< 照片张数 */

    /* 设备信息 */
    INT32  lApplicationType;                                                /**< 应用类型:对应相关产品 0-车辆卡口 1-电警 2-人数统计 3-泛卡口 4-违章球 */
    CHAR   szCamID[NETDEV_LEN_32];                                          /**< 设备编号:采集设备统一编号或卡口相机编码, 不可为空 */
    CHAR   szTollgateID[NETDEV_LEN_32];                                     /**< 卡口编号:产生该信息的卡口代码 */
    CHAR   szTollgateName[NETDEV_LEN_64];                                   /**< 卡口名称:可选字段 */
    INT32  ulCameraType;                                                    /**< 相机类型 0 全景 1特性 */
    INT32  ulRecordID;                                                      /**< 车辆信息编号:由1开始自动增长(转换成字符串要求不超过16字节)*/                              

    /* 时间、地点信息 */
    CHAR szPassTime[NETDEV_LEN_16 + NETDEV_LEN_2];                          /**< 经过时间:YYYYMMDDHHMMSS, 时间按24小时制 */

    CHAR szPlaceName[NETDEV_LEN_256];                                       /**< 地点名称 */
    INT32 lLaneID;                                                           /**< 车道编号:从1开始,车辆行驶方向最左车道为1,由左向右顺序编号 */
    INT32 lLaneType;                                                         /**< 车道类型:0-机动车道, 1-非机动车道 */

    /* 方向编号:1-东向西 2-西向东 3-南向北 4-北向南 
       5-东南向西北 6-西北向东南 7-东北向西南 8-西南向东北 */ 
    INT32 lDirection;    

    CHAR szDirectionName[NETDEV_LEN_64];                                    /**< 方向名称:可选字段 */

    /* 车牌信息 */
    CHAR szCarPlate[NETDEV_LEN_32];                                         /**< 号牌号码:不能自动识别的用"-"表示 */
    INT32 aulLPRRect[NETDEV_LEN_4];                                         /**< 车牌坐标 XL=a[0],YL=a[1], XR=a[2],YR=a[3] */

	/*号牌种类（按GA24.7编码）:1-大型汽车 2-小型汽车 3-使馆汽车 4-领馆汽车 5-境外汽车 6-外籍汽车 7-两、三轮摩托车号牌 8-轻便摩托车
	9-使馆摩托车 10-领馆摩托车 11-境外摩托车 12-外籍摩托车 13-农用运输车 14-拖拉机 15-挂车 16-教练汽车 17-教练摩托车 18-试验汽车
	19-试验摩托车 20-临时入境汽车 21-临时入境摩托车 22-临时行驶车 23-警用汽车 24-警用摩托 25-原农机号牌 26-香港入出境车 27-澳门入出境车 
	28-中型车 31-武警号牌 32-军队号牌 33-行人 34-非机动车 51-大型新能源车牌 52-小型新能源车牌 99-其它 */
    INT32 lPlateType;                                                        /**< 号牌种类:按GA24.7编码 */
	
	/*0-白色 1-黄色 2-蓝色 3-黑色 4-其他 5-绿色，农用车 6-红色 7-黄绿双色 8-渐变绿色 */  
    INT32 lPlateColor;                                                       /**< 号牌颜色:*/
	   
    INT32 lPlateNumber;                                                      /**< 号牌数量 */

	/*0-车头和车尾号牌号码不一致 1-车头和车尾号牌号码完全一致 2-车头号牌号码无法自动识别 3-车尾号牌号码无法自动识别 4-车头和车尾号牌号码均无法自动识别 */
    INT32 lPlateCoincide;                                                    /**<号牌一致*/


    CHAR szRearVehiclePlateID[NETDEV_LEN_32];                               /**< 尾部号牌号码:被查控车辆车尾号牌号码，允许车辆尾部号牌号码不全。不能自动识别的用"-"表示 */ 
    INT32 lRearPlateColor;                                                   /**< 尾部号牌颜色: 0-白色1-黄色 2-蓝色 3-黑色 4-其他 */ 
    INT32 lRearPlateType;                                                    /**< 尾部号牌种类: 按GA24.7编码; 或者1－单排 2－武警 3－警用 4－双排 5－其他 */ 

    /* 车辆信息 */     
    UINT32 aulVehicleXY[NETDEV_LEN_4];                                       /**< 车辆坐标:XL=a[0], YL=a[1], XR=a[2], YR=a[3] */ 
    CHAR szVehicleBrand[NETDEV_LEN_4];                                      /**< 车辆厂牌编码(自行编码) 考虑到字节对齐定义长度为4，实际使用长度为2 */ 
    INT32 lVehicleBody;                                                      /**< 车辆外型编码(自行编码) */ 

	/* 0-未知，1-小型车 2-中型车 3-大型车 4-其它 5-行人 6-二轮车 7-三轮车 8-摩托车 9-拖拉机 10-农用货车 11-轿车 12-SUV 13-面包车 14-小货车
	15-中巴车 16-大客车 17-大货车 18-皮卡车 19-MPV商务车 20-非机动车 */ 
    INT32 lVehicleType;                                                      /**< 车辆类型*/
	
    INT32 lVehicleLength;                                                    /**< 车外廓长(以厘米为单位) */ 

    /* 车身颜色: 
     A：白，B：灰，C：黄，D：粉，E：红，F：紫，G：绿，H：蓝， 
     I：棕，J：黑，K：橙，L：青，M：银，N：银白，Z：其他(!) */ 
    INT32 lVehicleColorDept;                                                 /**< 车身颜色深浅:0-未知，1-浅，2-深 */ 

    CHAR cVehicleColor;            /**< 车身颜色 */ 

    /* 识别，注:后面的UCHAR紧跟CHAR */ 
    UCHAR ucPlateScore;                                                     /**< 此次识别中，整牌的置信度，100最大 */ 
    UCHAR ucRearPlateScore;                                                 /**< 尾部号码置信度，100最大 */ 
    UCHAR ucPicType;                                                        /**< 0:实时照片，1:历史照片 */ 
    INT32 lIdentifyStatus;                                                   /**< 识别状态:0－识别成功 1－不成功 2－不完整(!)  3-表示需要平台识别 */ 
    INT32 lIdentifyTime;                                                     /**< 识别时间, 单位毫秒 */  

	/*（由于一幅图片中会有多个行人，采用按位定义方式，该颜色对 应的位为1表示该图片中有该衣着颜色，bit16为1表示衣着颜色未知，此时其它 比特位
	（应为0）值忽略）：bit1-bit16：红色 橙色 黄色 绿色 青色 蓝色 紫色 粉色 白色 棕色 黑色 灰色 保留 保留 保留 未知 */
    INT32 lDressColor;                                                       /**< 行人衣着颜色(!) */  
	
    INT32 lDealTag;                                                          /**< 处理标记:0-初始状态未校对 1-已校对和保存 2-无效信息 3-已处理和保存(!) */ 

    /* 车速 */ 
    INT32 lVehicleSpeed;                                                     /**< 车辆速度: 单位km/h, -1-无测速功能 */ 
    INT32 lLimitedSpeed;                                                     /**< 执法限速: 车辆限速, 单位km/h */ 
    INT32 lMarkedSpeed;                                                      /**< 标识限速 */  

	/*0-正常 1-嫌疑 100-套牌 101-假牌 102-无牌 103-拍照遮挡 104-拍照污损 按GA408.1编码：1301-逆行 1302-不按交通信号灯通行 4602-在高速公路上逆行
	1603-机动车行驶超过规定时速50等*/
    INT32 lDriveStatus;                                                      /**< 行驶状态:0-正常 1-嫌疑或按GA408.1编码 */ 
	
    /* 红灯信息 */ 
    INT32 lRedLightTime;                                                     /**< 红灯时间 */ 
    CHAR szRedLightStartTime[NETDEV_LEN_16 + NETDEV_LEN_2];                  /**< 红灯开始时间:YYYYMMDDHHMMSS, 精确到毫秒, 时间按24小时制 */ 
    CHAR szRedLightEndTime[NETDEV_LEN_16 + NETDEV_LEN_2];                    /**< 红灯结束时间:YYYYMMDDHHMMSS, 精确到毫秒, 时间按24小时制 */  
    CHAR szDriveStatus[NETDEV_LEN_16 + NETDEV_LEN_4];                        /**< 行驶状态:0-正常 1-嫌疑或按GA408.1编码, 支持字符串，为了兼容不删除lDriveStatus  */
    INT32 lTriggerType;                                                      /**< 抓拍类型 参考NETDEV_CAPTURE_TYPE_E */
	INT32 lParkStatus;                                                        /**< 车位状态信息>/*/
   // CHAR cReserved1[NETDEV_LEN_16];                                          /**< 保留字段1 后续扩展用 */
	CHAR cReserved1[NETDEV_LEN_8 + NETDEV_LEN_4];                                          /**< 保留字段1 后续扩展用 */
    CHAR cReserved2[NETDEV_LEN_16];                                          /**< 保留字段2 后续扩展用 */
    CHAR cReserved3[NETDEV_LEN_16];                                          /**< 保留字段3 后续扩展用 */
    CHAR cReserved4[NETDEV_LEN_16];                                          /**< 保留字段4 后续扩展用 */
}NETDEV_PIC_DATA_S, *LPNETDEV_PIC_DATA_S;

/**
 * @struct tagNETDEVPicData
 * @brief 智慧停车对外过车数据结构，最多包含8张照片
 * @attention 对外接口
 */
typedef struct tagNETDEVParkPicData
{
   CHAR   *apcData[NETDEV_LEN_8];                                          /**< 数据指针  Pointer to data */
   INT32  aulDataLen[NETDEV_LEN_8];                                        /**< 数据长度  data length */

	/*  1-车辆大图 2-车牌彩色小图 3-车牌二值化图 4-驾驶员面部特征图 5-副驾驶面部特征图 6-车标 7-违章合成图 
	8-过车合成图 9-车辆特写图 50-违章录像 */
   INT32  aulPicType[NETDEV_LEN_8];                                        /**< 照片类型,参考枚举#NETDEV_IMAGE_VEHICLE*/
	
   CHAR   acPassTime[NETDEV_LEN_8][NETDEV_LEN_16 + NETDEV_LEN_2];          /**< 经过时间 */
   INT32  ulPicNumber;                                                     /**< 照片张数 */

    /* 设备信息 */
   CHAR   szCamID[NETDEV_LEN_32];                                          /**< 设备编号:采集设备统一编号或卡口相机编码, 不可为空 */
   INT32  ulRecordID;                                                      /**< 车辆信息编号:由1开始自动增长(转换成字符串要求不超过16字节)*/                              
   /* 时间、地点信息 */
   CHAR szPassTime[NETDEV_LEN_16 + NETDEV_LEN_2];                          /**< 经过时间:YYYYMMDDHHMMSS, 时间按24小时制 */

   CHAR szPlaceName[NETDEV_LEN_256];                                       /**< 地点名称 */

    /* 方向编号:1-东向西 2-西向东 3-南向北 4-北向南 
       5-东南向西北 6-西北向东南 7-东北向西南 8-西南向东北 */ 
   INT32 lDirection;    

    /* 车牌信息 */
   CHAR szCarPlate[NETDEV_LEN_32];                                         /**< 号牌号码:不能自动识别的用"-"表示 */
   INT32 aulLPRRect[NETDEV_LEN_4];                                         /**< 车牌坐标 XL=a[0],YL=a[1], XR=a[2],YR=a[3] */

	/*号牌种类（按GA24.7编码）:1-大型汽车 2-小型汽车 3-使馆汽车 4-领馆汽车 5-境外汽车 6-外籍汽车 7-两、三轮摩托车号牌 8-轻便摩托车
	9-使馆摩托车 10-领馆摩托车 11-境外摩托车 12-外籍摩托车 13-农用运输车 14-拖拉机 15-挂车 16-教练汽车 17-教练摩托车 18-试验汽车
	19-试验摩托车 20-临时入境汽车 21-临时入境摩托车 22-临时行驶车 23-警用汽车 24-警用摩托 25-原农机号牌 26-香港入出境车 27-澳门入出境车 
	28-中型车 31-武警号牌 32-军队号牌 33-行人 34-非机动车 51-大型新能源车牌 52-小型新能源车牌 99-其它 */
    INT32 lPlateType;                                                        /**< 号牌种类:按GA24.7编码 */
	
	/*0-白色 1-黄色 2-蓝色 3-黑色 4-其他 5-绿色，农用车 6-红色 7-黄绿双色 8-渐变绿色 */  
    INT32 lPlateColor;                                                       /**< 号牌颜色:*/
    INT32 lPlateNumber;                                                      /**< 号牌数量 */
	/*0-车头和车尾号牌号码不一致 1-车头和车尾号牌号码完全一致 2-车头号牌号码无法自动识别 3-车尾号牌号码无法自动识别 4-车头和车尾号牌号码均无法自动识别 */
    INT32 lPlateCoincide;                                                    /**<号牌一致*/
    CHAR szRearVehiclePlateID[NETDEV_LEN_32];                               /**< 尾部号牌号码:被查控车辆车尾号牌号码，允许车辆尾部号牌号码不全。不能自动识别的用"-"表示 */ 
    INT32 lRearPlateColor;                                                   /**< 尾部号牌颜色: 0-白色1-黄色 2-蓝色 3-黑色 4-其他 */ 
    INT32 lRearPlateType;                                                    /**< 尾部号牌种类: 按GA24.7编码; 或者1－单排 2－武警 3－警用 4－双排 5－其他 */ 

    /* 车辆信息 */     
    UINT32 aulVehicleXY[NETDEV_LEN_4];                                       /**< 车辆坐标:XL=a[0], YL=a[1], XR=a[2], YR=a[3] */ 
    CHAR szVehicleBrand[NETDEV_LEN_4];                                      /**< 车辆厂牌编码(自行编码) 考虑到字节对齐定义长度为4，实际使用长度为2 */ 
    INT32 lVehicleBody;                                                      /**< 车辆外型编码(自行编码) */ 

	/* 0-未知，1-小型车 2-中型车 3-大型车 4-其它 5-行人 6-二轮车 7-三轮车 8-摩托车 9-拖拉机 10-农用货车 11-轿车 12-SUV 13-面包车 14-小货车
	15-中巴车 16-大客车 17-大货车 18-皮卡车 19-MPV商务车 20-非机动车 */ 
    INT32 lVehicleType;                                                      /**< 车辆类型*/
	
    INT32 lVehicleLength;                                                    /**< 车外廓长(以厘米为单位) */ 
	INT32 lVehicleWeight;                                                    /**< 车外廓长(以厘米为单位) */ 

    /* 车身颜色: 
     A：白，B：灰，C：黄，D：粉，E：红，F：紫，G：绿，H：蓝， 
     I：棕，J：黑，K：橙，L：青，M：银，N：银白，Z：其他(!) */ 
    INT32 lVehicleColorDept;                                                 /**< 车身颜色深浅:0-未知，1-浅，2-深 */ 

    CHAR cVehicleColor;                                                      /**< 车身颜色 */ 

    /* 识别，注:后面的UCHAR紧跟CHAR */ 
    UCHAR ucPlateScore;                                                     /**< 此次识别中，整牌的置信度，100最大 */ 
    UCHAR ucRearPlateScore;                                                 /**< 尾部号码置信度，100最大 */ 
    UCHAR ucPicType;                                                        /**< 0:实时照片，1:历史照片 */ 

    /* 车速 */ 
    INT32 lVehicleSpeed;                                                     /**< 车辆速度: 单位km/h, -1-无测速功能 */ 
	
    INT32 lTriggerType;                                                      /**< 抓拍类型 参考NETDEV_CAPTURE_TYPE_E */
    INT32 lLaneID;                                                           /**< 车位编号:从1开始,车辆行驶方向最左车道为1,由左向右顺序编号 */
	INT32 lParkStatus;                                                        /**< 车位状态信息>/*/
    CHAR cReserved1[NETDEV_LEN_16];                                          /**< 保留字段1 后续扩展用 */
    CHAR cReserved2[NETDEV_LEN_16];                                          /**< 保留字段2 后续扩展用 */
    CHAR cReserved3[NETDEV_LEN_16];                                          /**< 保留字段3 后续扩展用 */
    CHAR cReserved4[NETDEV_LEN_16];                                          /**< 保留字段4 后续扩展用 */
}NETDEV_PARK_PIC_DATA_S, *LPNETDEV_PARK_PIC_DATA_S;

/**
 * @struct tagNETDEVTMSItsPic 
 * @brief TMS信息（原始数据）
 * @attention
 */
typedef struct tagNETDEVTMSItsPic
{
    NETDEV_TMS_CONNECT_INFO_S stTmsConnectInfo;         /* Socket缓存信息 */
    NETDEV_PIC_DATA_S         stTmsItsPicInfo;          /* 过车识别解析后信息 */
    BYTE     bRes[256];                                 /* 保留字段 Reserved */
}NETDEV_TMS_ITSPIC_S, *LPNETDEV_TMS_ITSPIC_S;


/**
 * @struct tagNETDEVTMSInter
 * @brief TMS信息（原始数据）
 * @attention
 */
typedef struct tagNETDEVTMSParkingStatus
{
	CHAR   szCamID[NETDEV_LEN_32];                            /*相机编码*/
	CHAR   szSampleTime[NETDEV_LEN_18];                       /*采样时间      格式YYYYMMDDHHMMSSMMM*/
	CHAR   szRecordID[NETDEV_LEN_32];                         /*记录ID*/
	CHAR   szTollgateID[NETDEV_LEN_32];                       /*卡口编码*/
	INT32  lParkingLotID;                                     /*车位编码      车位编号从1开始，如两车位即编号1和2*/
	INT32  lParkingLotStatus;                                 /*车位状态       0-无车，1-有车，2-异常识别*/
	CHAR   szCarPlate[NETDEV_LEN_32];                         /*车牌号码 */
	INT32  lLedColour;                                        /*车位指示灯颜色 1-红色，2黄色，3-绿色*/
	INT32  lLedStatus;                                        /*车位指示灯状态 0-熄灭，1-长亮，2-快速闪烁，3慢速闪烁*/
	INT32  lCrossAlarm;                                       /*跨车位告警     0-未跨车位停车，1跨车位停车*/
	INT32  lLingerAlarm;                                      /*徘徊告警       0-无徘徊人，1-有徘徊人*/
    BYTE     bRes[256];                                 /* 保留字段 Reserved */
}NETDEV_TMS_PARKINGSTATUS_S, *LPNETDEV_TMS_PARKINGSTATUS_S;

/**
 * @struct tagNETDEVTMSItsPic 
 * @brief TMS信息（原始数据）
 * @attention
 */
typedef struct tagNETDEVTMSItsStatus
{
    NETDEV_TMS_CONNECT_INFO_S stTmsConnectInfo;         /* Socket缓存信息 */
    NETDEV_TMS_PARKINGSTATUS_S  stTmsItsStatusInfo;     /* 车位状态上报信息 */
    BYTE     bRes[256];                                 /* 保留字段 Reserved */
}NETDEV_TMS_ITSSTATUS_S, *LPNETDEV_TMS_ITSSTATUS_S;




/**
* @struct tagNETDEVParkStatus
* @brief 车位状态信息
* @attention
*/
typedef struct tagMwParkStatus
{
	char szCamID[32];	                /* required element of type Array32OfCHAR */
	long lParkID;	                    /* required element of type LONG */
	char szSampleTime[18];	           /* required element of type Array18OfCHAR */
	char cReserved[2];	/* required element of type Array2OfCHAR */
	long lParkingLotStatus;	/* required element of type LONG */
	char szCarPlate[32];	/* required element of type Array32OfCHAR */
	long lLEDStatus;	/* required element of type LONG */
	long lLEDColor;	/* required element of type LONG */
	long lCrossAlarm;	/* required element of type LONG */
}NETDEV_PARK_STATUS_S, *LPNETDEV_PARK_STATUS_S;

/**
 * @struct tagNETDEVParkStatusInfo
 * @brief 所有车位状态信息
 * @attention 无
 */
typedef struct tagMwParkStatusAll
{
	unsigned long ulParkNum;	/* SOAP 1.2 RPC return element (when namespace qualified) */	/* required element of type ULONG */
	struct tagMwParkStatus astParkSatus[6];	/* required element of type Array6OfIMOS_MW_PARK_STATUS_S */
}NETDEV_PARKSTATUS_INFO_S, *LPNETDEV_PARKSTATUS_INFO_S;

/**
 * @struct tagNETDEVPolygon
 * @brief 多边形区域坐标结构
 * @attention 无
 */
typedef struct tagNETDEVPolygon
{
    UINT32 ulNum;                                             /**< 有效点数 */
    NETDEV_AREA_SCOPE_S astPoint[12];                         /**< 多边形端点坐标 */    
}NETDEV_POLYGON_S, *LPNETDEV_POLYGON_S;


/**
 * @struct tagNETDEVParkAreaInfo
 * @brief 车位区域信息
 * @attention 无
 */
typedef struct tagNETDEVParkAreaInfo
{
    UINT32 ulParkDetstaus;                                    /**< 检测使能标志, 0表示不使能,1表示使能,2表示无效 */
    UINT32 ulParkAreaID;                                      /**< 车位号 */
    NETDEV_POLYGON_S stParkAreaLocation;                      /**< 车位区域坐标,多边形，最多支持6个点 */
}NETDEV_IVA_PARK_AREA_INFO_S, *LPNETDEV_IVA_PARK_AREA_INFO_S;

/**
 * @struct tagNETDEVCarportCfg
 * @brief 车位信息
 * @attention 无
 */
typedef struct tagNETDEVCarportCfg
{
    CHAR szArea[64];
    NETDEV_IVA_PARK_AREA_INFO_S astParkAreaInfo[6];          /**< 车位区域信息 */
}NETDEV_CARPORT_CFG_S, *LPNETDEV_CARPORT_CFG_S;

/**
 * @struct tagMwIVAParkingSpaces
 * @brief 车位区域信息(NEW)
 * @attention 无
 */
typedef struct tagNETDEVParkingSpaces
{
    UINT32 ulParkingDetstaus;                          /**< 检测使能标志, 0表示不使能,1表示使能,2表示无效 */
    UINT32 ulParkingLotID;                             /**< 车位号 */
    CHAR szAreaDesc[NETDEV_ITS_NAME_LEN];             /**< 车位所属区号 */
    CHAR szCustomSpaceDescID[NETDEV_ITS_NAME_LEN];    /**< 自定义车位号 */
    NETDEV_POLYGON_S stParkingSpace;                  /**< 车位区域坐标,多边形，最多支持12个点 */
}NETDEV_ITS_PARKING_SPACES_S;

/**
 * @struct tagMwIVAParkingDetection
 * @brief 车位信息(NEW)
 * @attention 无
 */
typedef struct tagNETDEVParkingDetection
{
    CHAR szArea[NETDEV_ITS_NAME_LEN];                                                         /**< 车位所属区号 */
    UINT32 ulCarParkNums;                                                                      /**< 车位区域个数 */
    NETDEV_ITS_PARKING_SPACES_S astParkingSpacesInfo[NETDEV_ITS_PARKING_SPACE_MAX_NUM];       /**< 车位区域信息 */
}NETDEV_ITS_PARKING_DETECTION_S,*LPNETDEV_ITS_PARKING_DETECTION_S;

/**
  获取媒体相关配置
*/

typedef struct tagMwResolution
{
	unsigned long ulWidth;	/* required element of type ULONG */
	unsigned long ulHeight;	/* required element of type ULONG */
}IMOS_MW_RESOLUTION_S;

typedef struct tagMwVideoStreamConf
{
	unsigned long bIsEnable;	/* SOAP 1.2 RPC return element (when namespace qualified) */	/* required element of type BOOL-T */
	unsigned long ulEncodeFmt;	/* required element of type ULONG */
	struct tagMwResolution stResolution;	/* required element of type IMOS-MW-RESOLUTION-S */
	unsigned long ulBitRate;	/* required element of type ULONG */
	unsigned long ulFrameRate;	/* required element of type ULONG */
	unsigned long ulGopType;	/* required element of type ULONG */
	unsigned long ulIInterval;	/* required element of type ULONG */
	unsigned long ulEncMode;	/* required element of type ULONG */
	unsigned long ulQuality;	/* required element of type ULONG */
	unsigned long ulSmoothValue;	/* required element of type ULONG */
}IMOS_MW_VIDEO_STREAM_CONF_S;

typedef struct tagMwVideoEncoderCfg
{
	unsigned long ulStreamID;	/* required element of type ULONG */
	struct tagMwVideoStreamConf stVideoStreamCfg;	/* required element of type IMOS-MW-VIDEO-STREAM-CONF-S */
}IMOS_MW_VIDEO_ENCODER_CFG_S;


/**
  获取照片接收服务器参数
*/
typedef struct tagMwAddr
{
	char szIPAddr[64];	/* SOAP 1.2 RPC return element (when namespace qualified) */	/* required element of type Array64OfCHAR */
	unsigned short usPort;	/* required element of type USHORT */
	unsigned short usReserve;	/* required element of type USHORT */
}IMOS_MW_ADDR_S;

/* tagMwPhotoServerCfg */
typedef struct tagMwPhotoServerCfg
{
	unsigned long ulProtocol;	/* SOAP 1.2 RPC return element (when namespace qualified) */	/* required element of type ULONG */
	char szCameraID[36];	/* required element of type Array36OfCHAR */
	char szTollgateID[36];	/* required element of type Array36OfCHAR */
	char szDrivewayID[36];	/* required element of type Array36OfCHAR */
	char szDirectionID[36];	/* required element of type Array36OfCHAR */
	char szDeviceID[36];	/* required element of type Array36OfCHAR */
	char szPassword[36];	/* required element of type Array36OfCHAR */
	char szUserName[36];	/* required element of type Array36OfCHAR */
	char szServerPassword[36];	/* required element of type Array36OfCHAR */
	struct tagMwAddr stServerAddr;	/* required element of type IMOS-MW-ADDR-S */
}IMOS_MW_PHOTO_SERVER_CFG_S;


/**
 * @struct tagNETDEVOSDInfoParam
 * @brief OSD 叠加内容
 * @attention 无
 */
typedef struct tagNETDEVOSDInfoParam
{
    UINT32 ulInfoType;                              /**< 叠加内容类型，参考: NETDEV_E_OSD_INFO_TYPE_UNUSED 等 */
    CHAR szValue[60];                              /**< 自定义 OSD 内容 */
}NETDEV_OSD_INFO_PARAM_S, *LPNETDEV_OSD_INFO_PARAM_S;


/**
 * @struct tagNETDEVRectangle
 * @brief 矩形框坐标结构
 * @attention 无
 */
typedef struct tagNETDEVRectangle
{
    NETDEV_POINT_S stTopLeft;       /**< 左上角坐标 */
    NETDEV_POINT_S stBotRight;      /**< 右下角坐标 */
}NETDEV_RECTANGLE_S, *LPNETDEV_RECTANGLE_S;

/**
* @struct tagNETDEVOSDInfoConf
* @brief 叠加OSD 参数
* @attention 无
*/
typedef struct tagNETDEVOSDInfoConf
{
    UINT32 ulIndex;                                                       /**< 叠加区域ID */
    BOOL bEnable;                                                      /**< 使能开关 */
    NETDEV_OSD_INFO_PARAM_S astInfoParam[8];    /**< 叠加内容 */
    NETDEV_RECTANGLE_S stArea;                                          /**< 叠加区域 */
}NETDEV_INFO_OSD_S, *LPNETDEV_INFO_OSD_S;

/**
 * @struct tagNETDEVInfoOSDCfg
 * @brief 叠加OSD 样式
 * @attention 无
 */
typedef struct tagNETDEVInfoOSDCfg
{
    UINT32 ulAreaNum;                        /**< 叠加区域个数 */
    NETDEV_INFO_OSD_S astInfoOSD[1];       /**< 叠加OSD 配置，区域最大个数为: NETDEV_E_INFO_OSD_MAX_NUM */
}NETDEV_INFOOSD_CFG_S, *LPNETDEV_INFOOSD_CFG_S;

/**
 * @struct tagNETDEVOSDStyleCfg
 * @brief 叠加OSD 样式
 * @attention 无
 */
typedef struct tagNETDEVOSDStyleCfg
{
    INT32 ulFontStyle;     /**< 字体形式, 参见: NETDEV_E_OSD_FONT_STYLE_NORMAL 等 */
    INT32 ulFontSize;      /**< 字体大小, 参见: NETDEV_E_OSD_FONT_SIZE_LARGE 等 */
    INT32 ulFontType;      /**< 字体, 暂不支持设置 */
    INT32 ulColor;         /**< 颜色, 参见: NETDEV_E_OSD_COLOR_WHITE 等 */
    INT32 ulAlpha;         /**< 透明度, 参见: NETDEV_E_OSD_ALPHA_NO 等 */
    INT32 ulTimeFormat;    /**< 时间格式, 参见: NETDEV_E_TIME_FORMAT_HHMMSS 等 */
    INT32 ulDateFormat;    /**< 日期格式, 参见: NETDEV_E_DATE_FORMAT_YYYYMMDD 等 */   
}NETDEV_OSDSTYLE_CFG_S, *LPNETDEV_OSDSTYLE_CFG_S;

/**
 * @struct tagNETACCPInfo
 * @brief 访问策略
 * @attention 对外接口
 */
typedef struct tagNETACCPLICInfo
{
   BOOL  bFriendlyPassword;          //友好密码 1开启，0关闭
   BOOL  bMacBind;                   //Mac地址校验 1开启，0关闭
}NETDEV_ACCPLIC_INFO_S,*LPNETDEV_ACCPLIC_INFO_S;

/**
*@struct tagNETTelnetInfo
*@brief Telnet开关是否启用信息
*@attention
*/
typedef struct tagNETTelnetInfo
{
	BOOL bIsEnable;                       /**< 开关(是否启用),0 关闭,1 开启  */
}NETDEV_TELNET_INFO_S,*LPNETDEV_TELNET_INFO_S;

/**
*@struct tagNETICRCutInfo
*@brief ICR开关是否启用信息
*@attention
*/
typedef struct tagNETICRCutInfo
{
	BOOL bIsEnable;                       /**< 开关(是否启用),0 关闭,1 开启  */
}NETDEV_ICRCUT_INFO_S,*LPNETDEV_ICRCUT_INFO_S;


/**
 * @struct tagNETDayNight
 * @brief 昼夜模式参数 
 * @attention
 */
typedef struct tagNETDayNight
{
    UINT32 ulMode;              /**< 昼夜模式, 参见: IMOS_MW_DAYNIGHT_AUTO 等 */
    UINT32 ulSensitivity;       /**< 切换灵敏度 */
}NETDEV_DAYNIGHT_S;


/**
 * @struct tagNETMetering
 * @brief 测光参数 
 * @attention
 */
typedef struct tagNETMetering
{
    UINT32 ulMode;                  /**< 测光模式, 参见: IMOS_MW_METERING_CENTER 等 */
    NETDEV_RECTANGLE_S stArea;      /**< 测光区域 */
	UINT32 ulRefBrightness;
	UINT32 ulHoldTime;

}NETDEV_METERING_S;

/**
 * @struct tagNETWDR
 * @brief 宽动态参数 
 * @attention 
 */
typedef struct tagNETWDR
{
    UINT32 ulMode;              /**< 宽动态模式, 参见: IMOS_MW_WDR_DISABLE 等 */
    UINT32 ulExpRatio;          /**< 曝光比率，暂不支持 */
	UINT32 ulOnSense;
	UINT32 ulOffSense;
    BOOL  bAntiFlicker;
}NETDEV_WDR_S;

/**
 * @struct tagNETSlowShutter
 * @brief 慢快门
 * @attention 无
 */
typedef struct tagNETSlowShutter
{
    BOOL bEnable;                         /**< 慢快门使能项 */
    UINT32 ulMaxSlowShutter;                 /**< 最慢慢快门 */
}NETDEV_SLOW_SHUTTER_S;

/**
 * @struct tagNETCustomExposure
 * @brief 自定义曝光参数
 * @attention 无
 */
typedef struct tagNETCustomExposure
{
    UINT32 ulMaxIris;                        /**< 最大光圈, 单位: f值*100 */
    UINT32 ulMinIris;                        /**< 最小光圈, 单位: f值*100 */
    UINT32 ulSlowShutter;                    /**< 最慢快门 */               
    UINT32 ulFastShutter;                    /**< 最快快门 */       
    UINT32 ulMaxGain;                        /**< 最大增益, 单位: db */
    UINT32 ulMinGain;                        /**< 最小增益, 单位: db */
}NETDEV_CUSTOM_EXPOSURE_S;

/**
 * @struct tagNETExposure
 * @brief 曝光参数 
 * @attention 
 */
typedef struct tagNETExposure
{
    UINT32 ulMode;                                /**< 曝光模式, 参见: IMOS_MW_EXPOSURE_AUTO 等 */
    INT32 lExpCompensate;                         /**< 曝光补偿 */
    UINT32 ulIris;                                /**< 光圈值, 单位: f值*100 */
    UINT32 ulShutter;                             /**< 快门值 */
    UINT32 ulGain;                                /**< 增益, 单位: db */
    NETDEV_CUSTOM_EXPOSURE_S stCustomExposure;    /**< 自定义曝光参数 */
    NETDEV_SLOW_SHUTTER_S stSlowShutter;          /**< 慢快门参数 */
    NETDEV_WDR_S stWDR;                           /**< 宽动态参数 */
    NETDEV_METERING_S stMetering;                 /**< 测光参数 */
    NETDEV_DAYNIGHT_S stDayNight;                 /**< 昼夜参数 */
}NETDEV_EXPOSURE_INFO_S,*LPNETDEV_EXPOSURE_INFO_S;


/**
 * @struct tagNETImageNhance
 * @brief 图像参数 
 * @attention 
 */
typedef struct tagNETImageNhance
{
	UINT32 ulBrightness;                       /**<亮度 */                             
	UINT32 ulContrast;                         /**<饱和度 */ 
	UINT32 ulSaturation;                       /**<对比度 */ 
	UINT32 ulSharpness;                        /**<锐度 */ 
	UINT32 ulImageRotation;
	UINT32 ul2DNoiseReduce;                    /**<2D降噪*/ 
	UINT32 ul3DNoiseReduce;                    /**<3D降噪*/
}NETDEV_IMAGENHANCE_S,*LPNETDEV_IMAGENHANCE_S;


/**
 * @struct tagNETImageNhance
 * @brief 图像清晰度数据
 * @attention 
 */
typedef struct tagNETImgClarData
{    
	UINT32 ulImgChannel;                                  /**<图像通道号 */  
	UINT32 aulImgClarData[NETDEV_LEN_25];                 /**<图像清晰度数据*/ 
}NETDEV_IMGCLARDATA_S,*LPNETDEV_IMGCLARDATA_S;

/**
 * @struct tagNETImageNhance
 * @brief 图像清晰度数据
 * @attention 
 */
typedef struct tagNETImgClarDatas
{    
	UINT32 aulImgColClarData[NETDEV_LEN_25];                 /**<彩色图像清晰度数据*/ 
	UINT32 aulImgMonClarData[NETDEV_LEN_25];                 /**<黑白图像清晰度数据*/ 
	UINT32 aulImgFusClarData[NETDEV_LEN_25];                 /**<融合图像清晰度数据*/ 
}NETDEV_IMGCLARDATAS_S,*LPNETDEV_IMGCLARDATAS_S;


/**
 * @struct tagNETImageNhance
 * @brief 图像通道设置
 * @attention 
 */
typedef struct tagNETImgSwitchannel
{
	UINT32 ulImgChannel;                       /**<图像通道号 */                             
}NETDEV_IMGSWITCHANNEL_S,*LPNETDEV_IMGSWITCHANNEL_S;

/**
 * @struct tagNETDEVInfoRelease
 * @brief 智能业务_名单配置_放行策略
 * @attention 对外接口
 */
typedef struct tagNETDEVInfoRelease
{
  UINT32 uCtrlMode;                /**<生效模式 0服务器控制模式 1离线控制模式 2单机控制模式  */
  UINT32 uReleaseTactics;          /**<识别车辆 0全部放行 1白名单车辆放行 2非黑名单车辆放行  */
  UINT32 uUnidentifiedRelease;      /**<未识别车辆 0不放行 1放行 */
  UINT32 uOutputSwitchID;
}NETDEV_INFORELEASE_CFG_S,*LPNETDEV_INFORELEASE_CFG_S;

/**
 * @struct tagMatchRuleInfo
 * @brief 智能业务_名单配置_出入白名单_匹配模式
 * @attention 对外接口
 */
typedef struct tagMatchRuleInfo
{
  UINT32 uMatchMode;                       /**<匹配模式 0模糊匹配 1精准匹配  */
  UINT32 uChineseIgnored;                  /**<忽略汉字 0不勾选 1勾选 */
  UINT32 uLetterFuzzyMatchLevel;           /**<允许字符不匹配数 0位0 1位1 2位2 */
}NETDEV_INFOMATCHRULE_CFG_S;

/**
 * @struct tagNETDEVInfoWList
 * @brief 智能业务_名单配置_出入白名单
 * @attention 对外接口
 */
typedef struct tagNETDEVInfoWList
{
  UINT32 uEnabled;                          /**<出入白名单 0不勾选 1勾选  */
  NETDEV_INFOMATCHRULE_CFG_S enMatchRule;  
  
}NETDEV_INFOWLIST_CFG_S,*LPNETDEV_INFOWLIST_CFG_S;

/**
 * @struct tagNETDEVInfoBList
 * @brief 智能业务_名单配置_出入黑名单
 * @attention 对外接口
 */
typedef struct tagNETDEVInfoBList
{
  UINT32 uEnabled;                          /**<出入黑名单 0不勾选 1勾选  */
  UINT32 LinkSwitchID;                      /**<联动开关量 0否 1是 */
  NETDEV_INFOMATCHRULE_CFG_S enMatchRule;  
  
}NETDEV_INFOBLIST_CFG_S,*LPNETDEV_INFOBLIST_CFG_S;
  


/**
 * @struct tagNETDEV_DB_Operate
 * @brief 黑白名单数据库操作
 * @attention 无
 */
typedef enum tagNETDEV_DB_Operate
{
    NETDEV_DB_OPERATE_SELECT = 0,     /**< 查询 */
    NETDEV_DB_OPERATE_ADD,            /**< 增加 */
    NETDEV_DB_OPERATE_UPDATE,         /**< 修改 */
    NETDEV_DB_OPERATE_DELETE          /**< 删除 */
}NETDEV_DB_OPERATE_E;


/* 黑白名单操作-list最大个数  */
#define IMOS_MW_VEHICLE_LIST_MAX                         16

/* 黑白名单项-车牌最大长度  */
#define IMOS_MW_VEHICLE_PLATE_NO_LEN                     32

/* 黑白名单项-时间最大长度  */
#define IMOS_MW_VEHICLE_TIME_LEN                         16


/**
 * @struct tagNETDEVVehicleRecord
 * @brief 名单项配置
 * @attention
 */
typedef struct tagNETDEVPARKVehicleRecord
{
    INT32 dwId;                                            /**< 名单中的索引 */
    INT32 dwEnableType;                                    /**< 下发车牌号码编码格式，0：UTF-8编码格式，1：GBK编码格式*/
    CHAR szPlateNo[IMOS_MW_VEHICLE_PLATE_NO_LEN];          /**< 车牌号码，可做为检索条件 UTF-8编码格式*/
    INT64 dwEffectiveTime;                                 /**< 生效时间 从1970/01/01 00:00:00到现在的秒数 */
    INT64 dwExpirationTime;                                /**< 过期时间 从1970/01/01 00:00:00到现在的秒数 */
}NETDEV_PARK_VEHICLE_RECORD_S,*LPNETDEV_PARK_VEHICLE_RECORD_S;

/**
 * @struct tagNETDEVVehicleRecordList
 * @brief 名单项List
 * @attention
 */
typedef struct tagNETDEVPARKVehicleRecordList
{
    INT32 dwNum;                                         /**< 名单项数目 */
    CHAR* astVehicleRecord;                              /**< 名单项配置 */
}NETDEV_PARK_VEHICLE_RECORD_LIST_S,*LPNETDEV_PARK_VEHICLE_RECORD_LIST_S;

/**
 * @struct tagNETDEVVehicleRecordExtern
 * @brief 名单项extern参数
 * @attention
 */
typedef struct tagNETDEVPARKVehicleRecordExtern
{
    INT32 dwListType;                                          /**< 名单类型 0:白名单 1:黑名单 */
    INT32 dwDBOperateType;                                     /**< 名单操作类型  NETDEV_DB_OPERATE_E */
    NETDEV_PARK_VEHICLE_RECORD_LIST_S stVehicleRecordList;          /**< 名单项配置 */
}NETDEV_PARK_VEHICLE_RECORD_EXTERN_S,*LPNETDEV_PARK_VEHICLE_RECORD_EXTERN_S;


/**
 * @struct tagNETDEVLed
 * @brief 出入口设备Led屏显示配置
 * @attention
 */
typedef struct tagNETDEVLedLineCfgs
{
   INT32         dwEnCode;                   /**< 下发数据编码格式 0：UTF-8编码格式，1：GBK编码格式*/
   CHAR          szContext[256];
}NETDEV_LED_LINE_CFG_S,LPNETDEV_LED_LINE_CFG_S;             /**< 下发内容*/


/**
 * @struct tagNETDEVLed
 * @brief 出入口设备Led屏显示配置
 * @attention
 */
typedef struct tagNETDEVLedCfgs
{
	INT32                        dwEnabled;
	INT32                        dwSceneType;
    INT32                        dwScreenLineNum;          /*屏配置行数*/
    NETDEV_LED_LINE_CFG_S        stuContextList[4];        /*行配置内容*/   
}NETDEV_LED_CFG_S,*LPNETDEV_LED_CFG_S;

/**
 * @struct tagNETDEVLed
 * @brief 出入口设备Led屏显示配置
 * @attention
 */
 typedef struct tagNETDEVLedLedListCfgs
{
	INT32                        dwPlateShowTime;  
	INT32                        dwSceneNum;
	NETDEV_LED_CFG_S             stuLedLineInfo;
}NETDEV_LED_LIST_CFG_S,*LPNETDEV_LED_LIST_CFG_S;

/**
 * @struct tagMwIVALEDInfo
 * @brief 车位灯信息
 * @attention 无
 */
typedef struct tagNETDEVIVALEDInfo
{
    UINT32 ulLEDStatus;               /**< 指示灯状态，0-熄灭，1-长亮，2-闪烁 */
    UINT32 ulLEDColour;               /**< 指示灯颜色, 1-红色，2-黄色，3-绿色*/
}NETDEV_IVA_LED_INFO_S;

/**
 * @struct tagSDKCarPortControlLed
 * @brief SDK车位内置指示灯控制
 * @attention
 */
typedef struct tagNETDEVCarPortControlLed
{
	UINT32 ulControlMode;                     /**< 0 - 智能控制，1 - SDK控制 */
	NETDEV_IVA_LED_INFO_S stCurrLEDCfg;      /**< 当前实际车位灯配置 */ 
}NETDEV_CARPORT_CONTROLLED_S, *LPNETDEV_CARPORT_CONTROLLED_S;

/**
 * @struct tagNETDEVInstallGuideCfg
 * @brief 出入口安装向导配置
 *@attention 1、车牌缺省汉字，各省份对应值参考如下(车牌库中无"黔"，设置"黔"转换为"云")：
 * -             藏 湘 浙 川 辽 晋 陕 豫 宁 鲁（1  - 10）
 * -             苏 沪 粤 闽 甘 新 黑 冀 青 蒙（11 - 20）
 * -             津 鄂 吉 赣 京 皖 桂 黔 贵 云（21 - 30）
 * -             琼 渝 军 空 海 沈 南 广 成 兰（31 - 40）
 * -             济 北 使（41 - 43）
 * -             全国（44）
  *@attention 2、相机到抓拍点距离：
 * -             采用分段下发   支持变倍(倍率)  不支持变倍(像素点)
 * -             0:3m以下     |  1.47         |  237
 * -             1:3m~3.5m    |  1.62         |  211
 * -             2:4m~4.5m    |  2.2          |  192
 * -             3:4m~4.5m    |  2.5          |  175
 * -             4:4.5m~5m    |  2.8          |  162
 * -             5:5米以上    |  2.8          |  162
 */
typedef struct tagNETDEVInstallGuideCfg
{
	UINT32 ulDetectMode;                      /* 检测模式,0:线圈检测, 1:视频检测 */
	UINT32 ulCapDistance;                     /* 相机到抓拍点距离 */
	UINT32 ulDefaultProvince;                  /* 默认省份 */
}NETDEV_INSTALL_GUIDE_CFG_S, *LPNETDEV_INSTALL_GUIDE_CFG_S;

/**
 * @struct tagNETDEVITSIVAIllegalDetectReport
 * @brief 智能违法检测状态上报结构体
 * @attention 无
 */
typedef struct tagNETDEVITSIVAIllegalDetectReport
{
    UINT32 ulObjId;                                /**< 目标(车辆) ID */
    UINT32 ulReportType;                           /**< 上报类型，定义参见：NETDEV_ITS_CMD_ALARM_ILLEGAL_DETECT_START 等 */
    CHAR szCarPlate[NETDEV_ITS_CAR_PLATE_MAX_LEN];   /**< 车牌号码:不能自动识别的用"-"表示 */
    UINT32 stDevtTime;                            /**< 当前设备侧系统时间 时间 将从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数 */
    CHAR szSceneName[NETDEV_ITS_NAME_LEN + 4];       /**< 场景名 */
    CHAR szRuleName[NETDEV_ITS_NAME_LEN + 4];        /**< 规则名 */
}NETDEV_ITS_IVA_ILLEGAL_DETECT_REPORT_S;


/**
* @struct tagNETDEVITSParkAlarm
* @brief 停车场告警信息
* @attention
*/
typedef struct tagNETDEVITSParkAlarm
{
	CHAR szCamID[NETDEV_ITS_DEV_ID_MAX_LEN];                   /**< 相机编号 */
	CHAR szAlarmTime[NETDEV_ITS_UNIVIEW_MAX_TIME_LEN];         /**< 告警时刻:YYYYMMDDHHMMSS, 时间按24小时制 */
	CHAR cReserved[2];                                      /**< 保留字段 字节对齐用 */
	UINT32 lAlarmType;                                        /**< 告警类型，参见NETDEV_ITS_PARK_ALARM_FULL */
}NETDEV_ITS_PARK_ALARM_S;

/**
 * @struct tagNETDEVITSPersonCountInfo
 * @brief 人数统计信息
 * @attention 对外接口
 */ 
typedef struct tagNETDEVITSPersonCountInfo
{
    CHAR szCamID[NETDEV_ITS_DEV_ID_MAX_LEN];                           /**< 相机编号 */
    CHAR szTollgateID[NETDEV_ITS_DEV_ID_MAX_LEN];                      /**< 卡口编号 */
    CHAR szPlaceName[NETDEV_ITS_PLACE_NAME_MAX_LEN];                   /**< 地点名称 */
    CHAR szBeginPassTime[NETDEV_ITS_UNIVIEW_MAX_TIME_LEN];             /**< 检测开始时刻:YYYYMMDDHHMMSS, 时间按24小时制 */
    CHAR szEndPassTime[NETDEV_ITS_UNIVIEW_MAX_TIME_LEN];               /**< 检测结束时刻:YYYYMMDDHHMMSS, 时间按24小时制 */
    UINT32 ulCountIn;                                                /**< 配置时间内入人数 */
    UINT32 ulCountOut;                                               /**< 配置时间内出人数 */
    UINT32 ulTotalIn;                                                /**< 启智能开始进总人数 */
    UINT32 ulTotalOut;                                               /**< 启智能开始出总人数 */
}NETDEV_ITS_PERSON_COUNT_INFO_S;

/**
* @struct tagNETDEVITSParkStatus
* @brief 车位状态信息
* @attention
*/
typedef struct tagNETDEVITSParkStatus
{
	CHAR szCamID[NETDEV_ITS_DEV_ID_MAX_LEN];                   /**< 相机编号 */
	UINT32 lParkID;                                           /**< 车位编号 */
	CHAR szSampleTime[NETDEV_ITS_UNIVIEW_MAX_TIME_LEN];        /**< 采样时刻:YYYYMMDDHHMMSS, 时间按24小时制 */
	CHAR cReserved[2];                                      /**< 保留字段 字节对齐用 */
	UINT32 lParkingLotStatus;                                 /**< 车位状态，0无车，1有车，2识别异常 */
	CHAR szCarPlate[NETDEV_ITS_CAR_PLATE_MAX_LEN];             /**< 车牌号码:不能自动识别的用"-"表示，车位无车时忽略该字段 */
	UINT32 lLEDStatus;                                        /**< 车位指示灯状态 0熄灭，1长亮，2快速闪烁，3慢速闪烁 */
	UINT32 lLEDColor;                                         /**< 车位指示灯颜色 1红色，2绿色，3黄色 */
	UINT32 lCrossAlarm;                                       /**< 跨车位告警 0未跨车位，1跨车位 */
}NETDEV_ITS_PARK_STATUS_S;

/**
* @struct tagNETDEVITSParkStatusAll
* @brief 所有车位状态信息
* @attention
*/
typedef struct tagNETDEVITSParkStatusAll
{
	UINT32 ulParkNum;                                                            /**< 车位数量 */
	NETDEV_ITS_PARK_STATUS_S astParkSatus[NETDEV_ITS_PARKING_SPACE_MAX_NUM];          /**< 车位状态信息 */
}NETDEV_ITS_PARK_STATUS_ALL_S;

/**
* @struct tagNETDEVITSParkStatusEx
* @brief 车位状态信息(NEW-扩展)
* @attention
*/
typedef struct tagNETDEVITSParkStatusEx
{
	CHAR szAreaDesc[NETDEV_ITS_NAME_LEN];                      /**< 车位所属区号 */
	CHAR szCustomSpaceDescID[NETDEV_ITS_NAME_LEN];             /**< 自定义车位号 */             
	NETDEV_ITS_PARK_STATUS_S stParkStatus;                     /**< 车位状态信息 */
	CHAR cReserved[32];                                    /**< 保留字段 用于接口扩展 */
}NETDEV_ITS_PARK_STATUS_EX_S;


/**
 * @struct tagNETDEVITSTrParam
 * @brief 交通参数结果
 * @attention
 */
typedef struct tagNETDEVITSTrParam
{
    UINT32 ulLaneID;                  /**< 车道编号 */
    UINT32 ulTrafficFlow;             /**< 汽车流量 */
    UINT32 ulAveSpeed;                /**< 平均速度，单位:千米/小时 */
    FLOAT fAveHeadTime;              /**< 平均车头时距，单位:秒 */
    FLOAT fAveTimOcupyRat;           /**< 平均车道时间占有率,，单位:X100% */
    FLOAT fAveHeadSpac;              /**< 平均车头间距，单位:米 */
    FLOAT fVehQueueLen;              /**< 车道队列长度，单位:米 */
    FLOAT fAveSpaOcupyRat;           /**< 平均车道空间占有率,，单位:X100% */
    UINT32 ulWayStat;                 /**< 车道通行状态，分为多个等级，例:拥堵，通畅等 */
    UINT32 aulCarTypeCount[NETDEV_ITS_CAR_TYPE_NUM];      /**< 各种车辆类型的车流量 0-11分别代表轿车、SUV、面包车、小货车、
                                                           中巴车、大客车、大货车、大型车、中型车、小型车、摩托车、超长车 */ 
    UINT32 aulLPRColorCount[NETDEV_ITS_LPR_COLOR_NUM];    /**< 各种车牌类型的车流量 0-4 白牌、黄牌、蓝牌、黑牌、其他 */
    UINT32 aulSpeedCarCount[NETDEV_ITS_CAR_SPEED_NUM];    /**< 各车速统计 0 代表超速，1代表低速  未实现 */
    UINT32 ulVehicles;                                 /**< 通过车辆总数 辆 未实现 */
    UINT32 ulVehicleLength;                            /**< 车外轮廓 单位:厘米 未实现 */
    UINT32 ulDensity;                                  /**< 车辆密度 每公里的车辆数，单位辆/km 未实现 */
    UINT32 ulVolume;                                   /**< 交通量 辆/单位时间 未实现 */
    UINT32 ulFlowRate;                                 /**< 流率 辆/小时 未实现 */
    UINT32 ulBackOfQueue;                              /**< 旅行时间 秒 未实现 */
    UINT32 ulDelay;                                    /**< 延误 秒 未实现 */
}NETDEV_ITS_TRAFFIC_PARA_S;

/**
 * @struct tagNETDEVITSTrParamRes
 * @brief 各个车道交通参数结果
 * @attention
 */
typedef struct tagNETDEVITSTrParamRes
{
    CHAR szStartTime[NETDEV_ITS_UNIVIEW_MAX_TIME_LEN];                     /* 开始时间 YYYYMMDDhhmmss*/
    UINT32 ulDriveWayNum;                                                /* 实际配置的车道数 */    
    NETDEV_ITS_TRAFFIC_PARA_S astTrParaRslt[NETDEV_ITS_DRIVEWAY_NUM_MAX];     /* 各车道交通流量参数结果 */
}NETDEV_ITS_TRAFFIC_PARA_RSLT_S;

/**
 * @enum tagNETDEVITSEpTgVehicleStat
 * @brief 车辆进出状态
 * @attention
 */
typedef enum tagNETDEVITSEpTgVehicleStat
{
    NETDEV_ITS_VEHICLE_STAT_INVALID          = -1,          /* 进出状态未变化 */
    NETDEV_ITS_VEHICLE_STAT_NONE             = 0,           /* 车辆初始状态 */
    NETDEV_ITS_VEHICLE_STAT_IN_LINE          = 1,           /* 车辆进入拌线 */
}NETDEV_ITS_TRAFFIC_VEHICLE_STAT_E;

/**
 * @struct tagNETDEVITSVehicleState
 * @brief 各个车道车辆进出状态
 * @attention
 */
typedef struct tagNETDEVITSVehicleState
{
    UINT32 ulDriveWayNum;                                                         /* 实际配置的车道数 */
    CHAR szStatPassTime[NETDEV_ITS_UNIVIEW_MAX_TIME_LEN];                           /* 通过时间 YYYYMMDDHHMMSSMMM */
    NETDEV_ITS_TRAFFIC_VEHICLE_STAT_E aenVehicleState[NETDEV_ITS_DRIVEWAY_NUM_MAX];    /* 各车道车辆进出状态 */
    UINT32 aulDriveWayCode[NETDEV_ITS_DRIVEWAY_NUM_MAX];                             /* 各个车道编码 */
}NETDEV_ITS_VEHICLE_STATE_S;

/*********************************************************************************回调函数定义*****************************************************************************/

/**车位状态回调 
* @param [IN]  pstParkStatusData   车位状态上报数据
* @param [IN]  lpUserParam         用户数据
*/
typedef void (STDCALL *NETDEV_PARKING_STATUS_PF)(IN LPVOID lpUserID,
												 IN const NETDEV_TMS_PARKINGSTATUS_S *pstParkStatusData,
											     IN LPVOID lpUserParam
											    );

/**图片上传回调 
* @param [IN]  pstPicData          过车信息上报数据
* @param [IN]  lpUserParam         用户数据
*/
typedef void (STDCALL *NETDEV_PIC_UPLOAD_PF)(IN const NETDEV_PIC_DATA_S *pstPicData,
											 IN LPVOID lpUserParam
											 );

/**图片上传回调 
* @param [IN]  pstPicData          过车信息上报数据
* @param [IN]  lpUserParam         用户数据
*/
typedef void (STDCALL *NETDEV_PARK_PIC_UPLOAD_PF)(IN const NETDEV_PARK_PIC_DATA_S *pstPicData,
											 IN LPVOID lpUserParam
											 );

/**
* 启动照片流\n
* @param [IN]  lpUserID          用户登录句柄
* @param [IN]  hPlayWnd          播放窗口句柄,如果为0不播放
* @param [IN]  bReTran           是否断网重传:TRUE表示断网重传,FALSE表示断网不重传
* @param [IN]  pcReTranIP        重传码流接收端IP地址;不重传填空,""
* @param [IN]  pfnPicDataCBFun   照片上传回调
* @param [IN]  lpUserData        用户数据
* @return  TRUE表示成功，其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE LPVOID STDCALL NETDEV_StartPicStream(IN LPVOID lpUserID, IN LPVOID hPlayWnd, IN BOOL bReTran, 
															 IN CHAR *pcReTranIP, IN NETDEV_PIC_UPLOAD_PF pfnPicDataCBFun,
															 IN LPVOID lpUserData);


/**
* 停止照片流\n
* @param [IN]  lpPlayHandle   照片流句柄
* @return TRUE表示成功,其他表示失败
* @note 关闭NETDEV_StartPicStream对应开启的照片流
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_StopPicStream(IN LPVOID lpPlayHandle);


/* 注册状态回调函数 \n
* @param [IN] lpUserID          用户登录句柄 User login ID
* @param [IN] ulReportType      消息或者异常消息类型，参见 NETDEV_E_PARK_STATUS_REPORT 等
* @param [IN] pParam            存放消息或异常消息数据的缓冲区指针
* @param [IN]  lpUserData        用户数据
* @return NULL
* @note 
*/
typedef void(STDCALL *NETDEV_ParkStatusReportCallBack_PF)(IN LPVOID lpUserID,
	IN UINT32 ulReportType, 
	IN VOID *pParam,
	IN LPVOID lpUserData);


/**
 * SDK状态上报回调函数 （该接口已废弃）\n
 * @param [IN] lpUserID          用户登录句柄 User login ID
 * @param [IN] ulReportType      消息或者异常消息类型，参见 NETDEV_E_PARK_STATUS_REPORT 等
 * @param [IN] pParam            存放消息或异常消息数据的缓冲区指针
 * @return ULONG
 * @note 
 * -     1、用户需要确保该回调函数尽快返回
 * -     2、不能在该回调函数中直接调用播放器的任何接口函数。
 * -     3、参数pParam所指的缓冲区中存放的数据的类型视消息或者异常消息类型而定，用户需要根据消息或者异常消息类型对其做类型转换
 */
typedef void(STDCALL *NETDEV_StatusReportCallBack_PF)(IN LPVOID lpUserID,
                                                     IN UINT32 ulReportType, 
                                                      IN VOID *pParam);


/* 注册状态回调函数（该接口已废弃）*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetStatusCallBack(IN NETDEV_StatusReportCallBack_PF cbStatusReportCallBack);

/* 注册状态回调函数 \n
* @param [IN] lpUserID          用户登录句柄 User login ID
* @param [IN] ulReportType      消息或者异常消息类型，参见 NETDEV_E_PARK_STATUS_REPORT 等
* @param [IN] pParam            存放消息或异常消息数据的缓冲区指针
* @param [IN]  lpUserData        用户数据
* @return NULL
* @note 
*/
typedef void(STDCALL *NETDEV_ParkStatusReportCallBack_PF)(IN LPVOID lpUserID,
														 IN UINT32 ulReportType, 
														 IN VOID *pParam,
														 IN LPVOID lpUserData);

/* 设置状态上报回调函数 \n
* @param [IN] lpUserID          用户登录句柄 User login ID
* @param [IN] cbItsStatusReportCallBack     状态回调函数
* @param [IN]  lpUserData       用户数据
* @return NULL
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetParkStatusCallBack(IN LPVOID lpUserID,IN NETDEV_ParkStatusReportCallBack_PF cbParkStatusReportCallBack, IN LPVOID lpUserData);


/**
 * 上传出入白名单信息 \n
 * @param [IN]  lpFindHandle   用户登录句柄
 * @param [IN]  pcFile         文件保存路径()
 * @return INT32 NETVMS_E_SUCCEED表示成功，其他见相关错误码
 * @note 无
 */
NETDEV_API NEWINTERFACE INT32 STDCALL NETDEV_ImportBlackWhiteListFile(IN LPVOID lpFindHandle, IN CHAR* pcFile);

/**
 * 下载出入白名单信息 \n
 * @param [IN]  lpFindHandle   用户登录句柄
 * @param [IN]  pcFile     文件保存路径
 * @return INT32 NETVMS_E_SUCCEED表示成功，其他见相关错误码
 * @note 无
 */
NETDEV_API NEWINTERFACE INT32 STDCALL NETDEV_ExportBlackWhiteListFile(IN LPVOID lpFindHandle, IN CHAR* pcFile);

/**
 * 增加出入黑白名单信息 \n
 * @param [IN]  lpFindHandle     用户登录句柄
 * @param [IN]  pcFile       文件保存路径
 * @return NETVMS_E_SUCCEED  表示成功,其他见相关错误码
 * @note 无
 */
NETDEV_API NEWINTERFACE INT32 STDCALL NETDEV_AddBlackWhiteList(IN LPVOID lpFindHandle, IN CHAR* pcFile);

/**
 * 删除出入黑白名单信息 \n
 * @param [IN]  lpFindHandle     用户登录句柄
 * @param [IN]  pcFile       文件保存路径
 * @return NETVMS_E_SUCCEED  表示成功,其他见相关错误码
 * @note 无
 */
NETDEV_API NEWINTERFACE INT32 STDCALL NETDEV_DeleteBlackWhiteList(IN LPVOID lpFindHandle, IN CHAR* pcFile);

/**
 * 增加出入黑白名单信息 \n
 * @param [IN]  lpFindHandle     用户登录句柄
 * @param [IN]  pcFile       文件保存路径
 * @return NETVMS_E_SUCCEED  表示成功,其他见相关错误码
 * @note 无
 */
NETDEV_API NEWINTERFACE INT32 STDCALL NETDEV_AddBlackWhiteList(IN LPVOID lpFindHandle, IN CHAR* pcFile);

/**
 * 删除出入黑白名单信息 \n
 * @param [IN]  lpFindHandle     用户登录句柄
 * @param [IN]  pcFile       文件保存路径
 * @return NETVMS_E_SUCCEED  表示成功,其他见相关错误码
 * @note 无
 */
NETDEV_API NEWINTERFACE INT32 STDCALL NETDEV_DeleteBlackWhiteList(IN LPVOID lpFindHandle, IN CHAR* pcFile);

/*****************************************************************************
  函 数 名: 黑白名单车辆信息添加操作
  函数描述: NETDEV_AddVehicleRecord
  输入参数: IN LPVOID lpFindHandle 用户登录设备ID
            IN LPNETDEV_VEHICLE_RECORD_EXTERN_S pstVehicleRecordExtern

  输出参数: 
    返回值: INT32 NETVMS_E_SUCCEED表示成功，其他见相关错误码
    注意点: 
*****************************************************************************/
NETDEV_API NEWINTERFACE INT32 STDCALL NETDEV_AddVehicleRecord(IN LPVOID lpFindHandle, IN LPNETDEV_PARK_VEHICLE_RECORD_EXTERN_S pstVehicleRecordExtern);

/*****************************************************************************
  函 数 名: 白名单车辆信息修改操作
  函数描述: NETDEV_ModifyAllowVehicleRecord
  输入参数: IN LPVOID lpFindHandle 用户登录设备ID
            IN LPNETDEV_VEHICLE_RECORD_S pstVehicleRecords

  输出参数: 
    返回值: INT32 NETVMS_E_SUCCEED表示成功，其他见相关错误码
    注意点: 
*****************************************************************************/
NETDEV_API NEWINTERFACE INT32 STDCALL NETDEV_ModifyAllowVehicleRecord(IN LPVOID lpFindHandle, IN LPNETDEV_PARK_VEHICLE_RECORD_S pstVehicleRecords);

/*****************************************************************************
  函 数 名: 黑名单车辆信息修改操作
  函数描述: NETDEV_ModifyAllowVehicleRecord
  输入参数: IN LPVOID lpFindHandle 用户登录设备ID
            IN LPNETDEV_VEHICLE_RECORD_S pstVehicleRecords

  输出参数: 
    返回值: INT32 NETVMS_E_SUCCEED表示成功，其他见相关错误码
    注意点: 
*****************************************************************************/
NETDEV_API NEWINTERFACE INT32 STDCALL NETDEV_ModifyBlockVehicleRecord(IN LPVOID lpFindHandle, IN LPNETDEV_PARK_VEHICLE_RECORD_S pstVehicleRecords);

/*****************************************************************************
  函 数 名: 白名单车辆信息删除操作
  函数描述: NETDEV_ModifyAllowVehicleRecord
  输入参数: IN LPVOID lpFindHandle 用户登录设备ID
            IN LPNETDEV_VEHICLE_RECORD_S pstVehicleRecords

  输出参数: 
    返回值: INT32 NETVMS_E_SUCCEED表示成功，其他见相关错误码
    注意点: 
*****************************************************************************/
NETDEV_API NEWINTERFACE INT32 STDCALL NETDEV_DeleteAllowVehicleRecord(IN LPVOID lpFindHandle, IN ULONG ulRecordID);

/*****************************************************************************
  函 数 名: 黑名单车辆信息删除操作
  函数描述: NETDEV_ModifyAllowVehicleRecord
  输入参数: IN LPVOID lpFindHandle 用户登录设备ID
            IN LPNETDEV_VEHICLE_RECORD_S pstVehicleRecords

  输出参数: 
    返回值: INT32 NETVMS_E_SUCCEED表示成功，其他见相关错误码
    注意点: 
*****************************************************************************/
NETDEV_API NEWINTERFACE INT32 STDCALL NETDEV_DeleteBlockVehicleRecord(IN LPVOID lpFindHandle, IN ULONG ulRecordID);


/*****************************************************************************
  函 数 名: 设置出入口设备Led显示内容
  函数描述: setDeviceLedCfg
  输入参数: IN LPVOID lpFindHandle 用户登录设备ID
            IN LPNETDEV_LED_LIST_CFG_S pstLedListCfgs
  输入输出参数: 
  输出参数: 
  返回值: INT32 NETVMS_E_SUCCEED表示成功，其他见相关错误码
  注意点: 
*****************************************************************************/
NETDEV_API NEWINTERFACE INT32 STDCALL NETDEV_setDeviceLedCfg(IN LPVOID lpFindHandle, IN LPNETDEV_LED_LIST_CFG_S pstLedListCfgs);

/**
* 卡口电警输出开关量\n
* @param [IN]  lpFindHandle   用户登录句柄
* @param [IN]  dwChannel   dwChannel为通道号，取值0-3，卡口电警对应IO口F1-F4，出入口对应开关量输出
* @return TRUE表示成功,其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_setSwitchStatusControlCfg(IN LPVOID lpFindHandle,IN NETDEV_SWITCH_STATUS_TYPE_E stuSwitchStatusType);

/**
 * 实现数据从SDK透传串口 \n
 * @param [IN] lpFindHandle      用户信息标识
 * @param [IN] pcDataBuffer        输入数据缓存(最大256 BYTE)
 * @param [IN] ulDataNum           输入数据长度(最大256 BYTE)
 * @param [IN] ulComIndex         串口号索引 (1----4)  (根据界面透明通道配置 port依次为 1025,1026,1027,1028)
 * @return ULONG，返回如下结果：
 * -             #ERR_COMMON_SUCCEED                 成功
 * -             #ERR_SDK_COMMON_FAIL                操作失败
 * -             #ERR_SDK_USERNONEXIST               用户不存在
 * @note 无
 * -
 */
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SendDataToCom(IN LPVOID lpFindHandle, IN CHAR *pcDataBuffer, IN UINT32 ulDataNum, IN UINT32 ulComIndex);

/**
* 手动前端抓拍(异步)\n
* @param [IN]  lpFindHandle   用户登录句柄
* @return TRUE表示成功,其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_Trigger(IN LPVOID lpFindHandle);

/**
* 输出开关量\n
* @param [IN]  lpFindHandle   用户登录句柄
* @return TRUE表示成功,其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetOutputSwitchStatusCfg(IN LPVOID lpFindHandle);


/**
* 手动前端抓拍(同步)\n
* @param [IN]  lpFindHandle   用户登录句柄
* @param [IN]  ppstPicData 指向获取的图片信息的指针
* @return TRUE表示成功,其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_TriggerSync(IN LPVOID lpFindHandle, OUT NETDEV_PIC_DATA_S **ppstPicData);

/**
 * 车牌编码格式UTF-8 \n
 * @param [OUT] bEnable      0:GBK , 1:UTF-8 (默认UTF-8)
 * @return BOOL，返回如下结果：
 * -             #TRUE                成功
 * -             #FALSE               失败
 */
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_EnableCarplate(IN UINT32 bEnable);


/**
* 手动抓图（附带车道参数）\n
* @param [IN]  lpUserID   用户登录句柄
* @return TRUE表示成功,其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_LapiTriggerByDrivewayID(IN LPVOID lpFindHandle,IN UINT32 ulDrivewayID);

/**
* SDK转发代理设置）\n
* @param [IN]  iEnable   代理设置
* @return 1表示启用,0标识不启用
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetSDKProfxy(IN INT32 iEnable);

/**
* 获取SDK版本信息\n
* @param [IN]  pszVersion  
* @return TRUE表示成功,其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_GetPARKVersion(CHAR* pszVersion);


/**
* 车位检测器内置灯控制\n
* @param [IN] LPVOID lpFindHandle
         [IN] LPNETDEV_CARPORT_CONTROLLED_S pstuCarportControlled  
* @return TRUE表示成功,其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE INT32 STDCALL NETDEV_SetBuiltinIndicatorCtrl(IN LPVOID lpFindHandle,IN LPNETDEV_CARPORT_CONTROLLED_S pstuCarportControlled);

/**
* 车位检测器内置灯状态获取\n
* @param [IN] LPVOID lpFindHandle
         [OUT] LPNETDEV_CARPORT_CONTROLLED_S pstuCarportControlled  
* @return 0表示成功,其他表示失败
* @note 
*/
NETDEV_API NEWINTERFACE INT32 STDCALL NETDEV_GetBuiltinIndicatorCtrl(IN LPVOID lpFindHandle,OUT LPNETDEV_CARPORT_CONTROLLED_S pstuCarportControlled);

/* 注册回调函数,处理TMS信息 */
NETDEV_API NEWINTERFACE BOOL STDCALL NETDEV_SetParkingStatusCB(IN LPVOID lpUserID,IN NETDEV_PARKING_STATUS_PF pfnParkStatusCBFun, IN LPVOID lpUserData);


/************************************************************************End*****************************************************************************/




#endif




#ifdef  __cplusplus
}
#endif  /* end of __cplusplus */

#endif  /* end of _NETDEV_NET_SDK_H_ */

